Forráskód Böngészése

* track used register better: if a deallocation is moved/removed, the used register may not be removed from the current register used register set

git-svn-id: trunk@44239 -
florian 5 éve
szülő
commit
c7b19e2fc9
1 módosított fájl, 3 hozzáadás és 2 törlés
  1. 3 2
      compiler/aopt.pas

+ 3 - 2
compiler/aopt.pas

@@ -192,7 +192,6 @@ Unit aopt;
                       End
                     else if tai_regalloc(p).ratype=ra_dealloc then
                       Begin
-                        ExcludeRegFromUsedRegs(tai_regalloc(p).Reg,Regs);
                         hp1 := p;
                         hp2 := nil;
                         While Not(assigned(FindRegAlloc(tai_regalloc(p).Reg, tai(hp1.Next)))) And
@@ -233,7 +232,9 @@ Unit aopt;
                             AsmL.remove(p);
                             p.free;
                             p := hp1;
-                          end;
+                          end
+                        else
+                          ExcludeRegFromUsedRegs(tai_regalloc(p).Reg,Regs);
                       End
                   End
                 else