* MIPS: floating point parameters on stack should be loaded to/from FPU registers directly, without using temp.

git-svn-id: trunk@25122 -
This commit is contained in:
sergei 2013-07-17 11:00:46 +00:00
parent 3e0cc1e5f6
commit c3350d13f9
2 changed files with 6 additions and 3 deletions

View File

@ -439,7 +439,10 @@ implementation
intparareg:=mips_nb_used_registers;
end;
paraloc^.loc:=LOC_REFERENCE;
paraloc^.size:=int_cgsize(paralen);
if (paradef.typ=floatdef) then
paraloc^.size:=int_float_cgsize(paralen)
else
paraloc^.size:=int_cgsize(paralen);
paraloc^.def:=get_paraloc_def(locdef,paralen,firstparaloc);
if side=callerside then

View File

@ -1058,11 +1058,11 @@ implementation
begin
{$ifdef mips}
if (destloc.size = paraloc^.Size) and
(paraloc^.Loc in [LOC_FPUREGISTER,LOC_CFPUREGISTER]) then
(paraloc^.Loc in [LOC_FPUREGISTER,LOC_CFPUREGISTER,LOC_REFERENCE,LOC_CREFERENCE]) then
begin
unget_para(paraloc^);
gen_alloc_regloc(list,destloc);
cg.a_loadfpu_reg_reg(list,paraloc^.Size, destloc.size, paraloc^.register, destloc.register);
cg.a_load_cgparaloc_anyreg(list,destloc.size,paraloc^,destloc.register,para.alignment);
end
else if (destloc.size = OS_F32) and
(paraloc^.Loc in [LOC_REGISTER,LOC_CREGISTER]) then