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)));