2004-02-27 Dale Johannesen <dalej@apple.com>
authordalej <dalej@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 27 Feb 2004 23:48:00 +0000 (23:48 +0000)
committerdalej <dalej@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 27 Feb 2004 23:48:00 +0000 (23:48 +0000)
        * config/darwin.c (machopic_output_possible_stub_label):  Remove.
        config/darwin-protos.h:  Ditto.
        config/darwin.h:  Remove call to it.
        * combine.c (distribute_notes): Do not place a REG_DEAD note
        when value is both set and used.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@78590 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/combine.c
gcc/config/darwin-protos.h
gcc/config/darwin.c
gcc/config/darwin.h

index a16b583..5993005 100644 (file)
@@ -1,3 +1,10 @@
+2004-02-27  Dale Johannesen  <dalej@apple.com>
+       * config/darwin.c (machopic_output_possible_stub_label):  Remove.
+       config/darwin-protos.h:  Ditto.
+       config/darwin.h:  Remove call to it.
+       * combine.c (distribute_notes): Do not place a REG_DEAD note
+       when value is both set and used.
+
 2004-02-27  Kazu Hirata  <kazu@cs.umass.edu>
 
        * config/h8300/fixunssfsi.c (__fixunssfsi): Enable on H8/300
index b7cad3f..e6656e0 100644 (file)
@@ -12729,26 +12729,16 @@ distribute_notes (rtx notes, rtx from_insn, rtx i3, rtx i2)
                            }
 #endif
                        }
-                     /* If the register is both set and used here, put the
-                        REG_DEAD note here, but place a REG_UNUSED note
-                        here too unless there already is one.  */
-                     else if (reg_referenced_p (XEXP (note, 0),
-                                                PATTERN (tem)))
-                       {
-                         place = tem;
-
-                         if (! find_regno_note (tem, REG_UNUSED,
-                                                REGNO (XEXP (note, 0))))
-                           REG_NOTES (tem)
-                             = gen_rtx_EXPR_LIST (REG_UNUSED, XEXP (note, 0),
-                                                  REG_NOTES (tem));
-                       }
                      else
                        {
                          PUT_REG_NOTE_KIND (note, REG_UNUSED);
 
                          /*  If there isn't already a REG_UNUSED note, put one
-                             here.  */
+                             here.  Do not place a REG_DEAD note, even if
+                             the register is also used here; that would not
+                             match the algorithm used in lifetime analysis
+                             and can cause the consistency check in the
+                             scheduler to fail.  */
                          if (! find_regno_note (tem, REG_UNUSED,
                                                 REGNO (XEXP (note, 0))))
                            place = tem;
index 66b015b..2866033 100644 (file)
@@ -65,8 +65,6 @@ extern const char *darwin_strip_name_encoding (const char *);
 
 extern void machopic_finish (FILE *);
 
-extern void machopic_output_possible_stub_label (FILE *, const char*);
-
 extern void darwin_exception_section (void);
 extern void darwin_eh_frame_section (void);
 extern void machopic_select_section (tree, int, unsigned HOST_WIDE_INT);
index 978fdde..87523fe 100644 (file)
@@ -1096,37 +1096,6 @@ update_non_lazy_ptrs (const char *name)
     }
 }
 
-/* Function NAME is being defined, and its label has just been output.
-   If there's already a reference to a stub for this function, we can
-   just emit the stub label now and we don't bother emitting the stub later.  */
-
-void
-machopic_output_possible_stub_label (FILE *file, const char *name)
-{
-  tree temp;
-
-  /* Ensure we're looking at a section-encoded name.  */
-  if (name[0] != '!' || (name[1] != 't' && name[1] != 'T'))
-    return;
-
-  for (temp = machopic_stubs;
-       temp != NULL_TREE;
-       temp = TREE_CHAIN (temp))
-    {
-      const char *sym_name;
-
-      sym_name = IDENTIFIER_POINTER (TREE_VALUE (temp));
-      if (sym_name[0] == '!' && (sym_name[1] == 'T' || sym_name[1] == 't')
-         && ! strcmp (name+2, sym_name+2))
-       {
-         ASM_OUTPUT_LABEL (file, IDENTIFIER_POINTER (TREE_PURPOSE (temp)));
-         /* Avoid generating a stub for this.  */
-         TREE_USED (temp) = 0;
-         break;
-       }
-    }
-}
-
 /* Scan the list of stubs and update any recorded names whose
    stripped name matches the argument.  */
 
index 0a0c2d1..83c7a8c 100644 (file)
@@ -395,9 +395,6 @@ do { text_section ();                                                       \
         || DECL_INITIAL (DECL))                                         \
       (* targetm.encode_section_info) (DECL, DECL_RTL (DECL), false);  \
     ASM_OUTPUT_LABEL (FILE, xname);                                     \
-    /* Avoid generating stubs for functions we've just defined by      \
-       outputting any required stub name label now.  */                        \
-    machopic_output_possible_stub_label (FILE, xname);                 \
   } while (0)
 
 #define ASM_DECLARE_CONSTANT_NAME(FILE, NAME, EXP, SIZE)       \