Ver Fonte

+ some more usage of register temps

Jonas Maebe há 21 anos atrás
pai
commit
0b1069b6ab
3 ficheiros alterados com 20 adições e 13 exclusões
  1. 10 9
      compiler/ncgbas.pas
  2. 5 2
      compiler/ninl.pas
  3. 5 2
      compiler/pinline.pas

+ 10 - 9
compiler/ncgbas.pas

@@ -444,17 +444,15 @@ interface
           LOC_CREGISTER,
           LOC_REGISTER:
             begin
+              { make sure the register allocator doesn't reuse the }
+              { register e.g. in the middle of a loop              }
+              cg.a_load_reg_reg(exprasmlist,OS_INT,OS_INT,tempinfo^.loc.reg,
+                tempinfo^.loc.reg);
               if release_to_normal then
                 tempinfo^.loc.loc := LOC_REGISTER
               else
-                begin
-                  { make sure the register allocator doesn't reuse the }
-                  { register e.g. in the middle of a loop              }
-                  cg.a_load_reg_reg(exprasmlist,OS_INT,OS_INT,tempinfo^.loc.reg,
-                    tempinfo^.loc.reg);
-                  { !!tell rgobj this register is no longer a regvar!! }
-                  cg.ungetregister(exprasmlist,tempinfo^.loc.reg);
-                end;
+                { !!tell rgobj this register is no longer a regvar!! }
+                cg.ungetregister(exprasmlist,tempinfo^.loc.reg);
             end;
         end;
       end;
@@ -471,7 +469,10 @@ begin
 end.
 {
   $Log$
-  Revision 1.54  2004-02-03 19:48:06  jonas
+  Revision 1.55  2004-02-04 18:45:29  jonas
+    + some more usage of register temps
+
+  Revision 1.54  2004/02/03 19:48:06  jonas
     * fixed and re-enabled temps in registers
 
   Revision 1.53  2004/02/03 17:55:50  jonas

+ 5 - 2
compiler/ninl.pas

@@ -403,7 +403,7 @@ implementation
             if (filepara.left.nodetype <> loadn) then
               begin
                 { create a temp which will hold a pointer to the file }
-                filetemp := ctempcreatenode.create(voidpointertype,voidpointertype.def.size,tt_persistent);
+                filetemp := ctempcreatenode.create_reg(voidpointertype,voidpointertype.def.size,tt_persistent);
 
                 { add it to the statements }
                 addstatement(newstatement,filetemp);
@@ -2374,7 +2374,10 @@ begin
 end.
 {
   $Log$
-  Revision 1.130  2004-02-03 22:32:54  peter
+  Revision 1.131  2004-02-04 18:45:29  jonas
+    + some more usage of register temps
+
+  Revision 1.130  2004/02/03 22:32:54  peter
     * renamed xNNbittype to xNNinttype
     * renamed registers32 to registersint
     * replace some s32bit,u32bit with torddef([su]inttype).def.typ

+ 5 - 2
compiler/pinline.pas

@@ -321,7 +321,7 @@ implementation
             newblock:=internalstatements(newstatement);
 
             { create temp for result }
-            temp := ctempcreatenode.create(p1.resulttype,p1.resulttype.def.size,tt_persistent);
+            temp := ctempcreatenode.create_reg(p1.resulttype,p1.resulttype.def.size,tt_persistent);
             addstatement(newstatement,temp);
 
             { create call to fpc_getmem }
@@ -734,7 +734,10 @@ implementation
 end.
 {
   $Log$
-  Revision 1.28  2004-02-03 22:32:54  peter
+  Revision 1.29  2004-02-04 18:45:29  jonas
+    + some more usage of register temps
+
+  Revision 1.28  2004/02/03 22:32:54  peter
     * renamed xNNbittype to xNNinttype
     * renamed registers32 to registersint
     * replace some s32bit,u32bit with torddef([su]inttype).def.typ