From: Uros Bizjak Date: Wed, 23 Apr 2014 19:05:33 +0000 (+0200) Subject: backport: re PR target/60909 (ICE: in extract_insn, at recog.c:2202 (unrecognizable... X-Git-Tag: releases/gcc-4.7.4~132 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2811dd475fd875025caac85d3956f4976dd2460c;p=thirdparty%2Fgcc.git 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 --- 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); +}