* optimize CheckAndWarn

git-svn-id: trunk@26164 -
This commit is contained in:
florian 2013-12-01 17:02:17 +00:00
parent 35206c3d93
commit 6924cc0458

View File

@ -812,10 +812,9 @@ unit optdfa;
i : longint;
touchesnode : Boolean;
procedure MaybeDoCheck(n : tnode);
procedure MaybeDoCheck(n : tnode);inline;
begin
if not(Result) then
Result:=Result or DoCheck(n);
Result:=Result or DoCheck(n);
end;
procedure MaybeSearchIn(n : tnode);
@ -834,12 +833,17 @@ unit optdfa;
exit;
include(node.flags,nf_processing);
touchesnode:=DFASetIn(node.optinfo^.use,nodetosearch.optinfo^.index) or
DFASetIn(node.optinfo^.def,nodetosearch.optinfo^.index);
if not(DFASetIn(node.optinfo^.life,nodetosearch.optinfo^.index)) then
exit;
{ we do not need this info always, so try to safe some time here, CheckAndWarn
takes a lot of time anyways }
if not(node.nodetype in [statementn,blockn]) then
touchesnode:=DFASetIn(node.optinfo^.use,nodetosearch.optinfo^.index) or
DFASetIn(node.optinfo^.def,nodetosearch.optinfo^.index)
else
touchesnode:=false;
case node.nodetype of
whilerepeatn:
begin