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;