From bf938d316062cf0b884142d7c0d21209d081b719 Mon Sep 17 00:00:00 2001 From: Zhongxing Xu Date: Mon, 11 May 2009 12:48:56 +0000 Subject: [PATCH] Fix a bug that leads to infinite loop. Set the correct element type to ElementRegion. llvm-svn: 71428 --- clang/lib/Analysis/RegionStore.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/clang/lib/Analysis/RegionStore.cpp b/clang/lib/Analysis/RegionStore.cpp index a66e63c8770f..84c8195ecb13 100644 --- a/clang/lib/Analysis/RegionStore.cpp +++ b/clang/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);