------- 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

Reply via email to