Browse Source

+ TDFABuilder.redodfainfo

florian 3 years ago
parent
commit
d0fdda6da7
2 changed files with 11 additions and 10 deletions
  1. 9 0
      compiler/optdfa.pas
  2. 2 10
      compiler/psub.pas

+ 9 - 0
compiler/optdfa.pas

@@ -45,6 +45,7 @@ unit optdfa;
         procedure resetdfainfo(node : tnode);
         procedure resetdfainfo(node : tnode);
 
 
         procedure createdfainfo(node : tnode);
         procedure createdfainfo(node : tnode);
+        procedure redodfainfo(node : tnode);
         destructor destroy;override;
         destructor destroy;override;
       end;
       end;
 
 
@@ -659,6 +660,14 @@ unit optdfa;
       end;
       end;
 
 
 
 
+    procedure TDFABuilder.redodfainfo(node: tnode);
+      begin
+        resetdfainfo(node);
+        createdfainfo(node);
+        include(current_procinfo.flags,pi_dfaavailable);
+      end;
+
+
     destructor TDFABuilder.Destroy;
     destructor TDFABuilder.Destroy;
       begin
       begin
         Resultnode.free;
         Resultnode.free;

+ 2 - 10
compiler/psub.pas

@@ -1218,11 +1218,7 @@ implementation
              end;
              end;
 
 
            if RedoDFA then
            if RedoDFA then
-             begin
-               dfabuilder.resetdfainfo(code);
-               dfabuilder.createdfainfo(code);
-               include(flags,pi_dfaavailable);
-             end;
+             dfabuilder.redodfainfo(code);
 
 
            if cs_opt_forloop in current_settings.optimizerswitches then
            if cs_opt_forloop in current_settings.optimizerswitches then
              RedoDFA:=OptimizeForLoop(code);
              RedoDFA:=OptimizeForLoop(code);
@@ -1230,11 +1226,7 @@ implementation
            RedoDFA:=ConvertForLoops(code) or RedoDFA;
            RedoDFA:=ConvertForLoops(code) or RedoDFA;
 
 
            if RedoDFA then
            if RedoDFA then
-             begin
-               dfabuilder.resetdfainfo(code);
-               dfabuilder.createdfainfo(code);
-               include(flags,pi_dfaavailable);
-             end;
+             dfabuilder.redodfainfo(code);
 
 
            { when life info is available, we can give more sophisticated warning about uninitialized
            { when life info is available, we can give more sophisticated warning about uninitialized
              variables ...
              variables ...