alpha combine/schedule conflict

Jeffrey A Law law@cygnus.com
Tue Oct 28 08:31:00 GMT 1997


  In message < 19971027142124.62972@dot.cygnus.com >you write:
  > 
  > --lrZ03NoBR/3+SXJZ
  > Content-Type: text/plain; charset=us-ascii
  > 
  > The attached code produces with -O2
  > 
  >   ;; Start of basic block 10, registers live: 15 [$15] 30 [$30] 63 [FP] 68 
  > 69 72
  >   (insn 553 145 187 (use (reg:DI 133)) -1 (nil)
  >       (expr_list:REG_DEAD (reg:DI 133)
  >           (nil)))
  > 
  > emitted from 
  > 
  > #2  0x1201a3048 in distribute_notes () at ../../egcs/gcc/combine.c:11257
  > #3  0x12017bd84 in try_combine () at ../../egcs/gcc/combine.c:2260
  > #4  0x120176300 in combine_instructions () at ../../egcs/gcc/combine.c:597
  > 
  > There are no other references to reg 133.  Schedule then aborts at
  > 
  > #1  0x1201f4498 in schedule_block () at ../../egcs/gcc/sched.c:3443
  > 
  > because it has a REG_DEAD note it doesn't know what to do with.
  > 
  > What is the correct fix -- teach distribute_notes not to emit the
  > use if there are no other references to the reg at all, or to teach
  > schedule_block not to barf?
This may be related to a problem Jim tried to fix earlier.

Look for "optimization bug" in the Sept archives.  There should be messages
from Weiwen Liu, Jim Wilson & myself.  Jim had a patch, but apparently it
didn't work.

Jeff



More information about the Gcc mailing list