diff options
Diffstat (limited to 'gcc/tree-ssa-loop-niter.c')
-rw-r--r-- | gcc/tree-ssa-loop-niter.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/gcc/tree-ssa-loop-niter.c b/gcc/tree-ssa-loop-niter.c index 20681a9..b77bcbb 100644 --- a/gcc/tree-ssa-loop-niter.c +++ b/gcc/tree-ssa-loop-niter.c @@ -1880,6 +1880,10 @@ number_of_iterations_exit (struct loop *loop, edge exit, fold_undefer_and_ignore_overflow_warnings (); + /* If NITER has simplified into a constant, update MAX. */ + if (TREE_CODE (niter->niter) == INTEGER_CST) + niter->max = tree_to_double_int (niter->niter); + if (integer_onep (niter->assumptions)) return true; @@ -2556,6 +2560,8 @@ record_estimate (struct loop *loop, tree bound, double_int i_bound, real number of iterations. */ if (TREE_CODE (bound) != INTEGER_CST) realistic = false; + else + gcc_checking_assert (i_bound == tree_to_double_int (bound)); if (!upper && !realistic) return; |