From 11044f6690c12aa40ed84655c9949e0e3ab16bd1 Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Thu, 17 Jul 1997 11:25:54 -0400 Subject: [PATCH] (expand_function_end): If function is non-leaf and stack checking is requested, emit needed probes. From-SVN: r14470 --- gcc/function.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/gcc/function.c b/gcc/function.c index b2468dec5bc..582c4cabf88 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -5494,6 +5494,26 @@ expand_function_end (filename, line, end_bindings) emit_insns_before (seq, tail_recursion_reentry); } + /* If we are doing stack checking and this function makes calls, + do a stack probe at the start of the function to ensure we have enough + space for another stack frame. */ + if (flag_stack_check && ! STACK_CHECK_BUILTIN) + { + rtx insn, seq; + + for (insn = get_insns (); insn; insn = NEXT_INSN (insn)) + if (GET_CODE (insn) == CALL_INSN) + { + start_sequence (); + probe_stack_range (STACK_CHECK_PROTECT, + GEN_INT (STACK_CHECK_MAX_FRAME_SIZE)); + seq = get_insns (); + end_sequence (); + emit_insns_before (seq, tail_recursion_reentry); + break; + } + } + /* Warn about unused parms if extra warnings were specified. */ if (warn_unused && extra_warnings) { -- 2.30.2