Fix -g -O3 -funroll-all-loops irix6 bootstrap failure reported by Kaveh Ghazi.

* unroll.c (unroll_loops): Don't delete named CODE_LABELs.

From-SVN: r28048
This commit is contained in:
Jim Wilson 1999-07-09 19:12:30 +00:00 committed by Jim Wilson
parent c3c7ea1f56
commit 570621d5ba
2 changed files with 13 additions and 4 deletions

View File

@ -1,3 +1,7 @@
Fri Jul 9 19:08:55 1999 Jim Wilson <wilson@cygnus.com>
* unroll.c (unroll_loops): Don't delete named CODE_LABELs.
Fri Jul 9 18:54:18 1999 Felix Lee <flee@cygnus.com>
* config/i960/i960.c (ret_label): Change asm label from "LR:" to

View File

@ -1262,11 +1262,16 @@ unroll_loop (loop_end, insn_count, loop_start, end_insert_before,
insn = NEXT_INSN (copy_start);
while (insn != safety_label)
{
/* ??? We can't delete a NOTE_INSN_DELETED_LABEL unless we fix the
DECL_RTL field of the associated LABEL_DECL to point to (one of)
the new copies of the label. Otherwise, we hit an abort in
dwarfout.c/dwarf2out.c. */
/* ??? Don't delete named code labels. They will be deleted when the
jump that references them is deleted. Otherwise, we end up deleting
them twice, which causes them to completely disappear instead of turn
into NOTE_INSN_DELETED_LABEL notes. This in turn causes aborts in
dwarfout.c/dwarf2out.c. We could perhaps fix the dwarf*out.c files
to handle deleted labels instead. Or perhaps fix DECL_RTL of the
associated LABEL_DECL to point to one of the new label instances. */
/* ??? Likewise, we can't delete a NOTE_INSN_DELETED_LABEL note. */
if (insn != start_label
&& ! (GET_CODE (insn) == CODE_LABEL && LABEL_NAME (insn))
&& ! (GET_CODE (insn) == NOTE
&& NOTE_LINE_NUMBER (insn) == NOTE_INSN_DELETED_LABEL))
insn = delete_insn (insn);