mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-21 15:49:26 +02:00
* let the operation do the type conversion for x87 floating point operations
git-svn-id: trunk@43867 -
This commit is contained in:
parent
89a961f960
commit
fca4d3315b
@ -77,7 +77,7 @@ unit nx86add;
|
||||
symconst,symdef,
|
||||
cgobj,hlcgobj,cgx86,cga,cgutils,
|
||||
tgobj,ncgutil,
|
||||
ncon,nset,ninl,
|
||||
ncon,nset,ninl,ncnv,
|
||||
defutil,
|
||||
htypechk;
|
||||
|
||||
@ -1292,7 +1292,7 @@ unit nx86add;
|
||||
ops_rdiv: array[boolean] of TAsmOp = (A_FDIVRP,A_FDIVR);
|
||||
var
|
||||
op : TAsmOp;
|
||||
refnode : tnode;
|
||||
refnode, hp: tnode;
|
||||
hasref : boolean;
|
||||
begin
|
||||
if use_vectorfpu(resultdef) then
|
||||
@ -1304,6 +1304,22 @@ unit nx86add;
|
||||
exit;
|
||||
end;
|
||||
|
||||
{ can the operation do the conversion? }
|
||||
if (left.nodetype=typeconvn) and (is_double(ttypeconvnode(left).left.resultdef) or is_single(ttypeconvnode(left).left.resultdef)) then
|
||||
begin
|
||||
hp:=left;
|
||||
left:=ttypeconvnode(left).left;
|
||||
ttypeconvnode(hp).left:=nil;
|
||||
hp.Free;
|
||||
end;
|
||||
if (right.nodetype=typeconvn) and (is_double(ttypeconvnode(right).left.resultdef) or is_single(ttypeconvnode(right).left.resultdef)) then
|
||||
begin
|
||||
hp:=right;
|
||||
right:=ttypeconvnode(right).left;
|
||||
ttypeconvnode(hp).left:=nil;
|
||||
hp.Free;
|
||||
end;
|
||||
|
||||
pass_left_right;
|
||||
prepare_x87_locations(refnode);
|
||||
hasref:=assigned(refnode);
|
||||
|
Loading…
Reference in New Issue
Block a user