Set register_used boolean only for calleeside

git-svn-id: trunk@22335 -
This commit is contained in:
pierre 2012-09-06 08:11:15 +00:00
parent c72f27e53e
commit bf46526cc7

View File

@ -32,6 +32,8 @@ interface
const const
MIPS_MAX_OFFSET = 20; MIPS_MAX_OFFSET = 20;
{ The value below is OK for O32 and N32 calling conventions }
MIPS_MAX_REGISTERS_USED_IN_CALL = 6; MIPS_MAX_REGISTERS_USED_IN_CALL = 6;
{ All ABI seem to start with $4 i.e. $a0 } { All ABI seem to start with $4 i.e. $a0 }
@ -53,10 +55,10 @@ interface
{ Set O32 ABI as default } { Set O32 ABI as default }
const const
mips_nb_used_registers = MIPS_NB_REGISTERS_USED_IN_CALL_O32; mips_nb_used_registers : longint = MIPS_NB_REGISTERS_USED_IN_CALL_O32;
{ Might need to be changed if we support N64 ABI later } { Might need to be changed if we support N64 ABI later }
mips_sizeof_register_param = 4; mips_sizeof_register_param : longint = 4;
type type
tparasupregs = array[0..MIPS_MAX_REGISTERS_USED_IN_CALL-1] of tsuperregister; tparasupregs = array[0..MIPS_MAX_REGISTERS_USED_IN_CALL-1] of tsuperregister;
@ -66,6 +68,7 @@ interface
tparasupregsoffset = array[0..MIPS_MAX_REGISTERS_USED_IN_CALL-1] of longint; tparasupregsoffset = array[0..MIPS_MAX_REGISTERS_USED_IN_CALL-1] of longint;
const const
parasupregs : tparasupregs = (RS_R4, RS_R5, RS_R6, RS_R7, RS_R8, RS_R9); parasupregs : tparasupregs = (RS_R4, RS_R5, RS_R6, RS_R7, RS_R8, RS_R9);
type type
@ -369,7 +372,7 @@ implementation
if vo_is_funcret in hp.varoptions then if vo_is_funcret in hp.varoptions then
begin begin
{ This should be the first parameter } { This should be the first parameter }
if assigned(current_procinfo) then if (side=calleeside) and assigned(current_procinfo) then
begin begin
TMIPSProcInfo(current_procinfo).register_used[0]:=true; TMIPSProcInfo(current_procinfo).register_used[0]:=true;
TMIPSProcInfo(current_procinfo).register_name[0]:='result'; TMIPSProcInfo(current_procinfo).register_name[0]:='result';
@ -429,7 +432,7 @@ implementation
end end
else { not can use float } else { not can use float }
begin begin
if assigned(current_procinfo) then if (side=calleeside) and assigned(current_procinfo) then
begin begin
TMIPSProcInfo(current_procinfo).register_used[intparareg]:=true; TMIPSProcInfo(current_procinfo).register_used[intparareg]:=true;
TMIPSProcInfo(current_procinfo).register_name[intparareg]:=hp.prettyname; TMIPSProcInfo(current_procinfo).register_name[intparareg]:=hp.prettyname;