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: