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