Browse Source

x86: Some oversights fixed where another iteration of pass 1 wasn't performed when it should have been

J. Gareth "Curious Kit" Moreton 2 years ago
parent
commit
ecf2ad3e53
1 changed files with 4 additions and 1 deletions
  1. 4 1
      compiler/x86/aoptx86.pas

+ 4 - 1
compiler/x86/aoptx86.pas

@@ -4278,6 +4278,8 @@ unit aoptx86;
                                       hp3 := tai(hp2.Previous);
                                       RemoveInstruction(hp2);
 
+                                      Include(OptsToCheck, aoc_ForceNewIteration);
+
                                       { See if there's more we can optimise }
                                       Continue;
                                     end
@@ -4381,7 +4383,8 @@ unit aoptx86;
                                 { Same value - register hasn't changed }
                                 DebugMsg(SPeepholeOptimization + 'Mov2Nop 2 done', hp2);
                                 RemoveInstruction(hp2);
-                                Result := True;
+
+                                Include(OptsToCheck, aoc_ForceNewIteration);
 
                                 { See if there's more we can optimise }
                                 Continue;