* fixed funcretloc for sparc

This commit is contained in:
peter 2004-11-21 18:13:31 +00:00
parent 89b1b583c9
commit a29eab36c7
3 changed files with 17 additions and 7 deletions

View File

@ -493,7 +493,6 @@ implementation
retloc : tlocation;
hregister : tregister;
tempnode : tnode;
resultparaloc : pcgparalocation;
begin
cgsize:=procdefinition.funcretloc[callerside].size;
@ -557,8 +556,8 @@ implementation
{$ifdef x86}
tcgx86(cg).inc_fpu_stack;
{$else x86}
if getsupreg(resultparaloc^.register)<first_fpu_imreg then
cg.ungetcpuregister(exprasmlist,resultparaloc^.register);
if getsupreg(procdefinition.funcretloc[callerside].register)<first_fpu_imreg then
cg.ungetcpuregister(exprasmlist,procdefinition.funcretloc[callerside].register);
hregister:=cg.getfpuregister(exprasmlist,location.size);
cg.a_loadfpu_reg_reg(exprasmlist,location.size,location.register,hregister);
location.register:=hregister;
@ -1248,7 +1247,10 @@ begin
end.
{
$Log$
Revision 1.187 2004-11-21 17:54:59 peter
Revision 1.188 2004-11-21 18:13:31 peter
* fixed funcretloc for sparc
Revision 1.187 2004/11/21 17:54:59 peter
* ttempcreatenode.create_reg merged into .create with parameter
whether a register is allowed
* funcret_paraloc renamed to funcretloc

View File

@ -1769,7 +1769,8 @@ implementation
cg.g_proc_exit(list,parasize,(po_nostackframe in current_procinfo.procdef.procoptions));
{ release return registers, needed for optimizer }
location_free(list,current_procinfo.procdef.funcretloc[calleeside]);
if not is_void(current_procinfo.procdef.rettype.def) then
location_free(list,current_procinfo.procdef.funcretloc[calleeside]);
{ end of frame marker for call frame info }
dwarfcfi.end_frame(list);
@ -2259,7 +2260,10 @@ implementation
end.
{
$Log$
Revision 1.244 2004-11-21 17:54:59 peter
Revision 1.245 2004-11-21 18:13:31 peter
* fixed funcretloc for sparc
Revision 1.244 2004/11/21 17:54:59 peter
* ttempcreatenode.create_reg merged into .create with parameter
whether a register is allowed
* funcret_paraloc renamed to funcretloc

View File

@ -176,6 +176,7 @@ implementation
{$ifndef cpu64bit}
if retcgsize in [OS_64,OS_S64] then
begin
p.funcretloc[side].loc:=LOC_REGISTER;
{ high }
if (side=callerside) or (p.proccalloption=pocall_inline)then
p.funcretloc[side].register64.reghi:=NR_FUNCTION_RESULT64_HIGH_REG
@ -316,7 +317,10 @@ begin
end.
{
$Log$
Revision 1.49 2004-11-21 17:54:59 peter
Revision 1.50 2004-11-21 18:13:31 peter
* fixed funcretloc for sparc
Revision 1.49 2004/11/21 17:54:59 peter
* ttempcreatenode.create_reg merged into .create with parameter
whether a register is allowed
* funcret_paraloc renamed to funcretloc