https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64477

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |missed-optimization, ra
           Priority|P3                          |P2

--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
We end up with

(note 5 1 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK)
(insn 2 5 4 2 (set (mem/c:SI (plus:DI (reg/f:DI 7 sp)
                (const_int -12 [0xfffffffffffffff4])) [1 %sfp+-4 S4 A32])
        (reg:SI 5 di [ a ])) t.c:3 90 {*movsi_internal}
     (nil))
(note 4 2 8 2 NOTE_INSN_FUNCTION_BEG)
(insn 8 4 9 2 (set (reg:V4SI 21 xmm0 [95])
        (vec_merge:V4SI (vec_duplicate:V4SI (mem/c:SI (plus:DI (reg/f:DI 7 sp)
                        (const_int -12 [0xfffffffffffffff4])) [1 %sfp+-4 S4
A32]))
            (const_vector:V4SI [
                    (const_int 0 [0])
                    (const_int 0 [0])
                    (const_int 0 [0])
                    (const_int 0 [0])
                ])
            (const_int 1 [0x1]))) t.c:4 2460 {vec_setv4si_0}
     (nil))

after reload as it seems vec_setv4si_0 doesn't allow a di reg operand?

         Choosing alt 2 in insn 8:  (0) v  (1) C  (2) m {vec_setv4si_0}
            0 Non-pseudo reload: reject+=2
            0 Non input pseudo reload: reject++
          alt=0,overall=609,losers=1,rld_nregs=1
          alt=1,overall=0,losers=0,rld_nregs=0
         Choosing alt 1 in insn 2:  (0) m  (1) re {*movsi_internal}
           Spilling non-eliminable hard regs: 7

Reply via email to