diff options
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr86489.c | 12 | ||||
-rw-r--r-- | gcc/tree-ssa-loop-niter.c | 1 |
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; |