aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/g++.dg/vect/pr60023.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.9/gcc/testsuite/g++.dg/vect/pr60023.cc')
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/vect/pr60023.cc80
1 files changed, 80 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/vect/pr60023.cc b/gcc-4.9/gcc/testsuite/g++.dg/vect/pr60023.cc
new file mode 100644
index 000000000..78f325e6f
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/vect/pr60023.cc
@@ -0,0 +1,80 @@
+// PR tree-optimization/60023
+// { dg-do compile }
+// { dg-additional-options "-O3 -std=c++11 -fnon-call-exceptions" }
+// { dg-additional-options "-mavx2" { target { i?86-*-* x86_64-*-* } } }
+
+struct A { A (); ~A (); };
+
+void
+f1 (int *p, int *q, int *r) noexcept (true)
+{
+ int i;
+ for (i = 0; i < 1024; i++)
+ if (r[i])
+ p[i] = q[i] + 1;
+}
+
+void
+f2 (int *p, int *q, int *r)
+{
+ int i;
+ for (i = 0; i < 1024; i++)
+ if (r[i])
+ p[i] = q[i] + 1;
+}
+
+void
+f3 (int *p, int *q) noexcept (true)
+{
+ int i;
+ for (i = 0; i < 1024; i++)
+ p[i] = q[i] + 1;
+}
+
+void
+f4 (int *p, int *q)
+{
+ int i;
+ for (i = 0; i < 1024; i++)
+ p[i] = q[i] + 1;
+}
+
+void
+f5 (int *p, int *q, int *r) noexcept (true)
+{
+ int i;
+ A a;
+ for (i = 0; i < 1024; i++)
+ if (r[i])
+ p[i] = q[i] + 1;
+}
+
+void
+f6 (int *p, int *q, int *r)
+{
+ int i;
+ A a;
+ for (i = 0; i < 1024; i++)
+ if (r[i])
+ p[i] = q[i] + 1;
+}
+
+void
+f7 (int *p, int *q) noexcept (true)
+{
+ int i;
+ A a;
+ for (i = 0; i < 1024; i++)
+ p[i] = q[i] + 1;
+}
+
+void
+f8 (int *p, int *q)
+{
+ int i;
+ A a;
+ for (i = 0; i < 1024; i++)
+ p[i] = q[i] + 1;
+}
+
+// { dg-final { cleanup-tree-dump "vect" } }