PR target/78585 has been fixed for GCC 7 by commit 7ed04d053eead43d87dff40fb4e2904219afc4d5 Author: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Wed Nov 30 13:02:07 2016 +0000
* config/i386/i386.c (dimode_scalar_chain::convert_op): Avoid sharing the SUBREG rtx between move and following insn. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@243018 138bc75d-0d04-0410-961f-82ee72b054a4 I am checking in this patch to close it. H.J. --- PR target/78585: * gcc.target/i386/pr78585.c: New test. --- gcc/testsuite/gcc.target/i386/pr78585.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 gcc/testsuite/gcc.target/i386/pr78585.c diff --git a/gcc/testsuite/gcc.target/i386/pr78585.c b/gcc/testsuite/gcc.target/i386/pr78585.c new file mode 100644 index 00000000000..f6aae1db4d4 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr78585.c @@ -0,0 +1,29 @@ +/* { dg-do run } */ +/* { dg-require-effective-target avx } */ +/* { dg-options "-Os -fno-ipa-cp -fschedule-insns -mavx" } */ + +#include "avx-check.h" + +typedef unsigned int u32; +typedef unsigned long long u64; + +u32 x0, x1, x2, x3, x4; +u64 x5, x6; + +static u64 __attribute__ ((noinline, noclone)) +foo (u64 x7) +{ + x6 = x2; + x6 *= 5; + x6--; + return x0 + x5 + x1 + x7 + 1 + x3 + x4; +} + +static void +__attribute__ ((noinline)) +avx_test () +{ + u64 x = foo (0); + __builtin_printf ("%016llx", (unsigned long long) (x >> 0)); + __builtin_printf ("\n"); +} -- 2.14.3