From: Dan Gohman Date: Wed, 30 Jun 2010 06:58:35 +0000 (+0000) Subject: When computing a new ConservativeResult, intersect it with X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=8a18d6b48f9877dbb7fbb88cb294201b20b9fb05;p=oota-llvm.git When computing a new ConservativeResult, intersect it with 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 --- diff --git a/lib/Analysis/ScalarEvolution.cpp b/lib/Analysis/ScalarEvolution.cpp index b5acd6bfd6e..240126eef8c 100644 --- a/lib/Analysis/ScalarEvolution.cpp +++ b/lib/Analysis/ScalarEvolution.cpp @@ -2958,7 +2958,8 @@ ScalarEvolution::getUnsignedRange(const SCEV *S) { if (const SCEVConstant *C = dyn_cast(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()) {