From 63757c84ade7142aa3ae7cd4deba94898f88e44c Mon Sep 17 00:00:00 2001 From: florian <florian@freepascal.org> Date: Wed, 6 Nov 2013 21:10:52 +0000 Subject: [PATCH] * fix life information of block nodes git-svn-id: trunk@25973 - --- compiler/optdfa.pas | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/compiler/optdfa.pas b/compiler/optdfa.pas index 5deeedc8ff..a489896bd2 100644 --- a/compiler/optdfa.pas +++ b/compiler/optdfa.pas @@ -342,9 +342,12 @@ unit optdfa; CreateInfo(tfornode(node).t2); { expect a blocknode as body because we need to push the life information - of the counter variable into it } + of the counter variable into it if tfornode(node).t2.nodetype<>blockn then - internalerror(2013110201); + begin + printnode(tfornode(node).t2); + internalerror(2013110301); + end;} { first update the body } l:=copy(tfornode(node).t2.optinfo^.life); @@ -404,8 +407,11 @@ unit optdfa; blockn: begin CreateInfo(tblocknode(node).statements); - if assigned(tblocknode(node).statements) then - node.optinfo^.life:=tblocknode(node).statements.optinfo^.life; + { ensure that we don't remove life info } + l:=node.optinfo^.life; + if assigned(node.successor) then + DFASetIncludeSet(l,node.successor.optinfo^.life); + UpdateLifeInfo(node,l); end; ifn: