mirror of
https://github.com/vishapoberon/compiler.git
synced 2026-04-05 23:22:25 +00:00
Append 'LL' to large integer constants to avoid OpenBSD gcc warnings.
This commit is contained in:
parent
62c6d5c2a4
commit
c57a91210b
2 changed files with 5 additions and 15 deletions
|
|
@ -896,21 +896,10 @@ MODULE OPB; (* RC 6.3.89 / 21.2.94 *) (* object model 17.1.93 *)
|
|||
ELSIF x^.BaseTyp = OPT.chartyp THEN (* Assign to (static) ARRAY OF CHAR *)
|
||||
IF g = OPT.String THEN (*check length of string*)
|
||||
IF ynode^.conval^.intval2 > x^.n THEN err(114) END
|
||||
(* Todo: implement Oberon-07/2013 array assignment
|
||||
ELSIF (y.comp IN {OPT.DynArr, OPT.Array}) & (y.BaseTyp = OPT.chartyp) THEN
|
||||
(* Assignment from ARRAY OF CHAR is good.*)
|
||||
*)
|
||||
ELSE err(113)
|
||||
END
|
||||
ELSE err(113)
|
||||
END
|
||||
(* Todo: implement Oberon-07/2013 array assignment
|
||||
ELSIF (x.comp = OPT.DynArr) & (x^.BaseTyp = OPT.chartyp) THEN (* Assign to dynamic ARRAY OF CHAR*)
|
||||
IF (y.comp IN {OPT.DynArr, OPT.Array}) & (y.BaseTyp = OPT.chartyp) THEN
|
||||
(* Assignment from ARRAY OF CHAR is good.*)
|
||||
ELSE err(113)
|
||||
END
|
||||
*)
|
||||
ELSIF x^.comp = OPT.Record THEN
|
||||
IF x = y THEN (* ok *)
|
||||
ELSIF y^.comp = OPT.Record THEN
|
||||
|
|
|
|||
|
|
@ -685,7 +685,7 @@ MODULE OPM; (* RC 6.3.89 / 28.6.89, J.Templ 10.7.89 / 22.7.96 *)
|
|||
END WriteHex;
|
||||
|
||||
PROCEDURE WriteInt* (i: SYSTEM.INT64);
|
||||
VAR s: ARRAY 24 OF CHAR; i1, k: SYSTEM.INT64;
|
||||
VAR s: ARRAY 26 OF CHAR; i1, k: SYSTEM.INT64;
|
||||
BEGIN
|
||||
IF (i = SignedMinimum(2)) OR (i = SignedMinimum(4)) OR (i = SignedMinimum(8)) THEN
|
||||
(* abs(minint) is one more than maxint, causing problems representing the value as a minus sign
|
||||
|
|
@ -694,11 +694,12 @@ MODULE OPM; (* RC 6.3.89 / 28.6.89, J.Templ 10.7.89 / 22.7.96 *)
|
|||
only way to represent MinLInt. *)
|
||||
Write("("); WriteInt(i+1); WriteString("-1)")
|
||||
ELSE i1 := ABS(i);
|
||||
s[0] := CHR(i1 MOD 10 + ORD("0")); i1 := i1 DIV 10; k := 1;
|
||||
IF i1 <= MAX(SYSTEM.INT32) THEN k := 0 ELSE s := "LL"; k := 2 END;
|
||||
s[k] := CHR(i1 MOD 10 + ORD("0")); i1 := i1 DIV 10; INC(k);
|
||||
WHILE i1 > 0 DO s[k] := CHR(i1 MOD 10 + ORD("0")); i1 := i1 DIV 10; INC(k) END ;
|
||||
IF i < 0 THEN s[k] := "-"; INC(k) END ;
|
||||
WHILE k > 0 DO DEC(k); Write(s[k]) END
|
||||
END ;
|
||||
WHILE k > 0 DO DEC(k); Write(s[k]) END;
|
||||
END;
|
||||
END WriteInt;
|
||||
|
||||
PROCEDURE WriteReal* (r: LONGREAL; suffx: CHAR);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue