aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2016-03-12 11:32:54 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2016-03-12 11:32:54 +0000
commit0529235de5d3a6015a1031f2761d1580cc8c20fa (patch)
treeaa5518b7e4f38b4b97980697060af4ff059ecb56 /gcc
parent3f1e5d3afe4d01a277747fe74fc01859139576ca (diff)
downloadgcc-0529235de5d3a6015a1031f2761d1580cc8c20fa.zip
gcc-0529235de5d3a6015a1031f2761d1580cc8c20fa.tar.gz
gcc-0529235de5d3a6015a1031f2761d1580cc8c20fa.tar.bz2
re PR ada/70017 (c52103x and c52104x test failure on s390x)
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. From-SVN: r234160
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/calls.c4
-rw-r--r--gcc/explow.c2
3 files changed, 11 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 6fd40f5..0ee79e0 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/calls.c b/gcc/calls.c
index 8f573b8..7b28f43 100644
--- a/gcc/calls.c
+++ b/gcc/calls.c
@@ -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;
diff --git a/gcc/explow.c b/gcc/explow.c
index cd7c568..249318f 100644
--- a/gcc/explow.c
+++ b/gcc/explow.c
@@ -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);
}