aboutsummaryrefslogtreecommitdiff
path: root/gcc/calls.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@cygnus.com>2000-10-07 13:53:21 -0700
committerRichard Henderson <rth@gcc.gnu.org>2000-10-07 13:53:21 -0700
commit9a1ba437e83c401c742656a9b3dc6debf816409f (patch)
treee6c9280ad9279c2c012c17a733ade27da717cd96 /gcc/calls.c
parent9ab916b8ed43541ad87ded43671f473671370b0b (diff)
downloadgcc-9a1ba437e83c401c742656a9b3dc6debf816409f.zip
gcc-9a1ba437e83c401c742656a9b3dc6debf816409f.tar.gz
gcc-9a1ba437e83c401c742656a9b3dc6debf816409f.tar.bz2
calls.c (expand_call): Disallow sibcalls to noreturn functions.
* calls.c (expand_call): Disallow sibcalls to noreturn functions. * flow.c (make_edges): Revert last change. * config/alpha/alpha.h (FUNCTION_OK_FOR_SIBCALL): Don't test TREE_THIS_VOLATILE. * config/pa/pa.h (FUNCTION_OK_FOR_SIBCALL): Likewise. From-SVN: r36781
Diffstat (limited to 'gcc/calls.c')
-rw-r--r--gcc/calls.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/gcc/calls.c b/gcc/calls.c
index 2163e51..775d03d 100644
--- a/gcc/calls.c
+++ b/gcc/calls.c
@@ -2463,6 +2463,7 @@ expand_call (exp, target, ignore)
before the sibcall_epilogue. */
|| fndecl == NULL_TREE
|| (flags & (ECF_RETURNS_TWICE | ECF_LONGJMP))
+ || TREE_THIS_VOLATILE (fndecl)
|| !FUNCTION_OK_FOR_SIBCALL (fndecl)
/* If this function requires more stack slots than the current
function, we cannot change it into a sibling call. */