Browse Source

* properly search in GetMMRegisterBetween and GetIntRegisterBetween for usable
volatile registers (low(<set>) .. high(<set) just searched all possible elements
and not only the included ones)

florian 3 years ago
parent
commit
abd494624b
1 changed files with 2 additions and 2 deletions
  1. 2 2
      compiler/x86/aoptx86.pas

+ 2 - 2
compiler/x86/aoptx86.pas

@@ -1027,7 +1027,7 @@ unit aoptx86;
         { TODO: Currently, only the volatile registers are checked - can this be extended to use any register the procedure has preserved? }
         Result := NR_NO;
         RegSet := paramanager.get_volatile_registers_int(current_procinfo.procdef.proccalloption);
-        for CurrentSuperReg := Low(RegSet) to High(RegSet) do
+        for CurrentSuperReg in RegSet do
           begin
             CurrentReg := newreg(R_INTREGISTER, TSuperRegister(CurrentSuperReg), RegSize);
             if not AUsedRegs[R_INTREGISTER].IsUsed(CurrentReg) then
@@ -1090,7 +1090,7 @@ unit aoptx86;
         { TODO: Currently, only the volatile registers are checked - can this be extended to use any register the procedure has preserved? }
         Result := NR_NO;
         RegSet := paramanager.get_volatile_registers_mm(current_procinfo.procdef.proccalloption);
-        for CurrentSuperReg := Low(RegSet) to High(RegSet) do
+        for CurrentSuperReg in RegSet do
           begin
             CurrentReg := newreg(R_MMREGISTER, TSuperRegister(CurrentSuperReg), RegSize);
             if not AUsedRegs[R_MMREGISTER].IsUsed(CurrentReg) then