Selaa lähdekoodia

* Fixed TAOptObj.CollapseZeroDistJump to properly handle delay slots.

git-svn-id: trunk@45874 -
yury 5 vuotta sitten
vanhempi
commit
2d8873d085
1 muutettua tiedostoa jossa 3 lisäystä ja 2 poistoa
  1. 3 2
      compiler/aoptobj.pas

+ 3 - 2
compiler/aoptobj.pas

@@ -2163,8 +2163,8 @@ Unit AoptObj;
         tmp, hp1: tai;
       begin
         Result := False;
-        hp1 := tai(p.Next);
-        tmp := hp1; { Might be an align before the label, so keep a note of it }
+        if not GetNextInstruction(p,hp1) then
+          exit;
         if (hp1 = BlockEnd) then
           Exit;
 
@@ -2178,6 +2178,7 @@ Unit AoptObj;
 {$ifdef cpudelayslot}
             RemoveDelaySlot(p);
 {$endif cpudelayslot}
+            tmp := tai(p.Next); { Might be an align before the label, so keep a note of it }
             asml.remove(p);
             p.free;