diff options
author | Zhongxing Xu <xuzhongxing@gmail.com> | 2009-05-11 12:48:56 +0000 |
---|---|---|
committer | Zhongxing Xu <xuzhongxing@gmail.com> | 2009-05-11 12:48:56 +0000 |
commit | 2ee5214779aafabb5058aa62e73e037d21880e6d (patch) | |
tree | bb5e6480232a45b3b640eed494b053a358cba29c /lib/Analysis/RegionStore.cpp | |
parent | 92d5077d35cb4ac7e3fdb5785fc4e843e9fffdc8 (diff) |
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
Diffstat (limited to 'lib/Analysis/RegionStore.cpp')
-rw-r--r-- | lib/Analysis/RegionStore.cpp | 6 |
1 files changed, 2 insertions, 4 deletions
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<SVal> 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); |