Bläddra i källkod

Change RemoveCurrentP parameter type to tai, because GetNextInstruction does not always return a taicpu, adapt code in avr/aoptcpu unit

git-svn-id: trunk@40120 -
pierre 6 år sedan
förälder
incheckning
0abc978cc4
2 ändrade filer med 18 tillägg och 18 borttagningar
  1. 3 3
      compiler/aoptobj.pas
  2. 15 15
      compiler/avr/aoptcpu.pas

+ 3 - 3
compiler/aoptobj.pas

@@ -327,7 +327,7 @@ Unit AoptObj;
         function RegEndOfLife(reg: TRegister;p: taicpu): boolean;
         function RegEndOfLife(reg: TRegister;p: taicpu): boolean;
 
 
         { removes p from asml, updates registers and replaces it by a valid value, if this is the case true is returned }
         { removes p from asml, updates registers and replaces it by a valid value, if this is the case true is returned }
-        function RemoveCurrentP(var p : taicpu): boolean;
+        function RemoveCurrentP(var p : tai): boolean;
 
 
        { traces sucessive jumps to their final destination and sets it, e.g.
        { traces sucessive jumps to their final destination and sets it, e.g.
          je l1                je l3
          je l1                je l3
@@ -1289,7 +1289,7 @@ Unit AoptObj;
       end;
       end;
 
 
 
 
-    function TAOptObj.RemoveCurrentP(var p : taicpu) : boolean;
+    function TAOptObj.RemoveCurrentP(var p : tai) : boolean;
       var
       var
         hp1 : tai;
         hp1 : tai;
       begin
       begin
@@ -1299,7 +1299,7 @@ Unit AoptObj;
         UpdateUsedRegs(tai(p.Next));
         UpdateUsedRegs(tai(p.Next));
         AsmL.Remove(p);
         AsmL.Remove(p);
         p.Free;
         p.Free;
-        p:=taicpu(hp1);
+        p:=hp1;
       end;
       end;
 
 
 
 

+ 15 - 15
compiler/avr/aoptcpu.pas

@@ -349,7 +349,7 @@ Implementation
 
 
                             DebugMsg('Peephole LdiMov/Cp2Ldi/Cpi performed', p);
                             DebugMsg('Peephole LdiMov/Cp2Ldi/Cpi performed', p);
 
 
-                            RemoveCurrentP(taicpu(p));
+                            RemoveCurrentP(p);
                           end;
                           end;
                         ReleaseUsedRegs(TmpUsedRegs);
                         ReleaseUsedRegs(TmpUsedRegs);
                       end;
                       end;
@@ -541,7 +541,7 @@ Implementation
                       begin
                       begin
                         DebugMsg('Redundant Andi removed', p);
                         DebugMsg('Redundant Andi removed', p);
 
 
-                        result:=RemoveCurrentP(taicpu(p));
+                        result:=RemoveCurrentP(p);
                       end;
                       end;
                   end;
                   end;
                 A_ADD:
                 A_ADD:
@@ -552,7 +552,7 @@ Implementation
                     begin
                     begin
                       DebugMsg('Peephole AddAdc2Add performed', p);
                       DebugMsg('Peephole AddAdc2Add performed', p);
 
 
-                      result:=RemoveCurrentP(taicpu(p));
+                      result:=RemoveCurrentP(p);
                     end;
                     end;
                   end;
                   end;
                 A_SUB:
                 A_SUB:
@@ -565,7 +565,7 @@ Implementation
 
 
                       taicpu(hp1).opcode:=A_SUB;
                       taicpu(hp1).opcode:=A_SUB;
 
 
-                      result:=RemoveCurrentP(taicpu(p));
+                      result:=RemoveCurrentP(p);
                     end;
                     end;
                   end;
                   end;
                 A_CLR:
                 A_CLR:
@@ -588,7 +588,7 @@ Implementation
                       begin
                       begin
                         DebugMsg('Peephole ClrMov2Mov performed', p);
                         DebugMsg('Peephole ClrMov2Mov performed', p);
 
 
-                        result:=RemoveCurrentP(taicpu(p));
+                        result:=RemoveCurrentP(p);
                       end
                       end
                     { turn
                     { turn
                       clr rX
                       clr rX
@@ -625,7 +625,7 @@ Implementation
                             dealloc.Free;
                             dealloc.Free;
                           end;
                           end;
 
 
-                        result:=RemoveCurrentP(taicpu(p));
+                        result:=RemoveCurrentP(p);
                       end;
                       end;
                   end;
                   end;
                 A_PUSH:
                 A_PUSH:
@@ -667,9 +667,9 @@ Implementation
 
 
                            taicpu(hp3).loadreg(1, taicpu(p).oper[0]^.reg);
                            taicpu(hp3).loadreg(1, taicpu(p).oper[0]^.reg);
 
 
-                           RemoveCurrentP(taicpu(p));
-                           RemoveCurrentP(taicpu(p));
-                           result:=RemoveCurrentP(taicpu(p));
+                           RemoveCurrentP(p);
+                           RemoveCurrentP(p);
+                           result:=RemoveCurrentP(p);
                          end
                          end
                        else
                        else
                          begin
                          begin
@@ -757,7 +757,7 @@ Implementation
                           not(MatchInstruction(hp1,[A_CALL,A_RCALL])) then
                           not(MatchInstruction(hp1,[A_CALL,A_RCALL])) then
                           begin
                           begin
                             DebugMsg('Peephole Mov2Nop performed', p);
                             DebugMsg('Peephole Mov2Nop performed', p);
-                            result:=RemoveCurrentP(taicpu(p));
+                            result:=RemoveCurrentP(p);
                             ReleaseUsedRegs(TmpUsedRegs);
                             ReleaseUsedRegs(TmpUsedRegs);
                             exit;
                             exit;
                           end;
                           end;
@@ -807,7 +807,7 @@ Implementation
                         { p will be removed, update used register as we continue
                         { p will be removed, update used register as we continue
                           with the next instruction after p }
                           with the next instruction after p }
 
 
-                        result:=RemoveCurrentP(taicpu(p));
+                        result:=RemoveCurrentP(p);
                       end
                       end
                     { remove
                     { remove
                       mov reg0,reg0
                       mov reg0,reg0
@@ -819,7 +819,7 @@ Implementation
                       begin
                       begin
                         DebugMsg('Peephole RedundantMov performed', p);
                         DebugMsg('Peephole RedundantMov performed', p);
 
 
-                        result:=RemoveCurrentP(taicpu(p));
+                        result:=RemoveCurrentP(p);
                       end
                       end
                     {
                     {
                       Turn
                       Turn
@@ -870,7 +870,7 @@ Implementation
                         asml.remove(hp2);
                         asml.remove(hp2);
                         hp2.free;
                         hp2.free;
 
 
-                        result:=RemoveCurrentP(taicpu(p));
+                        result:=RemoveCurrentP(p);
                       end
                       end
                     {
                     {
                       Turn
                       Turn
@@ -913,7 +913,7 @@ Implementation
                             dealloc.Free;
                             dealloc.Free;
                           end;
                           end;
 
 
-                        result:=RemoveCurrentP(taicpu(p));
+                        result:=RemoveCurrentP(p);
 
 
                         asml.remove(hp2);
                         asml.remove(hp2);
                         hp2.free;
                         hp2.free;
@@ -968,7 +968,7 @@ Implementation
                         begin
                         begin
                           DebugMsg('Peephole MovMov2Mov performed', p);
                           DebugMsg('Peephole MovMov2Mov performed', p);
 
 
-                          result:=RemoveCurrentP(taicpu(p));
+                          result:=RemoveCurrentP(p);
 
 
                           GetNextInstruction(hp1,hp1);
                           GetNextInstruction(hp1,hp1);
                           if not assigned(hp1) then
                           if not assigned(hp1) then