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

--- Comment #4 from H.J. Lu <hjl.tools at gmail dot com> ---
Since fwprop.c has

static rtx
propagate_rtx (rtx x, machine_mode mode, rtx old_rtx, rtx new_rtx,
               bool speed)
{
  rtx tem;
  bool collapsed;
  int flags;

  if (REG_P (new_rtx) && REGNO (new_rtx) < FIRST_PSEUDO_REGISTER)
    return NULL_RTX;

it doesn't propagate V4DF 20 xmm0 from

(insn 2 5 3 2 (set (reg/v:V4DF 85 [ from ])
        (reg:V4DF 20 xmm0 [ from ])) "/tmp/bad.c":3:52 1261 {movv4df_internal}
     (expr_list:REG_DEAD (reg:V4DF 20 xmm0 [ from ])
        (nil)))

to

(insn 11 8 13 2 (set (reg:V4DF 89)
        (and:V4DF (reg:V4DF 88)
            (reg/v:V4DF 85 [ from ]))) "./include/avxintrin.h":168:10 1877
{*andv4df3}
     (expr_list:REG_DEAD (reg:V4DF 88)
        (expr_list:REG_DEAD (reg/v:V4DF 85 [ from ])
            (nil))))

Can we propagate hard register here?

Reply via email to