aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2012-05-30 08:52:36 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2012-05-30 08:52:36 +0000
commitd6a6a07a680458b416d891f264996369dfd2fc12 (patch)
tree53d15625dc76c77fcaca046c5f6f60de15ec7657 /gcc
parent667c517b378a6e09c4790aa2111492c9609996ba (diff)
downloadgcc-d6a6a07a680458b416d891f264996369dfd2fc12.zip
gcc-d6a6a07a680458b416d891f264996369dfd2fc12.tar.gz
gcc-d6a6a07a680458b416d891f264996369dfd2fc12.tar.bz2
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: r188003
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/explow.c9
2 files changed, 9 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b915e68..0df8c16 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/explow.c b/gcc/explow.c
index 5513a12..be8bf3e 100644
--- a/gcc/explow.c
+++ b/gcc/explow.c
@@ -1579,12 +1579,11 @@ probe_stack_range (HOST_WIDE_INT first, rtx size)
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,
@@ -1592,10 +1591,10 @@ probe_stack_range (HOST_WIDE_INT first, rtx size)
stack_pointer_rtx,
plus_constant (Pmode,
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