https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85511
H.J. Lu <hjl.tools at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2018-04-23 CC| |sebastian.peryt at intel dot com Ever confirmed|0 |1 --- Comment #1 from H.J. Lu <hjl.tools at gmail dot com> --- This works: diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index dc80b34f302..427f4e907a6 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -37594,7 +37594,10 @@ rdseed_step: arg0 = CALL_EXPR_ARG (exp, 0); op0 = expand_normal (arg0); if (!general_no_elim_operand (op0, word_mode)) - op0 = copy_to_mode_reg (word_mode, op0); + { + op0 = convert_to_mode (word_mode, op0, 1); + op0 = copy_to_mode_reg (word_mode, op0); + } emit_insn (gen_push (op0)); emit_insn (gen_pop (gen_rtx_REG (word_mode, FLAGS_REG)));