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

Reply via email to