diff options
author | spop <spop@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-06-21 17:06:05 +0000 |
---|---|---|
committer | spop <spop@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-06-21 17:06:05 +0000 |
commit | 437fd8c09ad87e30302098cc76e638d8734f8208 (patch) | |
tree | 414e7e5e598d92016ed799bc6cc85640717125a5 /gcc/tree-vrp.c | |
parent | f5f2a0d1ed00430209e153d21878d3bf5e92d0f7 (diff) | |
download | gcc-437fd8c09ad87e30302098cc76e638d8734f8208.tar.gz |
PR tree-optimization/19590
* tree-vrp.c (adjust_range_with_scev): Set the range when the result
of scev is a constant.
* gcc/testsuite/gcc.dg/tree-ssa/pr19590.c: New.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@125925 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-vrp.c')
-rw-r--r-- | gcc/tree-vrp.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c index 937a76b7046..06931f1f74d 100644 --- a/gcc/tree-vrp.c +++ b/gcc/tree-vrp.c @@ -2638,6 +2638,14 @@ adjust_range_with_scev (value_range_t *vr, struct loop *loop, tree stmt, return; chrec = instantiate_parameters (loop, analyze_scalar_evolution (loop, var)); + + /* Like in PR19590, scev can return a constant function. */ + if (is_gimple_min_invariant (chrec)) + { + set_value_range (vr, VR_RANGE, chrec, chrec, vr->equiv); + return; + } + if (TREE_CODE (chrec) != POLYNOMIAL_CHREC) return; |