alpha combine/schedule conflict
Richard Henderson
rth@cygnus.com
Tue Oct 28 15:42:00 GMT 1997
On Mon, Oct 27, 1997 at 09:27:50PM -0800, Jim Wilson wrote:
> This is a known problem. Combine is emitting a lot of USE insns that it
> should not be. I tried coming up with a patch, but it is known to be
> incomplete/incorrect.
It looks to me that it solved the USE problem in the test case, but
exposed a new bug also related to REG_DEAD notes. For the test case
I posted at the beginning of this thread I get
(insn 201 199 202 (set (reg/v:DI 71)
(const_int -1)) 252 {movdi-1} (nil)
(nil))
(insn 202 201 205 (set (reg/v:DI 71)
(plus:DI (reg/v:DI 71)
(const_int 536870912))) 7 {adddi3} (insn_list 201 (nil))
(expr_list:REG_DEAD (reg/v:DI 71)
(expr_list:REG_EQUAL (const_int 536870911)
(nil))))
[...]
(insn 209 207 210 (set (reg:DI 137)
(leu:DI (reg:DI 135)
(reg/v:DI 71))) 131 {subdf3+4} (insn_list 202 (insn_list 207 (nil)))
(expr_list:REG_DEAD (reg/v:DI 71)
(nil)))
It appears to be simply due to incomplete checking for elim_i1. The
attached patch (combined with yours because I'm lazy) solves the problem
for the test case. A sanity three-stage is still going, but I'll let
you know.
r~
More information about the Gcc
mailing list