]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
calls.c (emit_call_1): Don't use REG_ALWAYS_RETURN.
authorKazu Hirata <kazu@cs.umass.edu>
Mon, 28 Feb 2005 18:18:26 +0000 (18:18 +0000)
committerKazu Hirata <kazu@gcc.gnu.org>
Mon, 28 Feb 2005 18:18:26 +0000 (18:18 +0000)
* 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.

From-SVN: r95690

gcc/ChangeLog
gcc/calls.c
gcc/cfgrtl.c
gcc/combine.c
gcc/emit-rtl.c
gcc/recog.c
gcc/reg-notes.def
gcc/rtl.h
gcc/tree-cfg.c
gcc/tree.h

index a0b92190d2b55f09f1c6c773128028a6c7cf809b..3df549439f8cbb18ce352040727d8d81a75bd02d 100644 (file)
@@ -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
index 291f88cb83572d6417c9c87a2c0ecc3bf8376eaa..c84c903c3326f6b4620a18ac07a08768887d860d 100644 (file)
@@ -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;
index 8de76449941e23d4b5a76d74b95119c9cb44ea35..1b4eb45417f4fd1c664f9bce4da2333198964ae1 100644 (file)
@@ -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;
 
index 73b12bb4f0c5d14ec57273946915432e537d26ce..5d34dfa83f5c34ef30f7729858579d1cf48ac966 100644 (file)
@@ -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
index 37bd66587d818603349c6ed32de42cfe28940f23..137f0b7d383594fc272e0211309d6cf7f1efa2a1 100644 (file)
@@ -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)
            {
index 28b241075ab6bf41000d9ca156422a5738591b96..1c0e27e27b348de72cd3977cc4784cdab377b764 100644 (file)
@@ -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),
index 85a122f65328c7759d1b8ea48fb057446d4c5c73..16124be7795ec1e31e27eea3a92520a9e59bec76 100644 (file)
@@ -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)
index 689e13fb07ee8440a01c0a2e4c00ffbff6d2bf08..9042e03729f83980deb2e78b16f9d7c44e93b325 100644 (file)
--- 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,
index 9e87dbfccb00941078893d38c58692f2cc33239b..2ebc595624ed7f693a419e507d318dfcfba17a22 100644 (file)
@@ -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
index 81992f904bd006ea0a3f48a7f431a8673b70f199..cb807eba4be7feef879ea26a6cf55f5920a9dce7 100644 (file)
@@ -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);