diff options
author | ebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-11-10 20:45:25 +0000 |
---|---|---|
committer | ebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-11-10 20:45:25 +0000 |
commit | d1b9226497e79115b89c6dc54ea8d5bb6cb077c8 (patch) | |
tree | c3c5f7e26211053f186e7a889a1713c799a96f25 /gcc/function.c | |
parent | e6cb6fbb4b5b707dd132b22a1d80ec9011ef4c8d (diff) | |
download | gcc-d1b9226497e79115b89c6dc54ea8d5bb6cb077c8.tar.gz |
PR target/10127
PR ada/20548
* expr.h (anti_adjust_stack_and_probe): Declare.
* explow.c (anti_adjust_stack_and_probe): Make global, add ADJUST_BACK
parameter and rewrite head comment.
(allocate_dynamic_stack_space): Adjust call to above function.
* function.c (expand_function_end): Handle STACK_CHECK_MOVING_SP.
* tree.h (dwarf2out_args_size): Delete.
* dwarf2out.c (dwarf2out_args_size): Make static and move around.
(dwarf2out_args_size_adjust): Delete prototype and move around.
(dwarf2out_frame_debug_expr): Do not record arg size adjustments for
ACCUMULATE_OUTGOING_ARGS targets.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@154079 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/function.c')
-rw-r--r-- | gcc/function.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/gcc/function.c b/gcc/function.c index d5963430c73..ca578892869 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -4642,9 +4642,12 @@ expand_function_end (void) for (insn = get_insns (); insn; insn = NEXT_INSN (insn)) if (CALL_P (insn)) { + rtx max_frame_size = GEN_INT (STACK_CHECK_MAX_FRAME_SIZE); start_sequence (); - probe_stack_range (STACK_OLD_CHECK_PROTECT, - GEN_INT (STACK_CHECK_MAX_FRAME_SIZE)); + if (STACK_CHECK_MOVING_SP) + anti_adjust_stack_and_probe (max_frame_size, true); + else + probe_stack_range (STACK_OLD_CHECK_PROTECT, max_frame_size); seq = get_insns (); end_sequence (); emit_insn_before (seq, stack_check_probe_note); |