[Bug rtl-optimization/36246] Reload chooses too wide mode for reg->mem->reg reload

ubizjak at gmail dot com gcc-bugzilla@gcc.gnu.org
Fri May 16 06:43:00 GMT 2008



------- Comment #1 from ubizjak at gmail dot com  2008-05-16 06:42 -------
32bit targets (-mregparm=3) choose 32bit moves:

Reloads for insn # 9
Reload 0: reload_in (SI) = (reg/v:SI 1 dx [orig:60 __q2 ] [60])
        reload_out (V2SI) = (reg:V2SI 22 xmm1 [65])
        SSE_REGS, RELOAD_OTHER (opnum = 0)
        reload_in_reg: (reg/v:SI 1 dx [orig:60 __q2 ] [60])
        reload_out_reg: (reg:V2SI 22 xmm1 [65])
        reload_reg_rtx: (reg:V2SI 21 xmm0)
Reload 1: reload_in (SI) = (reg/v:SI 0 ax [orig:59 __q3 ] [59])
        SSE_REGS, RELOAD_FOR_INPUT (opnum = 2)
        reload_in_reg: (reg/v:SI 0 ax [orig:59 __q3 ] [59])
        reload_reg_rtx: (reg:SI 23 xmm2)

This results in:

(insn 28 6 29 2 uuu.c:7 (set (mem/c:SI (reg/f:SI 7 sp) [0 S4 A8])
        (reg/v:SI 1 dx [orig:60 __q2 ] [60])) 47 {*movsi_1} (nil))

(insn 29 28 31 2 uuu.c:7 (set (reg:SI 21 xmm0)
        (mem/c:SI (reg/f:SI 7 sp) [0 S4 A8])) 47 {*movsi_1} (nil))

(insn 31 29 32 2 uuu.c:7 (set (mem/c:SI (reg/f:SI 7 sp) [0 S4 A8])
        (reg/v:SI 0 ax [orig:59 __q3 ] [59])) 47 {*movsi_1} (nil))

(insn 32 31 9 2 uuu.c:7 (set (reg:SI 23 xmm2)
        (mem/c:SI (reg/f:SI 7 sp) [0 S4 A8])) 47 {*movsi_1} (nil))

(insn:HI 9 32 30 2 uuu.c:7 (set (reg:V2SI 21 xmm0)
        (vec_concat:V2SI (reg:SI 21 xmm0)
            (reg:SI 23 xmm2))) 1338 {*vec_concatv2si_sse2} (nil))


-- 


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



More information about the Gcc-bugs mailing list