mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-20 16:09:31 +02:00
* more fixes for float parameter handling on arm
git-svn-id: trunk@728 -
This commit is contained in:
parent
6171499d15
commit
32b96e75f3
@ -992,15 +992,26 @@ implementation
|
||||
var
|
||||
ref : treference;
|
||||
begin
|
||||
cgpara.check_simple_location;
|
||||
case cgpara.location^.loc of
|
||||
LOC_FPUREGISTER,LOC_CFPUREGISTER:
|
||||
a_loadfpu_reg_reg(list,size,r,cgpara.location^.register);
|
||||
begin
|
||||
cgpara.check_simple_location;
|
||||
a_loadfpu_reg_reg(list,size,r,cgpara.location^.register);
|
||||
end;
|
||||
LOC_REFERENCE,LOC_CREFERENCE:
|
||||
begin
|
||||
reference_reset_base(ref,cgpara.location^.reference.index,cgpara.location^.reference.offset);
|
||||
a_loadfpu_reg_ref(list,size,r,ref);
|
||||
end
|
||||
cgpara.check_simple_location;
|
||||
reference_reset_base(ref,cgpara.location^.reference.index,cgpara.location^.reference.offset);
|
||||
a_loadfpu_reg_ref(list,size,r,ref);
|
||||
end;
|
||||
LOC_REGISTER,LOC_CREGISTER:
|
||||
begin
|
||||
{ paramfpu_ref does the check_simpe_location check here if necessary }
|
||||
tg.GetTemp(list,TCGSize2Size[size],tt_normal,ref);
|
||||
a_loadfpu_reg_ref(list,size,r,ref);
|
||||
a_paramfpu_ref(list,size,ref,cgpara);
|
||||
tg.Ungettemp(list,ref);
|
||||
end;
|
||||
else
|
||||
internalerror(2002071004);
|
||||
end;
|
||||
@ -1020,7 +1031,7 @@ implementation
|
||||
reference_reset_base(href,cgpara.location^.reference.index,cgpara.location^.reference.offset);
|
||||
{ concatcopy should choose the best way to copy the data }
|
||||
g_concatcopy(list,ref,href,tcgsize2size[size]);
|
||||
end
|
||||
end;
|
||||
else
|
||||
internalerror(200402201);
|
||||
end;
|
||||
|
@ -202,7 +202,7 @@ implementation
|
||||
cg.a_paramfpu_reg(exprasmlist,left.location.size,left.location.register,tempcgpara);
|
||||
end;
|
||||
else
|
||||
internalerror(2002042433);
|
||||
internalerror(200204249);
|
||||
end;
|
||||
LOC_FPUREGISTER,
|
||||
LOC_CFPUREGISTER:
|
||||
@ -224,8 +224,8 @@ implementation
|
||||
cg.a_param_ref(exprasmlist,left.location.size,left.location.reference,tempcgpara);
|
||||
end;
|
||||
{$endif x86_64}
|
||||
{$ifdef sparc}
|
||||
{ sparc pushes floats in normal registers }
|
||||
{$if defined(sparc) or defined(arm)}
|
||||
{ sparc and arm pass floats in normal registers }
|
||||
LOC_REGISTER,
|
||||
LOC_CREGISTER,
|
||||
{$endif sparc}
|
||||
@ -254,7 +254,7 @@ implementation
|
||||
end;
|
||||
{$endif x86_64}
|
||||
{$if defined(sparc) or defined(arm) }
|
||||
{ sparc and arm passes floats in normal registers }
|
||||
{ sparc and arm pass floats in normal registers }
|
||||
LOC_REGISTER,
|
||||
LOC_CREGISTER,
|
||||
{$endif sparc}
|
||||
|
Loading…
Reference in New Issue
Block a user