]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
PR ada/70017
authorebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 12 Mar 2016 11:32:54 +0000 (11:32 +0000)
committerebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 12 Mar 2016 11:32:54 +0000 (11:32 +0000)
* calls.c (emit_library_call_value_1): Clear the ECF_NOTHROW flag if
the libcall is LCT_THROW.
* explow.c (probe_stack_range): Pass LCT_THROW to emit_library_call
for the checking routine.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@234160 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/calls.c
gcc/explow.c

index 6fd40f574368f6fd5f6ec50f62f429268cc27ae2..0ee79e0c0a4a921696f79d3c08dbe154eab66716 100644 (file)
@@ -1,3 +1,11 @@
+2016-03-12  Eric Botcazou  <ebotcazou@adacore.com>
+
+       PR ada/70017
+       * calls.c (emit_library_call_value_1): Clear the ECF_NOTHROW flag if
+       the libcall is LCT_THROW.
+       * explow.c (probe_stack_range): Pass LCT_THROW to emit_library_call
+       for the checking routine.
+
 2016-03-11  Michael Meissner  <meissner@linux.vnet.ibm.com>
 
        PR target/70131
index 8f573b83430c52955e215e7aabcdb55cb3a76d6a..7b28f4315ab59655d3af67b00bbc42863248e76a 100644 (file)
@@ -3852,7 +3852,7 @@ emit_library_call_value_1 (int retval, rtx orgfun, rtx value,
   reg_parm_stack_space = REG_PARM_STACK_SPACE ((tree) 0);
 #endif
 
-  /* By default, library functions can not throw.  */
+  /* By default, library functions cannot throw.  */
   flags = ECF_NOTHROW;
 
   switch (fn_type)
@@ -3869,7 +3869,7 @@ emit_library_call_value_1 (int retval, rtx orgfun, rtx value,
       flags |= ECF_NORETURN;
       break;
     case LCT_THROW:
-      flags = ECF_NORETURN;
+      flags &= ~ECF_NOTHROW;
       break;
     case LCT_RETURNS_TWICE:
       flags = ECF_RETURNS_TWICE;
index cd7c56813f30e7734b31f6597d7fb4a9f45a3dfc..249318f44b588d924deb491cd8e1abac62bf1d90 100644 (file)
@@ -1566,7 +1566,7 @@ probe_stack_range (HOST_WIDE_INT first, rtx size)
                                                 stack_pointer_rtx,
                                                 plus_constant (Pmode,
                                                                size, first)));
-      emit_library_call (stack_check_libfunc, LCT_NORMAL, VOIDmode, 1, addr,
+      emit_library_call (stack_check_libfunc, LCT_THROW, VOIDmode, 1, addr,
                         Pmode);
     }