* 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:
Jonas Maebe 2011-03-18 18:32:02 +00:00
parent 3d203220a5
commit 3d3a42b911

View File

@ -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