فهرست منبع

* Fixed TAOptObj.CollapseZeroDistJump to properly handle delay slots.

git-svn-id: trunk@45874 -
yury 5 سال پیش
والد
کامیت
2d8873d085
1فایلهای تغییر یافته به همراه3 افزوده شده و 2 حذف شده
  1. 3 2
      compiler/aoptobj.pas

+ 3 - 2
compiler/aoptobj.pas

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