mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-19 20:39:25 +02:00
* i386: push references with size OS_F64 using less instructions.
git-svn-id: trunk@27300 -
This commit is contained in:
parent
965540eab3
commit
31edfdc05f
@ -200,7 +200,7 @@ unit cgcpu;
|
||||
if use_push(cgpara) then
|
||||
begin
|
||||
{ Record copy? }
|
||||
if (cgpara.size in [OS_NO,OS_F64]) or (size=OS_NO) then
|
||||
if (cgpara.size=OS_NO) or (size=OS_NO) then
|
||||
begin
|
||||
cgpara.check_simple_location;
|
||||
len:=align(cgpara.intsize,cgpara.alignment);
|
||||
@ -212,9 +212,19 @@ unit cgcpu;
|
||||
begin
|
||||
if tcgsize2size[cgpara.size]<>tcgsize2size[size] then
|
||||
internalerror(200501161);
|
||||
{ We need to push the data in reverse order,
|
||||
therefor we use a recursive algorithm }
|
||||
pushdata(cgpara.location,0);
|
||||
if (cgpara.size=OS_F64) then
|
||||
begin
|
||||
href:=r;
|
||||
make_simple_ref(list,href);
|
||||
inc(href.offset,4);
|
||||
list.concat(taicpu.op_ref(A_PUSH,S_L,href));
|
||||
dec(href.offset,4);
|
||||
list.concat(taicpu.op_ref(A_PUSH,S_L,href));
|
||||
end
|
||||
else
|
||||
{ We need to push the data in reverse order,
|
||||
therefor we use a recursive algorithm }
|
||||
pushdata(cgpara.location,0);
|
||||
end
|
||||
end
|
||||
else
|
||||
|
Loading…
Reference in New Issue
Block a user