From 7446416058ee318db515443ba79e15c23d0f61f1 Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Wed, 30 Jun 2010 06:58:35 +0000 Subject: [PATCH] When computing a new ConservativeResult, intersect it with the old one instead of replacing it, to be more precise. llvm-svn: 107256 --- lib/Analysis/ScalarEvolution.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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()) {