summaryrefslogtreecommitdiff
path: root/compiler/paramgr.pas
diff options
context:
space:
mode:
authorflorian <florian@3ad0048d-3df7-0310-abae-a5850022a9f2>2011-04-10 19:20:48 +0000
committerflorian <florian@3ad0048d-3df7-0310-abae-a5850022a9f2>2011-04-10 19:20:48 +0000
commit160cc1e115eeb75638dce6effdd16b2bc810ddb4 (patch)
treeb791a95695a7cf674e61a6153139c6f9c6c491fa /compiler/paramgr.pas
parent3843727e74b31bbf2a34e7e3b89ee422269f770e (diff)
parent413a6aa6469e6c297780217a27ca91363c637944 (diff)
downloadfpc-avr.tar.gz
* rebase to trunk@17295avr
git-svn-id: http://svn.freepascal.org/svn/fpc/branches/avr@17296 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'compiler/paramgr.pas')
-rw-r--r--compiler/paramgr.pas6
1 files changed, 4 insertions, 2 deletions
diff --git a/compiler/paramgr.pas b/compiler/paramgr.pas
index 0e844da786..8fde613a00 100644
--- a/compiler/paramgr.pas
+++ b/compiler/paramgr.pas
@@ -366,7 +366,8 @@ implementation
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) }
{ 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
(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
@@ -382,7 +383,8 @@ implementation
newparaloc^.register:=cg.getmmregister(list,paraloc^.size);
LOC_REFERENCE :
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
duplicatecgparaloc(paraloc,newparaloc)
else