diff options
author | Michael Matz <matz@suse.de> | 2016-10-26 12:54:30 +0000 |
---|---|---|
committer | Michael Matz <matz@gcc.gnu.org> | 2016-10-26 12:54:30 +0000 |
commit | 09844a5f640d7e881f503859953925ae260a2be8 (patch) | |
tree | 66e612c83ccf90f62666ef2ec1bd1157716a86b8 /gcc/testsuite/g++.dg | |
parent | 0ef33d44629066e33ffdc46014374a3ef5c5f009 (diff) | |
download | gcc-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.C | 14 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/pr78088.C | 19 |
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; + } +} |