* fix to compile again, but high(cardinal) with $R+ still fails!

This commit is contained in:
peter 2001-02-21 20:50:59 +00:00
parent 659e4ec93b
commit b3956651be

View File

@ -126,19 +126,25 @@ implementation
{ low/high of torddef are longints, so we need special } { low/high of torddef are longints, so we need special }
{ handling for cardinal and 64bit types (JM) } { handling for cardinal and 64bit types (JM) }
if is_signed(adef) then if is_64bitint(adef) then
if is_64bitint(adef) and begin
(inlinenumber=in_low_x) then if is_signed(adef) then
v := int64($80000000) shl 32 begin
else if (inlinenumber=in_low_x) then
v := (int64($7fffffff) shl 32) or $ffffffff v := int64($80000000) shl 32
else else
if is_64bitint(adef) then v := (int64($7fffffff) shl 32) or $ffffffff
{ we have to use a dirty trick for high(qword), } end
{ because it's bigger than high(v) (JM) } else
v := 0 begin
else { we have to use a dirty trick for high(qword), }
v := cardinal(v); { because it's bigger than high(v) (JM) }
if (inlinenumber=in_low_x) then
v := 0
else
v := cardinal(v);
end;
end;
hp:=genordinalconstnode(v,adef); hp:=genordinalconstnode(v,adef);
firstpass(hp); firstpass(hp);
{ fix high(qword) } { fix high(qword) }
@ -1529,7 +1535,10 @@ begin
end. end.
{ {
$Log$ $Log$
Revision 1.25 2001-02-21 12:57:46 jonas Revision 1.26 2001-02-21 20:50:59 peter
* fix to compile again, but high(cardinal) with $R+ still fails!
Revision 1.25 2001/02/21 12:57:46 jonas
* fixed high/low for cardinal, int64 and qword * fixed high/low for cardinal, int64 and qword
Revision 1.24 2001/01/06 19:54:11 peter Revision 1.24 2001/01/06 19:54:11 peter