This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/26255] [4.0 regression] internal compiler error: in reload_cse_simplify_operands, at postreload.c:391
- From: "danglin at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 13 Feb 2006 23:36:36 -0000
- Subject: [Bug target/26255] [4.0 regression] internal compiler error: in reload_cse_simplify_operands, at postreload.c:391
- References: <bug-26255-581@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #4 from danglin at gcc dot gnu dot org 2006-02-13 23:36 -------
Here's what 3.4 does for the testcase:
(insn 38 204 205 0 (set (reg:HI 19 %r19)
(mem:HI (plus:SI (reg/v/f:SI 3 %r3 [orig:97 w ] [97])
(const_int 256 [0x100])) [4 S2 A16])) 52 {*pa.md:2878} (nil)
(expr_list:REG_EQUIV (mem:HI (plus:SI (reg/v/f:SI 3 %r3 [orig:97 w ] [97])
(const_int 256 [0x100])) [4 S2 A16])
(nil)))
(insn 205 38 206 0 (set (mem:SI (plus:SI (reg/f:SI 30 %r30)
(const_int -16 [0xfffffff0])) [0 S4 A32])
(reg:SI 19 %r19)) 37 {*pa.md:2265} (nil)
(nil))
(insn 206 205 23 0 (set (reg:SI 78 %fr27)
(mem:SI (plus:SI (reg/f:SI 30 %r30)
(const_int -16 [0xfffffff0])) [0 S4 A32])) 37 {*pa.md:2265}
(nil
)
(nil))
...
(insn 217 74 218 0 (set (mem:SI (plus:SI (reg/f:SI 30 %r30)
(const_int -16 [0xfffffff0])) [0 S4 A32])
(reg:SI 78 %fr27)) 37 {*pa.md:2265} (nil)
(nil))
(insn 218 217 39 0 (set (reg:SI 19 %r19)
(mem:SI (plus:SI (reg/f:SI 30 %r30)
(const_int -16 [0xfffffff0])) [0 S4 A32])) 37 {*pa.md:2265}
(nil
)
(nil))
(insn 39 218 219 0 (set (reg:SI 19 %r19)
(sign_extend:SI (reg:HI 19 %r19))) 83 {extendhisi2} (insn_list 38
(nil))
(nil))
(insn 219 39 220 0 (set (mem:SI (plus:SI (reg/f:SI 30 %r30)
(const_int -16 [0xfffffff0])) [0 S4 A32])
(reg:SI 19 %r19)) 37 {*pa.md:2265} (nil)
(nil))
(insn 220 219 221 0 (set (reg:SI 78 %fr27 [118])
(mem:SI (plus:SI (reg/f:SI 30 %r30)
(const_int -16 [0xfffffff0])) [0 S4 A32])) 37 {*pa.md:2265}
(nil
)
(nil))
...
(insn 42 222 83 0 (set (reg:DI 78 %fr27 [123])
(mult:DI (zero_extend:DI (reg:SI 78 %fr27 [118]))
(zero_extend:DI (reg:SI 69 %fr22R)))) 112 {umulsidi3} (insn_list 41
(insn_list 39 (nil)))
(nil))
I guess the bug was instroduced by the removal of the
SECONDARY_MEMORY_NEEDED_RTX
define. Without it reload isn't smart enough to use SImode for the
general to floating-point register copy. Probably, adding alternatives to
do the copy will fix the problem, and just maybe if the alternatives are
disparaged reload won't use them. Yuck.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26255