diff options
author | Kugan Vivekanandarajah <kuganv@linaro.org> | 2018-07-06 22:12:52 +0000 |
---|---|---|
committer | Kugan Vivekanandarajah <kugan@gcc.gnu.org> | 2018-07-06 22:12:52 +0000 |
commit | b8b31957e4c7e28fc44ae1b1ce658ba49ff1aa18 (patch) | |
tree | a3f8b2fef6fd0814eebd2169025a556db60bb9b2 /gcc/tree-ssa-loop-niter.c | |
parent | 3f6f33195bc0ede860ecbf55fe92712f3f503f50 (diff) | |
download | gcc-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.c | 7 |
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; |