Ver Fonte

Fixes by Gareth Moreton for problems exposed by use of -CriotR option

git-svn-id: trunk@43529 -
pierre há 5 anos atrás
pai
commit
ff415ba39c
2 ficheiros alterados com 5 adições e 3 exclusões
  1. 3 3
      compiler/aoptobj.pas
  2. 2 0
      compiler/x86/aoptx86.pas

+ 3 - 3
compiler/aoptobj.pas

@@ -381,7 +381,7 @@ Unit AoptObj;
         procedure MakeUnconditional(p: taicpu); virtual;
 
         { Removes all instructions between an unconditional jump and the next label }
-        procedure RemoveDeadCodeAfterJump(p: taicpu);
+        procedure RemoveDeadCodeAfterJump(p: tai);
 
         { If hp is a label, strip it if its reference count is zero.  Repeat until
           a non-label is found, or a label with a non-zero reference count.
@@ -1615,7 +1615,7 @@ Unit AoptObj;
 
 
     { Removes all instructions between an unconditional jump and the next label }
-    procedure TAOptObj.RemoveDeadCodeAfterJump(p: taicpu);
+    procedure TAOptObj.RemoveDeadCodeAfterJump(p: tai);
       var
         hp1, hp2: tai;
       begin
@@ -1657,7 +1657,7 @@ Unit AoptObj;
                   hp1.free;
                 end
               else
-                p:=taicpu(hp1);
+                p:=hp1;
             end
           else
             Break;

+ 2 - 0
compiler/x86/aoptx86.pas

@@ -2057,6 +2057,8 @@ unit aoptx86;
                     p.Free;
                     hp2.Free;
                     p := hp1;
+                    Result := True;
+                    Exit;
                   end;
               end;
             if MatchOpType(taicpu(hp2),top_reg,top_reg) and