Hello!

my recent patch exposed a problem in movdi_to_sse pattern, where
post-reload splitter tries to generate a pseudo, which is in fact not
needed.

2018-05-24  Uros Bizjak  <ubiz...@gmail.com>

    PR target/85903
    * config/i386/sse.md (movdi_to_sse): Do not generate pseudo
    when memory input operand is handled.

Bootstrapped and regression tested on x86_64-linux-gnu {,-m32}.

Committed to mainline SVN, will be backported to release branches.

Uros.
diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
index 8a80fa35067..9750708a80f 100644
--- a/gcc/config/i386/sse.md
+++ b/gcc/config/i386/sse.md
@@ -1248,11 +1248,8 @@
                                             operands[2]));
    }
  else if (memory_operand (operands[1], DImode))
-   {
-     rtx tmp = gen_reg_rtx (V2DImode);
-     emit_insn (gen_vec_concatv2di (tmp, operands[1], const0_rtx));
-     emit_move_insn (operands[0], gen_lowpart (V4SImode, tmp));
-   }
+   emit_insn (gen_vec_concatv2di (gen_lowpart (V2DImode, operands[0]),
+                                 operands[1], const0_rtx));
  else
    gcc_unreachable ();
  DONE;

Reply via email to