diff options
| author | wilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-07-09 19:12:30 +0000 |
|---|---|---|
| committer | wilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-07-09 19:12:30 +0000 |
| commit | 2922db0c733a747b9d581889cd1b3a98fdcfec9c (patch) | |
| tree | 7d01a74ffac5e34fc5f2ce22bb3c32e2dcf79980 | |
| parent | f5800c0b41beac43a3dba4a3a112ab51420ce3c4 (diff) | |
| download | ppe42-gcc-2922db0c733a747b9d581889cd1b3a98fdcfec9c.tar.gz ppe42-gcc-2922db0c733a747b9d581889cd1b3a98fdcfec9c.zip | |
Fix -g -O3 -funroll-all-loops irix6 bootstrap failure reported by Kaveh Ghazi.
* unroll.c (unroll_loops): Don't delete named CODE_LABELs.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@28048 138bc75d-0d04-0410-961f-82ee72b054a4
| -rw-r--r-- | gcc/ChangeLog | 4 | ||||
| -rw-r--r-- | gcc/unroll.c | 13 |
2 files changed, 13 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d54b8f61c77..d2b35831e27 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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 diff --git a/gcc/unroll.c b/gcc/unroll.c index 9ac883a1d49..d6dbcf0fbc1 100644 --- a/gcc/unroll.c +++ b/gcc/unroll.c @@ -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); |

