aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-loop-niter.c
diff options
context:
space:
mode:
authorKugan Vivekanandarajah <kuganv@linaro.org>2018-07-06 22:12:52 +0000
committerKugan Vivekanandarajah <kugan@gcc.gnu.org>2018-07-06 22:12:52 +0000
commitb8b31957e4c7e28fc44ae1b1ce658ba49ff1aa18 (patch)
treea3f8b2fef6fd0814eebd2169025a556db60bb9b2 /gcc/tree-ssa-loop-niter.c
parent3f6f33195bc0ede860ecbf55fe92712f3f503f50 (diff)
downloadgcc-b8b31957e4c7e28fc44ae1b1ce658ba49ff1aa18.zip
gcc-b8b31957e4c7e28fc44ae1b1ce658ba49ff1aa18.tar.gz
gcc-b8b31957e4c7e28fc44ae1b1ce658ba49ff1aa18.tar.bz2
tree-ssa-loop-niter.c (number_of_iterations_popcount): If popcount argument is checked for zero before entering loop, avoid checking again.
gcc/ChangeLog: 2018-07-06 Kugan Vivekanandarajah <kuganv@linaro.org> * tree-ssa-loop-niter.c (number_of_iterations_popcount): If popcount argument is checked for zero before entering loop, avoid checking again. From-SVN: r262487
Diffstat (limited to 'gcc/tree-ssa-loop-niter.c')
-rw-r--r--gcc/tree-ssa-loop-niter.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/gcc/tree-ssa-loop-niter.c b/gcc/tree-ssa-loop-niter.c
index 03588a0..f6fa2f7 100644
--- a/gcc/tree-ssa-loop-niter.c
+++ b/gcc/tree-ssa-loop-niter.c
@@ -2596,10 +2596,15 @@ number_of_iterations_popcount (loop_p loop, edge exit,
niter->niter = iter;
niter->assumptions = boolean_true_node;
+
if (adjust)
- niter->may_be_zero = fold_build2 (EQ_EXPR, boolean_type_node, src,
+ {
+ tree may_be_zero = fold_build2 (EQ_EXPR, boolean_type_node, src,
build_zero_cst
(TREE_TYPE (src)));
+ niter->may_be_zero =
+ simplify_using_initial_conditions (loop, may_be_zero);
+ }
else
niter->may_be_zero = boolean_false_node;