From 2811dd475fd875025caac85d3956f4976dd2460c Mon Sep 17 00:00:00 2001 From: Uros Bizjak Date: Wed, 23 Apr 2014 21:05:33 +0200 Subject: [PATCH] backport: re PR target/60909 (ICE: in extract_insn, at recog.c:2202 (unrecognizable insn) with -mrdrnd and __builtin_ia32_rdrand32_step()) Backport from mainline 2014-04-21 Uros Bizjak PR target/60909 * config/i386/i386.c (ix86_expand_builtin) : Use temporary register for target RTX. testsuite/ChangeLog: Backport from mainline 2014-04-21 Uros Bizjak PR target/60909 * gcc.target/i386/pr60909.c: New test. From-SVN: r209718 --- gcc/ChangeLog | 14 ++++++++++++-- gcc/config/i386/i386.c | 3 ++- gcc/testsuite/ChangeLog | 10 +++++++++- gcc/testsuite/gcc.target/i386/pr60909.c | 11 +++++++++++ 4 files changed, 34 insertions(+), 4 deletions(-) create mode 100644 gcc/testsuite/gcc.target/i386/pr60909.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 27001a1054c3..153f6ab7ce57 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,10 +1,20 @@ +2014-04-23 Uros Bizjak + + Backport from mainline + 2014-04-21 Uros Bizjak + + PR target/60909 + * config/i386/i386.c (ix86_expand_builtin) + : Use temporary + register for target RTX. + 2014-04-07 Martin Jambor PR ipa/60640 * ipa-cp.c (propagate_constants_accross_call): Do not propagate accross thunks. -2014-04-07 Dominique d'Humieres +2014-04-07 Dominique d'Humieres Backport from mainline 2013-09-14 Iain Sandoe @@ -73,7 +83,7 @@ double ints throughout. 2014-03-18 Richard Biener - + Backport from mainline 2013-08-27 Richard Biener diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 9116dd4c63f1..b39ec9dea183 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -29693,7 +29693,8 @@ rdrand_step: else op2 = gen_rtx_SUBREG (SImode, op0, 0); - if (target == 0) + if (target == 0 + || !register_operand (target, SImode)) target = gen_reg_rtx (SImode); pat = gen_rtx_GEU (VOIDmode, gen_rtx_REG (CCCmode, FLAGS_REG), diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 25cda77f56fe..e9fea1040ce6 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,8 +1,16 @@ +2014-04-23 Uros Bizjak + + Backport from mainline + 2014-04-21 Uros Bizjak + + PR target/60909 + * gcc.target/i386/pr60909.c: New test. + 2014-04-12 Jerry DeLisle Backport from mainline PR libfortran/60810 - gfortran.dg/arrayio_13.f90: New test. + * gfortran.dg/arrayio_13.f90: New test. 2014-04-07 Martin Jambor diff --git a/gcc/testsuite/gcc.target/i386/pr60909.c b/gcc/testsuite/gcc.target/i386/pr60909.c new file mode 100644 index 000000000000..5a1ac3c0f6c2 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr60909.c @@ -0,0 +1,11 @@ +/* { dg-do compile } */ +/* { dg-options "-mrdrnd" } */ + +extern void bar (int); + +void +foo (unsigned *u) +{ + int i = __builtin_ia32_rdrand32_step (u); + bar (i); +} -- 2.47.2