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

Reply via email to