2007-08-22 Zdenek Dvorak <ook@ucw.cz>
authorrakdver <rakdver@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 22 Aug 2007 23:05:05 +0000 (23:05 +0000)
committerrakdver <rakdver@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 22 Aug 2007 23:05:05 +0000 (23:05 +0000)
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@127720 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/tree-ssa-loop-niter.c

index 0d8dae1..6594bea 100644 (file)
@@ -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
index 6d1834e..40e7051 100644 (file)
@@ -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 ();