------- Additional Comments From pinskia at gcc dot gnu dot org  2005-02-25 
02:57 -------
This worked with 20041104 and 20041214's 4.0 so this is a new regression.

Before (in 20041214), we did the load the following way:
(insn 12 10 13 1 (set (reg:SI 122)
        (mem/s/j:SI (reg/v/f:SI 119 [ s ]) [0 <variable>.size+0 S4 A32])) -1 
(nil)
    (nil))

(insn 13 12 15 1 (set (reg:SI 121)
        (plus:SI (reg:SI 122)
            (const_int -16 [0xfffffffffffffff0]))) -1 (nil)
    (nil))

(insn 15 13 17 1 (set (reg:SI 123)
        (const_int 0 [0x0])) -1 (nil)
    (nil))

(insn 17 15 14 1 (clobber (reg:DI 120)) -1 (nil)
    (insn_list:REG_LIBCALL 18 (nil)))

(insn 14 17 16 1 (set (subreg:SI (reg:DI 120) 4)
        (reg:SI 121)) -1 (nil)
    (nil))

(insn 16 14 18 1 (set (subreg:SI (reg:DI 120) 0)
        (reg:SI 123)) -1 (nil)
    (nil))


But now we get:
(insn 12 14 13 1 (set (subreg:SI (reg:DI 120) 4)
        (plus:SI (mem/s/j:SI (reg/v/f:SI 119 [ s ]) [0 <variable>.size+0 S4 
A32])
            (const_int -16 [0xfffffffffffffff0]))) -1 (nil)
    (nil))

(insn 13 12 15 1 (set (subreg:SI (reg:DI 120) 0)
        (const_int 0 [0x0])) -1 (nil)
    (nil))

So either expand is wrong for doing that or the target should understand the 
subreg.

-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20203

Reply via email to