diff options
author | Jim Wilson <wilson@cygnus.com> | 2000-09-01 22:22:54 +0000 |
---|---|---|
committer | Jim Wilson <wilson@gcc.gnu.org> | 2000-09-01 15:22:54 -0700 |
commit | ca3920adb2a8121fbb38100ebb8fde88015a49ba (patch) | |
tree | 5d9506403a0ae211f76c9d2f6407a593c0046979 /gcc/calls.c | |
parent | 3c786c6945296d79a0d5f1799994aeb728aef083 (diff) | |
download | gcc-ca3920adb2a8121fbb38100ebb8fde88015a49ba.zip gcc-ca3920adb2a8121fbb38100ebb8fde88015a49ba.tar.gz gcc-ca3920adb2a8121fbb38100ebb8fde88015a49ba.tar.bz2 |
Eliminate false DV warnings for predicated calls to noreturn functions.
* calls.c (emit_call_1): Add REG_NORETURN note to call if ECF_NORETURN.
* combine.c (distribute_notes): Handle REG_NORETURN.
* rtl.c (reg_note_name): Add REG_NORETURN.
* rtl.h (enum reg_note): Likewise.
* config/ia64/ia64-protos.h (emit_safe_across_calls): Renamed from
ia64_file_start.
* config/ia64/ia64.c (emit_safe_across_calls): Likewise.
(rtx_needs_barrier): Handle unspec_volatile 8 and 9.
(emit_predicate_relation_info): Handle conditional calls with
REG_NORETURN.
* config/ia64/ia64.h (ASM_FILE_START): Call emit_safe_across_calls
instead of ia64_file_start.
* config/ia64/sysv4.h (ASM_FILE_START): Likewise.
* config/ia64/ia64.md (safe_across_calls_all,
save_across_calls_normal): New patterns.
From-SVN: r36107
Diffstat (limited to 'gcc/calls.c')
-rw-r--r-- | gcc/calls.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/calls.c b/gcc/calls.c index ed35daf..6d0a3b2 100644 --- a/gcc/calls.c +++ b/gcc/calls.c @@ -605,6 +605,10 @@ emit_call_1 (funexp, fndecl, funtype, stack_size, rounded_stack_size, REG_NOTES (call_insn) = gen_rtx_EXPR_LIST (REG_EH_REGION, const0_rtx, REG_NOTES (call_insn)); + if (ecf_flags & ECF_NORETURN) + REG_NOTES (call_insn) = gen_rtx_EXPR_LIST (REG_NORETURN, const0_rtx, + REG_NOTES (call_insn)); + SIBLING_CALL_P (call_insn) = ((ecf_flags & ECF_SIBCALL) != 0); /* Restore this now, so that we do defer pops for this call's args |