mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-02 14:10:21 +02:00
* improvement to r16050 for non-fixed stack targets: they never have to use
a temporary parameter location, since calls cannot overwrite parameters already on the stack in that case (it will just grow) git-svn-id: trunk@17144 -
This commit is contained in:
parent
3d203220a5
commit
3d3a42b911
@ -366,7 +366,8 @@ implementation
|
|||||||
i386 isn't affected anyways because it uses the stack to push parameters
|
i386 isn't affected anyways because it uses the stack to push parameters
|
||||||
on arm it reduces executable size of the compiler by 2.1 per cent (FK) }
|
on arm it reduces executable size of the compiler by 2.1 per cent (FK) }
|
||||||
{ Does it fit a register? }
|
{ Does it fit a register? }
|
||||||
if (not can_use_final_stack_loc or
|
if ((not can_use_final_stack_loc and
|
||||||
|
use_fixed_stack) or
|
||||||
not is_stack_paraloc(paraloc)) and
|
not is_stack_paraloc(paraloc)) and
|
||||||
(len<=sizeof(pint)) and
|
(len<=sizeof(pint)) and
|
||||||
(paraloc^.size in [OS_8,OS_16,OS_32,OS_64,OS_128,OS_S8,OS_S16,OS_S32,OS_S64,OS_S128]) then
|
(paraloc^.size in [OS_8,OS_16,OS_32,OS_64,OS_128,OS_S8,OS_S16,OS_S32,OS_S64,OS_S128]) then
|
||||||
@ -382,7 +383,8 @@ implementation
|
|||||||
newparaloc^.register:=cg.getmmregister(list,paraloc^.size);
|
newparaloc^.register:=cg.getmmregister(list,paraloc^.size);
|
||||||
LOC_REFERENCE :
|
LOC_REFERENCE :
|
||||||
begin
|
begin
|
||||||
if can_use_final_stack_loc and
|
if (can_use_final_stack_loc or
|
||||||
|
not use_fixed_stack) and
|
||||||
is_stack_paraloc(paraloc) then
|
is_stack_paraloc(paraloc) then
|
||||||
duplicatecgparaloc(paraloc,newparaloc)
|
duplicatecgparaloc(paraloc,newparaloc)
|
||||||
else
|
else
|
||||||
|
Loading…
Reference in New Issue
Block a user