aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2017-10-11 22:50:46 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2017-10-11 22:50:46 +0200
commit69c328ec60f2ff1858387eaf195119f6976fe99c (patch)
tree83a058ec2ea22625b18cb35de96bfaa8f7eb5835 /gcc
parent1d5b9dd5c6490cbca0437e1d919ae8d45c3d6297 (diff)
downloadgcc-69c328ec60f2ff1858387eaf195119f6976fe99c.zip
gcc-69c328ec60f2ff1858387eaf195119f6976fe99c.tar.gz
gcc-69c328ec60f2ff1858387eaf195119f6976fe99c.tar.bz2
re PR tree-optimization/78558 (Incorrect loop optimization leads to crash)
PR tree-optimization/78558 * gcc.dg/vect/pr78558.c: New test. From-SVN: r253661
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/ChangeLog3
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr78558.c44
2 files changed, 47 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index f136473..2135f48 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,8 @@
2017-10-11 Jakub Jelinek <jakub@redhat.com>
+ PR tree-optimization/78558
+ * gcc.dg/vect/pr78558.c: New test.
+
PR c++/82414
* g++.dg/lto/pr82414_0.C: New test.
diff --git a/gcc/testsuite/gcc.dg/vect/pr78558.c b/gcc/testsuite/gcc.dg/vect/pr78558.c
new file mode 100644
index 0000000..2606d4e
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/pr78558.c
@@ -0,0 +1,44 @@
+/* PR tree-optimization/78558 */
+
+#include "tree-vect.h"
+
+struct S
+{
+ char p[48];
+ unsigned long long q, r, s;
+} s[50];
+
+struct D
+{
+ unsigned long long q, r;
+} d[50];
+
+void
+foo (void)
+{
+ unsigned long i;
+ for (i = 0; i < 50; ++i)
+ {
+ d[i].q = s[i].q;
+ d[i].r = s[i].r;
+ }
+}
+
+int
+main ()
+{
+ check_vect ();
+ unsigned long i;
+ for (i = 0; i < 50; ++i)
+ {
+ s[i].q = i;
+ s[i].r = 50 * i;
+ }
+ asm volatile ("" : : "g" (s), "g" (d) : "memory");
+ foo ();
+ asm volatile ("" : : "g" (s), "g" (d) : "memory");
+ for (i = 0; i < 50; ++i)
+ if (d[i].q != i || d[i].r != 50 * i)
+ abort ();
+ return 0;
+}