Append 'LL' to large integer constants to avoid OpenBSD gcc warnings.

This commit is contained in:
David Brown 2016-12-02 12:26:21 +00:00
parent 62c6d5c2a4
commit c57a91210b
2 changed files with 5 additions and 15 deletions

View file

@ -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

View file

@ -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);