diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a16b583d4c8..59930057fd7 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2004-02-27 Dale Johannesen + * 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 * config/h8300/fixunssfsi.c (__fixunssfsi): Enable on H8/300 diff --git a/gcc/combine.c b/gcc/combine.c index b7cad3fcbad..e6656e0671f 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -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; diff --git a/gcc/config/darwin-protos.h b/gcc/config/darwin-protos.h index 66b015b9b5b..28660339488 100644 --- a/gcc/config/darwin-protos.h +++ b/gcc/config/darwin-protos.h @@ -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); diff --git a/gcc/config/darwin.c b/gcc/config/darwin.c index 978fdde7e49..87523fe6b9e 100644 --- a/gcc/config/darwin.c +++ b/gcc/config/darwin.c @@ -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. */ diff --git a/gcc/config/darwin.h b/gcc/config/darwin.h index 0a0c2d145eb..83c7a8c8bdf 100644 --- a/gcc/config/darwin.h +++ b/gcc/config/darwin.h @@ -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) \