mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-23 09:29:35 +02:00
* fix for sparc that pushes floats in int registers
This commit is contained in:
parent
8fade03fa5
commit
96463e762a
@ -221,25 +221,42 @@ implementation
|
||||
case left.location.loc of
|
||||
LOC_MMREGISTER,
|
||||
LOC_CMMREGISTER:
|
||||
begin
|
||||
if tempparaloc.loc in [LOC_FPUREGISTER,LOC_CFPUREGISTER] then
|
||||
case tempparaloc.loc of
|
||||
LOC_REFERENCE,
|
||||
LOC_CREFERENCE,
|
||||
LOC_MMREGISTER,
|
||||
LOC_CMMREGISTER:
|
||||
cg.a_parammm_reg(exprasmlist,def_cgsize(left.resulttype.def),left.location.register,tempparaloc,mms_movescalar);
|
||||
LOC_FPUREGISTER,
|
||||
LOC_CFPUREGISTER:
|
||||
begin
|
||||
location_force_fpureg(exprasmlist,left.location,false);
|
||||
cg.a_paramfpu_reg(exprasmlist,def_cgsize(left.resulttype.def),left.location.register,tempparaloc);
|
||||
end
|
||||
end;
|
||||
else
|
||||
cg.a_parammm_reg(exprasmlist,def_cgsize(left.resulttype.def),left.location.register,tempparaloc,mms_movescalar);
|
||||
internalerror(2002042433);
|
||||
end;
|
||||
LOC_FPUREGISTER,
|
||||
LOC_CFPUREGISTER:
|
||||
begin
|
||||
if tempparaloc.loc in [LOC_MMREGISTER,LOC_CMMREGISTER] then
|
||||
case tempparaloc.loc of
|
||||
LOC_MMREGISTER,
|
||||
LOC_CMMREGISTER:
|
||||
begin
|
||||
location_force_mmregscalar(exprasmlist,left.location,false);
|
||||
cg.a_parammm_reg(exprasmlist,def_cgsize(left.resulttype.def),left.location.register,tempparaloc,mms_movescalar);
|
||||
end
|
||||
else
|
||||
end;
|
||||
{$ifdef sparc}
|
||||
{ sparc pushes floats in normal registers }
|
||||
LOC_REGISTER,
|
||||
LOC_CREGISTER,
|
||||
{$endif sparc}
|
||||
LOC_REFERENCE,
|
||||
LOC_CREFERENCE,
|
||||
LOC_FPUREGISTER,
|
||||
LOC_CFPUREGISTER:
|
||||
cg.a_paramfpu_reg(exprasmlist,def_cgsize(left.resulttype.def),left.location.register,tempparaloc);
|
||||
else
|
||||
internalerror(2002042433);
|
||||
end;
|
||||
LOC_REFERENCE,
|
||||
LOC_CREFERENCE:
|
||||
@ -247,6 +264,11 @@ implementation
|
||||
LOC_MMREGISTER,
|
||||
LOC_CMMREGISTER:
|
||||
cg.a_parammm_ref(exprasmlist,def_cgsize(left.resulttype.def),left.location.reference,tempparaloc,mms_movescalar);
|
||||
{$ifdef sparc}
|
||||
{ sparc pushes floats in normal registers }
|
||||
LOC_REGISTER,
|
||||
LOC_CREGISTER,
|
||||
{$endif sparc}
|
||||
LOC_REFERENCE,
|
||||
LOC_CREFERENCE,
|
||||
LOC_FPUREGISTER,
|
||||
@ -1242,7 +1264,10 @@ begin
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.161 2004-03-09 13:04:12 mazen
|
||||
Revision 1.162 2004-03-09 16:28:31 peter
|
||||
* fix for sparc that pushes floats in int registers
|
||||
|
||||
Revision 1.161 2004/03/09 13:04:12 mazen
|
||||
+ difference between three similar internal errors
|
||||
|
||||
Revision 1.160 2004/02/27 10:21:05 florian
|
||||
|
Loading…
Reference in New Issue
Block a user