mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-05 05:28:38 +02:00
* also align esp for all procedures/functions declared "assembler",
since they may do a call. If you don't want that to happen, use the nostackframe directive (i386-darwin only) git-svn-id: trunk@2896 -
This commit is contained in:
parent
435aee2398
commit
9125d0c189
@ -262,7 +262,10 @@ unit cgcpu;
|
|||||||
stacksize:=current_procinfo.calc_stackframe_size;
|
stacksize:=current_procinfo.calc_stackframe_size;
|
||||||
if (target_info.system = system_i386_darwin) and
|
if (target_info.system = system_i386_darwin) and
|
||||||
((stacksize <> 0) or
|
((stacksize <> 0) or
|
||||||
(pi_do_call in current_procinfo.flags)) then
|
(pi_do_call in current_procinfo.flags) or
|
||||||
|
{ can't detect if a call in this case -> use nostackframe }
|
||||||
|
{ if you (think you) know what you are doing }
|
||||||
|
(po_assembler in current_procinfo.procdef.procoptions)) then
|
||||||
stacksize := align(stacksize+sizeof(aint),16) - sizeof(aint);
|
stacksize := align(stacksize+sizeof(aint),16) - sizeof(aint);
|
||||||
if (stacksize<>0) then
|
if (stacksize<>0) then
|
||||||
cg.a_op_const_reg(list,OP_ADD,OS_ADDR,stacksize,current_procinfo.framepointer);
|
cg.a_op_const_reg(list,OP_ADD,OS_ADDR,stacksize,current_procinfo.framepointer);
|
||||||
|
@ -1911,7 +1911,8 @@ unit cgx86;
|
|||||||
if (localsize<>0) or
|
if (localsize<>0) or
|
||||||
((target_info.system = system_i386_darwin) and
|
((target_info.system = system_i386_darwin) and
|
||||||
(stackmisalignment <> 0) and
|
(stackmisalignment <> 0) and
|
||||||
(pi_do_call in current_procinfo.flags)) then
|
((pi_do_call in current_procinfo.flags) or
|
||||||
|
(po_assembler in current_procinfo.procdef.procoptions))) then
|
||||||
begin
|
begin
|
||||||
if (target_info.system = system_i386_darwin) then
|
if (target_info.system = system_i386_darwin) then
|
||||||
localsize := align(localsize+stackmisalignment,16)-stackmisalignment;
|
localsize := align(localsize+stackmisalignment,16)-stackmisalignment;
|
||||||
|
Loading…
Reference in New Issue
Block a user