2
0
Эх сурвалжийг харах

* fixed problem with cpu interferences

florian 21 жил өмнө
parent
commit
5062c04096

+ 5 - 2
compiler/arm/cgcpu.pas

@@ -150,7 +150,7 @@ unit cgcpu;
       begin
         inherited init_register_allocators;
         { currently, we save R14 always, so we can use it }
-        rg[R_INTREGISTER]:=trgcpu.create(R_INTREGISTER,R_SUBWHOLE,
+        rg[R_INTREGISTER]:=trgintcpu.create(R_INTREGISTER,R_SUBWHOLE,
             [RS_R0,RS_R1,RS_R2,RS_R3,RS_R4,RS_R5,RS_R6,RS_R7,RS_R8,
              RS_R9,RS_R10,RS_R12,RS_R14],first_int_imreg,[]);
         rg[R_FPUREGISTER]:=trgcpu.create(R_FPUREGISTER,R_SUBNONE,
@@ -1324,7 +1324,10 @@ begin
 end.
 {
   $Log$
-  Revision 1.53  2004-06-20 08:55:31  florian
+  Revision 1.54  2004-07-03 19:29:14  florian
+    * fixed problem with cpu interferences
+
+  Revision 1.53  2004/06/20 08:55:31  florian
     * logs truncated
 
   Revision 1.52  2004/06/16 20:07:10  florian

+ 19 - 12
compiler/arm/rgcpu.pas

@@ -36,7 +36,6 @@ unit rgcpu;
 
      type
        trgcpu = class(trgobj)
-         procedure add_cpu_interferences(p : tai);override;
          procedure do_spill_read(list : taasmoutput;instr : taicpu;pos: tai; regidx: word;
           const spilltemplist:Tspill_temp_list;const regs : tspillregsinfo);override;
          procedure do_spill_written(list : taasmoutput;instr : taicpu;pos: tai; regidx: word;
@@ -45,6 +44,10 @@ unit rgcpu;
           const spilltemplist:Tspill_temp_list;const regs : tspillregsinfo);override;
        end;
 
+       trgintcpu = class(trgcpu)
+         procedure add_cpu_interferences(p : tai);override;
+       end;
+
   implementation
 
     uses
@@ -53,16 +56,6 @@ unit rgcpu;
       procinfo;
 
 
-    procedure trgcpu.add_cpu_interferences(p : tai);
-      begin
-        if p.typ=ait_instruction then
-          begin
-            if (taicpu(p).opcode=A_MUL) then
-              add_edge(getsupreg(taicpu(p).oper[0]^.reg),getsupreg(taicpu(p).oper[1]^.reg));
-          end;
-      end;
-
-
     procedure trgcpu.do_spill_read(list : taasmoutput;instr : taicpu;pos: tai; regidx: word;
      const spilltemplist:Tspill_temp_list;const regs : tspillregsinfo);
       var
@@ -223,11 +216,25 @@ unit rgcpu;
           inherited do_spill_readwritten(list,instr,pos,regidx,spilltemplist,regs);
       end;
 
+
+    procedure trgintcpu.add_cpu_interferences(p : tai);
+      begin
+        if p.typ=ait_instruction then
+          begin
+            if (taicpu(p).opcode=A_MUL) then
+              add_edge(getsupreg(taicpu(p).oper[0]^.reg),getsupreg(taicpu(p).oper[1]^.reg));
+          end;
+      end;
+
+
 end.
 
 {
   $Log$
-  Revision 1.12  2004-06-20 08:55:31  florian
+  Revision 1.13  2004-07-03 19:29:14  florian
+    * fixed problem with cpu interferences
+
+  Revision 1.12  2004/06/20 08:55:31  florian
     * logs truncated
 
   Revision 1.11  2004/06/16 20:07:10  florian