From: Zhongxing Xu Date: Mon, 11 May 2009 12:48:56 +0000 (+0000) Subject: Fix a bug that leads to infinite loop. Set the correct element type to X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2ee5214779aafabb5058aa62e73e037d21880e6d;p=clang Fix a bug that leads to infinite loop. Set the correct element type to ElementRegion. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71428 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Analysis/RegionStore.cpp b/lib/Analysis/RegionStore.cpp index a66e63c877..84c8195ecb 100644 --- a/lib/Analysis/RegionStore.cpp +++ b/lib/Analysis/RegionStore.cpp @@ -827,13 +827,11 @@ SVal RegionStoreManager::RetrieveArray(const GRState* St, const TypedRegion* R){ llvm::ImmutableList ArrayVal = getBasicVals().getEmptySValList(); llvm::APSInt Size(CAT->getSize(), false); - llvm::APSInt i = getBasicVals().getValue(0, Size.getBitWidth(), - Size.isUnsigned()); + llvm::APSInt i = getBasicVals().getZeroWithPtrWidth(false); for (; i < Size; ++i) { SVal Idx = NonLoc::MakeVal(getBasicVals(), i); - ElementRegion* ER = MRMgr.getElementRegion(R->getValueType(getContext()), - Idx, R); + ElementRegion* ER = MRMgr.getElementRegion(CAT->getElementType(), Idx, R); QualType ETy = ER->getElementType(); SVal ElementVal = Retrieve(St, loc::MemRegionVal(ER), ETy); ArrayVal = getBasicVals().consVals(ElementVal, ArrayVal);