This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/21596] [4.0/4.1/4.2 Regression] extra temporaries when using global register variables
- From: "steven at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 22 Jul 2006 11:08:24 -0000
- Subject: [Bug tree-optimization/21596] [4.0/4.1/4.2 Regression] extra temporaries when using global register variables
- References: <bug-21596-119@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #6 from steven at gcc dot gnu dot org 2006-07-22 11:08 -------
In the greg dump we have this RTL:
(insn:HI 10 8 11 2 (parallel [
(set (reg:SI 58 [ D.1540 ])
(plus:SI (reg/v:SI 5 di [ reg ])
(const_int -4 [0xfffffffffffffffc])))
(clobber (reg:CC 17 flags))
]) 208 {*addsi_1} (nil)
(expr_list:REG_UNUSED (reg:CC 17 flags)
(expr_list:REG_DEAD (reg/v:SI 5 di [ reg ])
(expr_list:REG_UNUSED (reg:CC 17 flags)
(nil)))))
(insn:HI 11 10 12 2 (set (reg/v:SI 5 di [ reg ])
(reg:SI 58 [ D.1540 ])) 40 {*movsi_1} (insn_list:REG_DEP_TRUE 10 (nil))
(nil))
(insn:HI 12 11 13 2 (set (reg:CCNO 17 flags)
(compare:CCNO (mem:SI (reg:SI 58 [ D.1540 ]) [3 S4 A32])
(const_int 0 [0x0]))) 3 {*cmpsi_ccno_1} (nil)
(expr_list:REG_DEAD (reg:SI 58 [ D.1540 ])
(nil)))
reg 5 and pseudoreg 58 can share the same hard register (i.e. 58 renumbers to
5) but GCC concludes that the two regs conflict.
--
steven at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |ra
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21596