When computing a new ConservativeResult, intersect it with
authorDan Gohman <gohman@apple.com>
Wed, 30 Jun 2010 06:58:35 +0000 (06:58 +0000)
committerDan Gohman <gohman@apple.com>
Wed, 30 Jun 2010 06:58:35 +0000 (06:58 +0000)
the old one instead of replacing it, to be more precise.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107256 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Analysis/ScalarEvolution.cpp

index b5acd6bfd6e8d7da32ee9e3ce7dd4508d5c501ed..240126eef8c1b7ffb851d646632f4b8bb76bc233 100644 (file)
@@ -2958,7 +2958,8 @@ ScalarEvolution::getUnsignedRange(const SCEV *S) {
       if (const SCEVConstant *C = dyn_cast<SCEVConstant>(AddRec->getStart()))
         if (!C->getValue()->isZero())
           ConservativeResult =
-            ConstantRange(C->getValue()->getValue(), APInt(BitWidth, 0));
+            ConservativeResult.intersectWith(
+              ConstantRange(C->getValue()->getValue(), APInt(BitWidth, 0)));
 
     // TODO: non-affine addrec
     if (AddRec->isAffine()) {