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