aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorKugan Vivekanandarajah <kuganv@linaro.org>2018-07-13 05:25:47 +0000
committerKugan Vivekanandarajah <kugan@gcc.gnu.org>2018-07-13 05:25:47 +0000
commit061d40da00952fe7eabd8faae60e3cc4ac8f734a (patch)
treecd8810be6cbfa003a055108252efa03a7b119ffb /gcc
parentb18bb376a1fa8c48645a7527720f756ae0bb6b87 (diff)
downloadgcc-061d40da00952fe7eabd8faae60e3cc4ac8f734a.zip
gcc-061d40da00952fe7eabd8faae60e3cc4ac8f734a.tar.gz
gcc-061d40da00952fe7eabd8faae60e3cc4ac8f734a.tar.bz2
re PR tree-optimization/86489 (ICE in gimple_phi_arg starting with r261682 when building 531.deepsjeng_r with FDO + LTO)
gcc/ChangeLog: 2018-07-13 Kugan Vivekanandarajah <kuganv@linaro.org> Richard Biener <rguenther@suse.de> PR middle-end/86489 * tree-ssa-loop-niter.c (number_of_iterations_popcount): Check that the loop latch destination where phi is defined. gcc/testsuite/ChangeLog: 2018-07-13 Kugan Vivekanandarajah <kuganv@linaro.org> PR middle-end/86489 * gcc.dg/pr86489.c: New test. Co-Authored-By: Richard Biener <rguenther@suse.de> From-SVN: r262622
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/pr86489.c12
-rw-r--r--gcc/tree-ssa-loop-niter.c1
4 files changed, 25 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9c95566..0cfa230 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2018-07-13 Kugan Vivekanandarajah <kuganv@linaro.org>
+ Richard Biener <rguenther@suse.de>
+
+ PR middle-end/86489
+ * tree-ssa-loop-niter.c (number_of_iterations_popcount): Check
+ that the loop latch destination where phi is defined.
+
2018-07-12 Kito Cheng <kito.cheng@gmail.com>
* config/riscv/riscv.c (enum riscv_privilege_levels): Add UNKNOWN_MODE.
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index a5ace64..9d6c7cc 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2018-07-13 Kugan Vivekanandarajah <kuganv@linaro.org>
+
+ PR middle-end/86489
+ * gcc.dg/pr86489.c: New test.
+
2018-07-12 Martin Sebor <msebor@redhat.com>
PR testsuite/86510
diff --git a/gcc/testsuite/gcc.dg/pr86489.c b/gcc/testsuite/gcc.dg/pr86489.c
new file mode 100644
index 0000000..c7e5573
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr86489.c
@@ -0,0 +1,12 @@
+
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+int a = 0, b = 0;
+void fn1() {
+ int c = 0;
+ for (; a; a--)
+ c += b;
+ while ((c - 1) & c)
+ ;
+}
diff --git a/gcc/tree-ssa-loop-niter.c b/gcc/tree-ssa-loop-niter.c
index f6fa2f7..fbdf838 100644
--- a/gcc/tree-ssa-loop-niter.c
+++ b/gcc/tree-ssa-loop-niter.c
@@ -2555,6 +2555,7 @@ number_of_iterations_popcount (loop_p loop, edge exit,
... = PHI <b_5(2), b_6(3)>. */
gimple *phi = SSA_NAME_DEF_STMT (b_11);
if (gimple_code (phi) != GIMPLE_PHI
+ || (gimple_bb (phi) != loop_latch_edge (loop)->dest)
|| (gimple_assign_lhs (and_stmt)
!= gimple_phi_arg_def (phi, loop_latch_edge (loop)->dest_idx)))
return false;