diff options
author | Richard Henderson <rth@cygnus.com> | 2000-10-07 13:53:21 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2000-10-07 13:53:21 -0700 |
commit | 9a1ba437e83c401c742656a9b3dc6debf816409f (patch) | |
tree | e6c9280ad9279c2c012c17a733ade27da717cd96 /gcc/flow.c | |
parent | 9ab916b8ed43541ad87ded43671f473671370b0b (diff) | |
download | gcc-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/flow.c')
-rw-r--r-- | gcc/flow.c | 10 |
1 files changed, 3 insertions, 7 deletions
@@ -1152,12 +1152,8 @@ make_edges (label_value_list) wouldn't have created the sibling call in the first place. */ if (code == CALL_INSN && SIBLING_CALL_P (insn)) - { - if (! find_reg_note (insn, REG_NORETURN, NULL_RTX)) - make_edge (edge_cache, bb, EXIT_BLOCK_PTR, - EDGE_ABNORMAL | EDGE_ABNORMAL_CALL); - } - else + make_edge (edge_cache, bb, EXIT_BLOCK_PTR, + EDGE_ABNORMAL | EDGE_ABNORMAL_CALL); /* If this is a CALL_INSN, then mark it as reaching the active EH handler for this CALL_INSN. If we're handling asynchronous @@ -1165,7 +1161,7 @@ make_edges (label_value_list) Also mark the CALL_INSN as reaching any nonlocal goto handler. */ - if (code == CALL_INSN || asynchronous_exceptions) + else if (code == CALL_INSN || asynchronous_exceptions) { /* Add any appropriate EH edges. We do this unconditionally since there may be a REG_EH_REGION or REG_EH_RETHROW note |