aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorKugan Vivekanandarajah <kuganv@linaro.org>2018-10-29 22:02:45 +0000
committerKugan Vivekanandarajah <kugan@gcc.gnu.org>2018-10-29 22:02:45 +0000
commit5efd9f170a4d9e1d8ca81312f1cc9371b1a99232 (patch)
tree1ec423a0c3b09e3909cad7109ddbca85a275f0b7 /gcc
parentec827ab608ba518f97c02e915d156e4b42ca9468 (diff)
downloadgcc-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/ChangeLog6
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/pr87469.C15
-rw-r--r--gcc/tree-ssa-loop-niter.c8
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;