Browse Source

* ungetregisterfpu gets size parameter

peter 22 years ago
parent
commit
d179aea20d
3 changed files with 19 additions and 8 deletions
  1. 5 2
      compiler/cgobj.pas
  2. 5 2
      compiler/paramgr.pas
  3. 9 4
      compiler/rgobj.pas

+ 5 - 2
compiler/cgobj.pas

@@ -1011,7 +1011,7 @@ unit cgobj;
          hr:=rg.getregisterfpu(list,size);
          a_loadfpu_ref_reg(list,size,ref,hr);
          a_paramfpu_reg(list,size,hr,locpara);
-         rg.ungetregisterfpu(list,hr);
+         rg.ungetregisterfpu(list,hr,size);
       end;
 
 
@@ -1718,7 +1718,10 @@ finalization
 end.
 {
   $Log$
-  Revision 1.110  2003-06-12 16:43:07  peter
+  Revision 1.111  2003-06-12 21:11:10  peter
+    * ungetregisterfpu gets size parameter
+
+  Revision 1.110  2003/06/12 16:43:07  peter
     * newra compiles for sparc
 
   Revision 1.109  2003/06/07 18:57:04  jonas

+ 5 - 2
compiler/paramgr.pas

@@ -298,7 +298,7 @@ unit paramgr;
           LOC_REGISTER, LOC_CREGISTER:
             rg.ungetregisterint(list,loc.register);
           LOC_FPUREGISTER, LOC_CFPUREGISTER:
-            rg.ungetregisterfpu(list,loc.register);
+            rg.ungetregisterfpu(list,loc.register,loc.size);
           LOC_REFERENCE,LOC_CREFERENCE:
             { do nothing by default, most of the time it's the framepointer }
           else
@@ -459,7 +459,10 @@ end.
 
 {
    $Log$
-   Revision 1.43  2003-06-09 14:54:26  jonas
+   Revision 1.44  2003-06-12 21:11:10  peter
+     * ungetregisterfpu gets size parameter
+
+   Revision 1.43  2003/06/09 14:54:26  jonas
      * (de)allocation of registers for parameters is now performed properly
        (and checked on the ppc)
      - removed obsolete allocation of all parameter registers at the start

+ 9 - 4
compiler/rgobj.pas

@@ -241,7 +241,7 @@ unit rgobj;
              @param(r register to free)
 
           }
-          procedure ungetregisterfpu(list: taasmoutput; r : tregister); virtual;
+          procedure ungetregisterfpu(list: taasmoutput; r : tregister;size:TCGsize); virtual;
 
           function getregistermm(list: taasmoutput) : tregister; virtual;
           procedure ungetregistermm(list: taasmoutput; r : tregister); virtual;
@@ -816,7 +816,7 @@ unit rgobj;
       end;
 
 
-    procedure trgobj.ungetregisterfpu(list : taasmoutput; r : tregister);
+    procedure trgobj.ungetregisterfpu(list : taasmoutput; r : tregister;size:TCGsize);
 
       begin
          ungetregistergen(list,r,usableregsfpu,unusedregsfpu,
@@ -870,7 +870,7 @@ unit rgobj;
          if r.enum in intregs then
            ungetregisterint(list,r)
          else if r.enum in fpuregs then
-           ungetregisterfpu(list,r)
+           ungetregisterfpu(list,r,OS_NO)
          else if r.enum in mmregs then
            ungetregistermm(list,r)
          else if r.enum in addrregs then
@@ -2429,6 +2429,8 @@ unit rgobj;
               if l.size in [OS_64,OS_S64] then
                rg.ungetregisterint(list,l.registerhigh);
             end;
+          LOC_FPUREGISTER,LOC_CFPUREGISTER :
+            rg.ungetregisterfpu(list,l.register,l.size);
           LOC_CREFERENCE,LOC_REFERENCE :
             rg.ungetreference(list, l.reference);
         end;
@@ -2466,7 +2468,10 @@ end.
 
 {
   $Log$
-  Revision 1.52  2003-06-12 16:43:07  peter
+  Revision 1.53  2003-06-12 21:11:10  peter
+    * ungetregisterfpu gets size parameter
+
+  Revision 1.52  2003/06/12 16:43:07  peter
     * newra compiles for sparc
 
   Revision 1.51  2003/06/09 14:54:26  jonas