gcc-2.95 19990627 irix6 bootstrap fails with "-O3 -funroll-all-loops"

Jim Wilson wilson@cygnus.com
Thu Jul 1 15:38:00 GMT 1999


Here is a quick fix that should be safe enough for gcc 2.95.
I started a bootstrap to test it, but it will quite a while to complete.

Thu Jul  1 15:20:30 1999  Jim Wilson  <wilson@cygnus.com>

	* unroll.c (unroll_loop): Don't delete NOTE_INSN_DELETED_LABEL notes.

Index: unroll.c
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/gcc/unroll.c,v
retrieving revision 1.57
diff -p -r1.57 unroll.c
*** unroll.c	1999/05/05 15:47:48	1.57
--- unroll.c	1999/07/01 22:24:41
*************** unroll_loop (loop_end, insn_count, loop_
*** 1262,1268 ****
    insn = NEXT_INSN (copy_start);
    while (insn != safety_label)
      {
!       if (insn != start_label)
  	insn = delete_insn (insn);
        else
  	insn = NEXT_INSN (insn);
--- 1262,1274 ----
    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.  */
!       if (insn != start_label
! 	  && ! (GET_CODE (insn) == NOTE
! 		&& NOTE_LINE_NUMBER (insn) == NOTE_INSN_DELETED_LABEL))
  	insn = delete_insn (insn);
        else
  	insn = NEXT_INSN (insn);


More information about the Gcc-bugs mailing list