explow.c (probe_stack_range): Restore simple control flow and stop again when...

* explow.c (probe_stack_range): Restore simple control flow and stop
	again when the probe cannot be generated if HAVE_check_stack.

From-SVN: r188004
This commit is contained in:
Eric Botcazou 2012-05-30 08:53:13 +00:00 committed by Eric Botcazou
parent 96ae3a80a4
commit d0db0358ac
2 changed files with 9 additions and 5 deletions

View File

@ -1,3 +1,8 @@
2012-05-30 Eric Botcazou <ebotcazou@adacore.com>
* explow.c (probe_stack_range): Restore simple control flow and stop
again when the probe cannot be generated if HAVE_check_stack.
2012-05-30 Jakub Jelinek <jakub@redhat.com>
PR rtl-optimization/53519

View File

@ -1564,22 +1564,21 @@ probe_stack_range (HOST_WIDE_INT first, rtx size)
plus_constant (size, first)));
emit_library_call (stack_check_libfunc, LCT_NORMAL, VOIDmode, 1, addr,
Pmode);
return;
}
/* Next see if we have an insn to check the stack. */
#ifdef HAVE_check_stack
if (HAVE_check_stack)
else if (HAVE_check_stack)
{
struct expand_operand ops[1];
rtx addr = memory_address (Pmode,
gen_rtx_fmt_ee (STACK_GROW_OP, Pmode,
stack_pointer_rtx,
plus_constant (size, first)));
bool success;
create_input_operand (&ops[0], addr, Pmode);
if (maybe_expand_insn (CODE_FOR_check_stack, 1, ops))
return;
success = maybe_expand_insn (CODE_FOR_check_stack, 1, ops);
gcc_assert (success);
}
#endif