diff options
author | Zdenek Dvorak <ook@ucw.cz> | 2007-08-23 01:05:05 +0200 |
---|---|---|
committer | Zdenek Dvorak <rakdver@gcc.gnu.org> | 2007-08-22 23:05:05 +0000 |
commit | 24938ce920406ea9ca0aafc4a1886b0251a88998 (patch) | |
tree | 365bdf9d6b8498fde007508ac75cee89226d9071 | |
parent | aa2f6edbf74131aff10dae81dab928b3ddbb307e (diff) | |
download | gcc-24938ce920406ea9ca0aafc4a1886b0251a88998.zip gcc-24938ce920406ea9ca0aafc4a1886b0251a88998.tar.gz gcc-24938ce920406ea9ca0aafc4a1886b0251a88998.tar.bz2 |
re PR tree-optimization/32949 (suboptimal address generation for int indices on 64-bit targets)
2007-08-22 Zdenek Dvorak <ook@ucw.cz>
PR tree-optimization/32949
* tree-ssa-loop-niter.c (scev_probably_wraps_p): Test nowrap_type_p
before failing for ivs with non-constant step.
From-SVN: r127720
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/tree-ssa-loop-niter.c | 8 |
2 files changed, 12 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0d8dae1..6594bea 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2007-08-22 Zdenek Dvorak <ook@ucw.cz> + + PR tree-optimization/32949 + * tree-ssa-loop-niter.c (scev_probably_wraps_p): Test nowrap_type_p + before failing for ivs with non-constant step. + 2007-08-22 Hans-Peter Nilsson <hp@axis.com> * doc/md.texi (Iterators): Renamed from Macros. All contents diff --git a/gcc/tree-ssa-loop-niter.c b/gcc/tree-ssa-loop-niter.c index 6d1834e..40e7051 100644 --- a/gcc/tree-ssa-loop-niter.c +++ b/gcc/tree-ssa-loop-niter.c @@ -2969,8 +2969,7 @@ scev_probably_wraps_p (tree base, tree step, 2032, 2040, 0, 8, ..., but the code is still legal. */ if (chrec_contains_undetermined (base) - || chrec_contains_undetermined (step) - || TREE_CODE (step) != INTEGER_CST) + || chrec_contains_undetermined (step)) return true; if (integer_zerop (step)) @@ -2981,6 +2980,11 @@ scev_probably_wraps_p (tree base, tree step, if (use_overflow_semantics && nowrap_type_p (type)) return false; + /* To be able to use estimates on number of iterations of the loop, + we must have an upper bound on the absolute value of the step. */ + if (TREE_CODE (step) != INTEGER_CST) + return true; + /* Don't issue signed overflow warnings. */ fold_defer_overflow_warnings (); |