diff options
-rw-r--r-- | gcc/ChangeLog | 14 | ||||
-rw-r--r-- | gcc/calls.c | 6 | ||||
-rw-r--r-- | gcc/cfgrtl.c | 1 | ||||
-rw-r--r-- | gcc/combine.c | 1 | ||||
-rw-r--r-- | gcc/emit-rtl.c | 1 | ||||
-rw-r--r-- | gcc/recog.c | 1 | ||||
-rw-r--r-- | gcc/reg-notes.def | 3 | ||||
-rw-r--r-- | gcc/rtl.h | 3 | ||||
-rw-r--r-- | gcc/tree-cfg.c | 4 | ||||
-rw-r--r-- | gcc/tree.h | 4 |
10 files changed, 18 insertions, 20 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a0b92190d2b..3df549439f8 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,17 @@ +2005-02-28 Kazu Hirata <kazu@cs.umass.edu> + + * calls.c (emit_call_1): Don't use REG_ALWAYS_RETURN. + (emit_library_call_value_1): Don't use LCT_ALWAYS_RETURN and + REG_ALWAYS_RETURN. + * cfgrtl.c (need_fake_edge_p): Likewise. + * combine.c (distribute_notes): Likewise. + * emit-rtl.c (try_split): Likewise. + * recog.c (peephole2_opimize): Likewise. + * reg-notes.def (ALWAYS_RETURN): Remove. + * rtl.h (LCT_ALWAYS_RETURN): Remove. + * tree-cfg.c (need_fake_edge_p): Don't use ECF_ALWAYS_RETURN. + * tree.h (ECF_ALWAYS_RETURN): Remove. + 2005-02-28 Roger Sayle <roger@eyesopen.com> PR middle-end/19874 diff --git a/gcc/calls.c b/gcc/calls.c index 291f88cb835..c84c903c332 100644 --- a/gcc/calls.c +++ b/gcc/calls.c @@ -395,9 +395,6 @@ emit_call_1 (rtx funexp, tree fntree, tree fndecl ATTRIBUTE_UNUSED, if (ecf_flags & ECF_NORETURN) REG_NOTES (call_insn) = gen_rtx_EXPR_LIST (REG_NORETURN, const0_rtx, REG_NOTES (call_insn)); - if (ecf_flags & ECF_ALWAYS_RETURN) - REG_NOTES (call_insn) = gen_rtx_EXPR_LIST (REG_ALWAYS_RETURN, const0_rtx, - REG_NOTES (call_insn)); if (ecf_flags & ECF_RETURNS_TWICE) { @@ -3234,9 +3231,6 @@ emit_library_call_value_1 (int retval, rtx orgfun, rtx value, case LCT_THROW: flags = ECF_NORETURN; break; - case LCT_ALWAYS_RETURN: - flags = ECF_ALWAYS_RETURN; - break; case LCT_RETURNS_TWICE: flags = ECF_RETURNS_TWICE; break; diff --git a/gcc/cfgrtl.c b/gcc/cfgrtl.c index 8de76449941..1b4eb45417f 100644 --- a/gcc/cfgrtl.c +++ b/gcc/cfgrtl.c @@ -2892,7 +2892,6 @@ need_fake_edge_p (rtx insn) if ((CALL_P (insn) && !SIBLING_CALL_P (insn) && !find_reg_note (insn, REG_NORETURN, NULL) - && !find_reg_note (insn, REG_ALWAYS_RETURN, NULL) && !CONST_OR_PURE_CALL_P (insn))) return true; diff --git a/gcc/combine.c b/gcc/combine.c index 73b12bb4f0c..5d34dfa83f5 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -11886,7 +11886,6 @@ distribute_notes (rtx notes, rtx from_insn, rtx i3, rtx i2) } break; - case REG_ALWAYS_RETURN: case REG_NORETURN: case REG_SETJMP: /* These notes must remain with the call. It should not be diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c index 37bd66587d8..137f0b7d383 100644 --- a/gcc/emit-rtl.c +++ b/gcc/emit-rtl.c @@ -3206,7 +3206,6 @@ try_split (rtx pat, rtx trial, int last) case REG_NORETURN: case REG_SETJMP: - case REG_ALWAYS_RETURN: insn = insn_last; while (insn != NULL_RTX) { diff --git a/gcc/recog.c b/gcc/recog.c index 28b241075ab..1c0e27e27b3 100644 --- a/gcc/recog.c +++ b/gcc/recog.c @@ -3070,7 +3070,6 @@ peephole2_optimize (FILE *dump_file ATTRIBUTE_UNUSED) { case REG_NORETURN: case REG_SETJMP: - case REG_ALWAYS_RETURN: REG_NOTES (new_insn) = gen_rtx_EXPR_LIST (REG_NOTE_KIND (note), XEXP (note, 0), diff --git a/gcc/reg-notes.def b/gcc/reg-notes.def index 85a122f6532..16124be7795 100644 --- a/gcc/reg-notes.def +++ b/gcc/reg-notes.def @@ -167,6 +167,3 @@ REG_NOTE (CROSSING_JUMP) /* This kind of note is generated at each to `setjmp', and similar functions that can return twice. */ REG_NOTE (SETJMP) - -/* Indicate calls that always returns. */ -REG_NOTE (ALWAYS_RETURN) diff --git a/gcc/rtl.h b/gcc/rtl.h index 689e13fb07e..9042e03729f 100644 --- a/gcc/rtl.h +++ b/gcc/rtl.h @@ -2099,8 +2099,7 @@ enum libcall_type LCT_PURE_MAKE_BLOCK = 4, LCT_NORETURN = 5, LCT_THROW = 6, - LCT_ALWAYS_RETURN = 7, - LCT_RETURNS_TWICE = 8 + LCT_RETURNS_TWICE = 7 }; extern void emit_library_call (rtx, enum libcall_type, enum machine_mode, int, diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c index 9e87dbfccb0..2ebc595624e 100644 --- a/gcc/tree-cfg.c +++ b/gcc/tree-cfg.c @@ -5327,7 +5327,7 @@ need_fake_edge_p (tree t) tree call; /* NORETURN and LONGJMP calls already have an edge to exit. - CONST, PURE and ALWAYS_RETURN calls do not need one. + CONST and PURE calls do not need one. We don't currently check for CONST and PURE here, although it would be a good idea, because those attributes are figured out from the RTL in mark_constant_function, and @@ -5335,7 +5335,7 @@ need_fake_edge_p (tree t) leads to different results from -fbranch-probabilities. */ call = get_call_expr_in (t); if (call - && !(call_expr_flags (call) & (ECF_NORETURN | ECF_ALWAYS_RETURN))) + && !(call_expr_flags (call) & ECF_NORETURN)) return true; if (TREE_CODE (t) == ASM_EXPR diff --git a/gcc/tree.h b/gcc/tree.h index 81992f904bd..cb807eba4be 100644 --- a/gcc/tree.h +++ b/gcc/tree.h @@ -3688,10 +3688,8 @@ extern rtx emit_line_note (location_t); /* Nonzero if this is a call to a function that returns with the stack pointer depressed. */ #define ECF_SP_DEPRESSED 256 -/* Nonzero if this call is known to always return. */ -#define ECF_ALWAYS_RETURN 512 /* Create libcall block around the call. */ -#define ECF_LIBCALL_BLOCK 1024 +#define ECF_LIBCALL_BLOCK 512 extern int flags_from_decl_or_type (tree); extern int call_expr_flags (tree); |