alpha combine/schedule conflict

Richard Henderson rth@cygnus.com
Mon Oct 27 16:30:00 GMT 1997


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?


r~


More information about the Gcc mailing list