From: Jakub Jelinek Date: Thu, 16 Jan 2014 19:24:07 +0000 (+0100) Subject: re PR target/59839 (i686 AVX2 gather intrinsic not compiling with -O0 on mingw w64) X-Git-Tag: releases/gcc-4.9.0~1628 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a611d7cb08d5b44fd0f2f8118f8083263a6a06df;p=thirdparty%2Fgcc.git re PR target/59839 (i686 AVX2 gather intrinsic not compiling with -O0 on mingw w64) PR target/59839 * config/i386/i386.c (ix86_expand_builtin): If target doesn't satisfy operand 0 predicate for gathers, use a new pseudo as subtarget. * gcc.target/i386/pr59839.c: New test. From-SVN: r206682 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ca1f85c8fc5d..098e0c109c3a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2014-01-16 Jakub Jelinek + + PR target/59839 + * config/i386/i386.c (ix86_expand_builtin): If target doesn't + satisfy operand 0 predicate for gathers, use a new pseudo as + subtarget. + 2014-01-16 Vladimir Makarov PR middle-end/59609 diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 73c5a86543c2..df408ae1a2d6 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -35511,7 +35511,9 @@ addcarryx: mode4 = insn_data[icode].operand[5].mode; if (target == NULL_RTX - || GET_MODE (target) != insn_data[icode].operand[0].mode) + || GET_MODE (target) != insn_data[icode].operand[0].mode + || !insn_data[icode].operand[0].predicate (target, + GET_MODE (target))) subtarget = gen_reg_rtx (insn_data[icode].operand[0].mode); else subtarget = target; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b874c5756acb..64826502edbb 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2014-01-16 Jakub Jelinek + PR target/59839 + * gcc.target/i386/pr59839.c: New test. + PR debug/54694 * gcc.target/i386/pr9771-1.c (main): Rename to... (real_main): ... this. Add __asm name "main". diff --git a/gcc/testsuite/gcc.target/i386/pr59839.c b/gcc/testsuite/gcc.target/i386/pr59839.c new file mode 100644 index 000000000000..dfb89456f9d1 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr59839.c @@ -0,0 +1,12 @@ +/* PR target/59839 */ +/* { dg-do compile } */ +/* { dg-options "-O0 -mavx2" } */ + +#include + +void +test (const float *x) +{ + __m256i i = _mm256_set1_epi32 (1); + __m256 d = _mm256_i32gather_ps (x, i, 1); +}