[Bug rtl-optimization/25848] local alloc causing an extra move
pinskia at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Sat Aug 26 04:19:00 GMT 2006
------- Comment #2 from pinskia at gcc dot gnu dot org 2006-08-26 04:19 -------
;; Register 120 in 0.
;; Register 121 in 3.
;; Register 122 in 3.
(insn:HI 6 16 10 2 (set (reg/v:DI 120 [ a ])
(reg:DI 3 3 [ a ])) 331 {*movdi_internal64} (nil)
(expr_list:REG_DEAD (reg:DI 3 3 [ a ])
(expr_list:REG_EQUIV (mem/c/i:DI (plus:DI (reg/f:DI 67 ap)
(const_int 48 [0x30])) [2 a+0 S4 A64])
(nil))))
(insn:HI 10 6 11 2 (set (reg:SI 122)
(ashift:SI (subreg/s:SI (reg/v:DI 120 [ a ]) 4)
(const_int 1 [0x1]))) 172 {ashlsi3_no_power} (nil)
(nil))
(insn:HI 11 10 19 2 (set (reg:SI 121)
(plus:SI (reg:SI 122)
(subreg/s:SI (reg/v:DI 120 [ a ]) 4))) 79 {*addsi3_internal1} (nil)
(expr_list:REG_DEAD (reg:SI 122)
(expr_list:REG_DEAD (reg/v:DI 120 [ a ])
(nil))))
(insn:HI 19 11 25 2 (set (reg/i:DI 3 3 [ <result> ])
(sign_extend:DI (reg:SI 121))) 27 {*rs6000.md:371} (nil)
(expr_list:REG_DEAD (reg:SI 121)
(nil)))
(insn:HI 25 19 30 2 (use (reg/i:DI 3 3 [ <result> ])) -1 (nil)
(nil))
if local alloc put r120 into r3 and 121 in r0, this would have worked.
--
pinskia at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Severity|normal |enhancement
Status|UNCONFIRMED |NEW
Ever Confirmed|0 |1
Keywords| |missed-optimization, ra
Last reconfirmed|0000-00-00 00:00:00 |2006-08-26 04:19:35
date| |
Summary|missed-rtl-optimization |local alloc causing an extra
| |move
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25848
More information about the Gcc-bugs
mailing list