Does anyone recognize this one?
Donn Terry
donn@interix.com
Wed Feb 3 10:03:00 GMT 1999
Before I try to understand what went wrong, does this ring a bell
with anyone? (Any clues appreciated before I try to find it.)
This does not occur on Intel with the same egcs source.
Alpha, bootstrap compile: global.c fails because REGISTER_LIVE_LENGTH
of a pseudo is 0. Looking at the rtl, that's a valid complaint,
as the register (actually several) are used in only one insn
(uselessly). (It fails while compiling _muldi3, so it's the
first use of the new compiler, and probably reflects a fairly
basic sort of problem.)
In cse2, the RTL is:
(insn 54 52 55 (set (reg:DI 105)
(ltu:DI (reg:DI 103)
(reg:DI 104))) 161 {sqrtdf2+1} (nil)
(nil))
(jump_insn 55 54 56 (set (pc)
(if_then_else (eq (reg:DI 105)
(const_int 0))
(label_ref 60)
(pc))) 195 {umindi3+2} (nil)
(nil))
In flow (bp isn't run):
(note 54 52 55 "" NOTE_INSN_DELETED)
(jump_insn 55 54 56 (set (pc)
(if_then_else (eq (reg:DI 105)
(const_int 0))
(label_ref 60)
(pc))) 195 {umindi3+2} (nil)
(expr_list:REG_DEAD (reg:DI 105)
(nil)))
;; End of basic block 0
Somehow insn 54 got discarded (possibly validly?) but 55 is
still around, now accessing a trash register (105).
(There are several other registers with similar problems.)
Donn
--
===================================================
Donn Terry mailto:donn@interix.com
Softway Systems, Inc. http://www.interix.com
2850 McClelland Dr, Ste. 1800 Ft.Collins CO 80525
Tel: +1-970-204-9900 Fax: +1-970-204-9951
===================================================
More information about the Gcc-bugs
mailing list