diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2016-03-12 11:32:54 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2016-03-12 11:32:54 +0000 |
commit | 0529235de5d3a6015a1031f2761d1580cc8c20fa (patch) | |
tree | aa5518b7e4f38b4b97980697060af4ff059ecb56 /gcc | |
parent | 3f1e5d3afe4d01a277747fe74fc01859139576ca (diff) | |
download | gcc-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/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/calls.c | 4 | ||||
-rw-r--r-- | gcc/explow.c | 2 |
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); } |