Fix a bug that leads to infinite loop. Set the correct element type to

ElementRegion.

llvm-svn: 71428
This commit is contained in:
Zhongxing Xu 2009-05-11 12:48:56 +00:00
parent aa9c019461
commit bf938d3160
1 changed files with 2 additions and 4 deletions

View File

@ -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);