diff options
author | Kugan Vivekanandarajah <kuganv@linaro.org> | 2018-10-29 22:02:45 +0000 |
---|---|---|
committer | Kugan Vivekanandarajah <kugan@gcc.gnu.org> | 2018-10-29 22:02:45 +0000 |
commit | 5efd9f170a4d9e1d8ca81312f1cc9371b1a99232 (patch) | |
tree | 1ec423a0c3b09e3909cad7109ddbca85a275f0b7 /gcc | |
parent | ec827ab608ba518f97c02e915d156e4b42ca9468 (diff) | |
download | gcc-5efd9f170a4d9e1d8ca81312f1cc9371b1a99232.zip gcc-5efd9f170a4d9e1d8ca81312f1cc9371b1a99232.tar.gz gcc-5efd9f170a4d9e1d8ca81312f1cc9371b1a99232.tar.bz2 |
re PR c++/87469 (ice in record_estimate, at tree-ssa-loop-niter.c:3271)
gcc/testsuite/ChangeLog:
2018-10-29 Kugan Vivekanandarajah <kuganv@linaro.org>
PR middle-end/87469
* g++.dg/pr87469.C: New test.
gcc/ChangeLog:
2018-10-29 Kugan Vivekanandarajah <kuganv@linaro.org>
PR middle-end/87469
* tree-ssa-loop-niter.c (number_of_iterations_popcount): Fix niter
max value.
From-SVN: r265605
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/pr87469.C | 15 | ||||
-rw-r--r-- | gcc/tree-ssa-loop-niter.c | 8 |
4 files changed, 29 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 812b37a..35e5179 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2018-10-29 Kugan Vivekanandarajah <kuganv@linaro.org> + + PR middle-end/87469 + * tree-ssa-loop-niter.c (number_of_iterations_popcount): Fix niter + max value. + 2018-10-29 Paul A. Clarke <pc@us.ibm.com> * gcc.target/powerpc/ssse3-check.h: Remove inaccurate comment. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index bfccc60..c8e9c57 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-10-29 Kugan Vivekanandarajah <kuganv@linaro.org> + + PR middle-end/87469 + * g++.dg/pr87469.C: New test. + 2018-10-29 Marek Polacek <polacek@redhat.com> PR c++/87594 - constexpr rejects-valid with range-based for. diff --git a/gcc/testsuite/g++.dg/pr87469.C b/gcc/testsuite/g++.dg/pr87469.C new file mode 100644 index 0000000..2f6de97 --- /dev/null +++ b/gcc/testsuite/g++.dg/pr87469.C @@ -0,0 +1,15 @@ +/* { dg-do compile } */ +/* { dg-options "-c -w -O2" } */ +long a; +struct c { + void d(unsigned f) { + long e = f; + while (e & (e - 1)) + e &= e - 1; + a = e; + } +}; +void g() { + c b; + b.d(4 + 2); +} diff --git a/gcc/tree-ssa-loop-niter.c b/gcc/tree-ssa-loop-niter.c index e2bc936..e763b35 100644 --- a/gcc/tree-ssa-loop-niter.c +++ b/gcc/tree-ssa-loop-niter.c @@ -2589,11 +2589,9 @@ number_of_iterations_popcount (loop_p loop, edge exit, if (TREE_CODE (call) == INTEGER_CST) max = tree_to_uhwi (call); else - { - max = TYPE_PRECISION (TREE_TYPE (src)); - if (adjust) - max = max - 1; - } + max = TYPE_PRECISION (TREE_TYPE (src)); + if (adjust) + max = max - 1; niter->niter = iter; niter->assumptions = boolean_true_node; |