Parcourir la source

* mov x, %treg; mov %treg, y might be only optimized if y does not use treg

git-svn-id: trunk@22015 -
florian il y a 13 ans
Parent
commit
df01717c38
1 fichiers modifiés avec 2 ajouts et 1 suppressions
  1. 2 1
      compiler/i386/popt386.pas

+ 2 - 1
compiler/i386/popt386.pas

@@ -991,7 +991,8 @@ begin
                          (taicpu(hp1).oper[0]^.reg = taicpu(p).oper[1]^.reg) then
                          (taicpu(hp1).oper[0]^.reg = taicpu(p).oper[1]^.reg) then
                         begin
                         begin
                           {we have "mov x, %treg; mov %treg, y}
                           {we have "mov x, %treg; mov %treg, y}
-                          if not(RegUsedAfterInstruction(taicpu(p).oper[1]^.reg, hp1, TmpUsedRegs)) then
+                          if not(RegInOp(getsupreg(taicpu(p).oper[1]^.reg),taicpu(hp1).oper[1]^)) and
+                             not(RegUsedAfterInstruction(taicpu(p).oper[1]^.reg, hp1, TmpUsedRegs)) then
                             {we've got "mov x, %treg; mov %treg, y; with %treg is not used after }
                             {we've got "mov x, %treg; mov %treg, y; with %treg is not used after }
                             case taicpu(p).oper[0]^.typ Of
                             case taicpu(p).oper[0]^.typ Of
                               top_reg:
                               top_reg: