+ tinlinenode.createintern

* do not do range checking on constants created by pred/succ if these nodes are created internally

git-svn-id: trunk@31471 -
This commit is contained in:
florian 2015-08-31 20:03:51 +00:00
parent 049491a573
commit f00a55ae08

View File

@ -34,6 +34,7 @@ interface
tinlinenode = class(tunarynode)
inlinenumber : byte;
constructor create(number : byte;is_const:boolean;l : tnode);virtual;
constructor createintern(number : byte;is_const:boolean;l : tnode);virtual;
constructor ppuload(t:tnodetype;ppufile:tcompilerppufile);override;
procedure ppuwrite(ppufile:tcompilerppufile);override;
function dogetcopy : tnode;override;
@ -138,6 +139,14 @@ implementation
end;
constructor tinlinenode.createintern(number : byte; is_const : boolean;
l : tnode);
begin
create(number,is_const,l);
include(flags,nf_internal);
end;
constructor tinlinenode.ppuload(t:tnodetype;ppufile:tcompilerppufile);
begin
inherited ppuload(t,ppufile);
@ -2286,7 +2295,7 @@ implementation
result:=create_simplified_ord_const(vl,resultdef,forinline)
else
{ check the range for enums, chars, booleans }
result:=cordconstnode.create(vl,left.resultdef,true)
result:=cordconstnode.create(vl,left.resultdef,not(nf_internal in flags))
end
end;
in_low_x,