From d179aea20dc8db71e694a0bbbe91c0b839c582dc Mon Sep 17 00:00:00 2001 From: peter Date: Thu, 12 Jun 2003 21:11:10 +0000 Subject: [PATCH] * ungetregisterfpu gets size parameter --- compiler/cgobj.pas | 7 +++++-- compiler/paramgr.pas | 7 +++++-- compiler/rgobj.pas | 13 +++++++++---- 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/compiler/cgobj.pas b/compiler/cgobj.pas index 5c33d702fa..649afa7e25 100644 --- a/compiler/cgobj.pas +++ b/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 diff --git a/compiler/paramgr.pas b/compiler/paramgr.pas index 562b5061ce..15de52cf78 100644 --- a/compiler/paramgr.pas +++ b/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 diff --git a/compiler/rgobj.pas b/compiler/rgobj.pas index a2c3e9a440..2400e31c92 100644 --- a/compiler/rgobj.pas +++ b/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