aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg
diff options
context:
space:
mode:
authorMichael Matz <matz@suse.de>2016-10-26 12:54:30 +0000
committerMichael Matz <matz@gcc.gnu.org>2016-10-26 12:54:30 +0000
commit09844a5f640d7e881f503859953925ae260a2be8 (patch)
tree66e612c83ccf90f62666ef2ec1bd1157716a86b8 /gcc/testsuite/g++.dg
parent0ef33d44629066e33ffdc46014374a3ef5c5f009 (diff)
downloadgcc-09844a5f640d7e881f503859953925ae260a2be8.zip
gcc-09844a5f640d7e881f503859953925ae260a2be8.tar.gz
gcc-09844a5f640d7e881f503859953925ae260a2be8.tar.bz2
fix pr78060 pr78061 pr78088
PR tree-optimization/78060 PR tree-optimization/78061 PR tree-optimization/78088 * tree-ssa-loop-split.c (easy_exit_values): New function. (tree_ssa_split_loops): Use it. (compute_new_first_bound): Change order of operations, fix invalid use of types. testsuite/ * g++.dg/pr78060.C: New test. * gfortran.dg/pr78061.f: New test. * g++.dg/pr78088.C: New test. From-SVN: r241551
Diffstat (limited to 'gcc/testsuite/g++.dg')
-rw-r--r--gcc/testsuite/g++.dg/pr78060.C14
-rw-r--r--gcc/testsuite/g++.dg/pr78088.C19
2 files changed, 33 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/pr78060.C b/gcc/testsuite/g++.dg/pr78060.C
new file mode 100644
index 0000000..d6cc7b3
--- /dev/null
+++ b/gcc/testsuite/g++.dg/pr78060.C
@@ -0,0 +1,14 @@
+// PR tree-optimization/78060
+// { dg-do compile }
+// { dg-options "-O3 -fsplit-loops" }
+class A {
+public:
+ template <typename T2> int &operator[](T2);
+};
+int a;
+A b;
+void fn1() {
+ long c;
+ for (int l; l < c; ++l)
+ b[l] = l < 2 ?: a;
+}
diff --git a/gcc/testsuite/g++.dg/pr78088.C b/gcc/testsuite/g++.dg/pr78088.C
new file mode 100644
index 0000000..1a5c063
--- /dev/null
+++ b/gcc/testsuite/g++.dg/pr78088.C
@@ -0,0 +1,19 @@
+// PR tree-optimization/78088
+// { dg-do compile }
+// { dg-options "-O3 -fsplit-loops" }
+class A {
+public:
+ int m_fn1();
+};
+struct B : A {
+ void m_fn2();
+};
+void B::m_fn2() {
+ long a;
+ int b, c;
+ for (;;) {
+ c = 0;
+ for (; c < a; ++c, ++b)
+ b > 0 ? m_fn1() : 0;
+ }
+}