* enabled pushing (x87) fpu registers in case too few might be available

also for x86_64, since some of those platforms also support the x87
    (noticed by Florian)

git-svn-id: trunk@14338 -
This commit is contained in:
Jonas Maebe 2009-12-05 22:53:27 +00:00
parent 8f3b1e42c0
commit 0e96a159c8

View File

@ -85,9 +85,9 @@ interface
procedure tcgaddnode.pass_left_right; procedure tcgaddnode.pass_left_right;
var var
tmpreg : tregister; tmpreg : tregister;
{$ifdef i386} {$ifdef x86}
pushedfpu, pushedfpu,
{$endif i386} {$endif x86}
isjump : boolean; isjump : boolean;
otl,ofl : tasmlabel; otl,ofl : tasmlabel;
begin begin
@ -115,7 +115,7 @@ interface
current_procinfo.CurrFalseLabel:=ofl; current_procinfo.CurrFalseLabel:=ofl;
end; end;
{$ifdef i386} {$ifdef x86}
{ are too few registers free? } { are too few registers free? }
pushedfpu:=false; pushedfpu:=false;
if (left.location.loc=LOC_FPUREGISTER) and if (left.location.loc=LOC_FPUREGISTER) and
@ -124,7 +124,7 @@ interface
location_force_mem(current_asmdata.CurrAsmList,left.location); location_force_mem(current_asmdata.CurrAsmList,left.location);
pushedfpu:=true; pushedfpu:=true;
end; end;
{$endif i386} {$endif x86}
isjump:=(right.expectloc=LOC_JUMP); isjump:=(right.expectloc=LOC_JUMP);
if isjump then if isjump then
@ -142,7 +142,7 @@ interface
current_procinfo.CurrTrueLabel:=otl; current_procinfo.CurrTrueLabel:=otl;
current_procinfo.CurrFalseLabel:=ofl; current_procinfo.CurrFalseLabel:=ofl;
end; end;
{$ifdef i386} {$ifdef x86}
if pushedfpu then if pushedfpu then
begin begin
if use_vectorfpu(left.resultdef) then if use_vectorfpu(left.resultdef) then
@ -165,7 +165,7 @@ interface
toggleflag(nf_swapped); toggleflag(nf_swapped);
end; end;
end; end;
{$endif i386} {$endif x86}
end; end;