OSDN Git Service

* explow.c (probe_stack_range): Restore simple control flow and stop
authorebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 30 May 2012 08:53:13 +0000 (08:53 +0000)
committerebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 30 May 2012 08:53:13 +0000 (08:53 +0000)
again when the probe cannot be generated if HAVE_check_stack.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@188004 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/explow.c

index 8cc1cb2..a6b394d 100644 (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
 2012-05-30  Jakub Jelinek  <jakub@redhat.com>
 
        PR rtl-optimization/53519
index 11dffed..a635c7f 100644 (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);
                                                 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
     }
 
   /* 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)));
     {
       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);
       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
 
     }
 #endif