Replace guarded calls in RegionStoreManager to
ValueManager::getRegionValueSymbolVal() with unguarded calls to ValueManager::getRegionValueSymbolValOrUnknown(). This changes centralizes the decision of what values to symbolicate in SymbolManager rather than having it scatter in RegionStoreManager. llvm-svn: 74730
This commit is contained in:
parent
725b4a3a51
commit
06cc0e31b2
|
|
@ -74,8 +74,13 @@ public:
|
|||
/// makeZeroVal - Construct an SVal representing '0' for the specified type.
|
||||
SVal makeZeroVal(QualType T);
|
||||
|
||||
/// GetRegionValueSymbolVal - make a unique symbol for value of R.
|
||||
SVal getRegionValueSymbolVal(const MemRegion* R, QualType T = QualType());
|
||||
/// getRegionValueSymbolVal - make a unique symbol for value of R.
|
||||
SVal getRegionValueSymbolVal(const MemRegion *R, QualType T = QualType());
|
||||
|
||||
SVal getRegionValueSymbolValOrUnknown(const MemRegion *R, QualType T) {
|
||||
return SymMgr.canSymbolicate(T) ? getRegionValueSymbolVal(R, T)
|
||||
: UnknownVal();
|
||||
}
|
||||
|
||||
SVal getConjuredSymbolVal(const Expr *E, unsigned Count);
|
||||
SVal getConjuredSymbolVal(const Expr* E, QualType T, unsigned Count);
|
||||
|
|
|
|||
|
|
@ -882,13 +882,8 @@ SVal RegionStoreManager::Retrieve(const GRState *state, Loc L, QualType T) {
|
|||
if (VD == SelfDecl)
|
||||
return loc::MemRegionVal(getSelfRegion(0));
|
||||
|
||||
if (VR->hasGlobalsOrParametersStorage()) {
|
||||
QualType VTy = VD->getType();
|
||||
if (Loc::IsLocType(VTy) || VTy->isIntegerType())
|
||||
return ValMgr.getRegionValueSymbolVal(VR);
|
||||
else
|
||||
return UnknownVal();
|
||||
}
|
||||
if (VR->hasGlobalsOrParametersStorage())
|
||||
return ValMgr.getRegionValueSymbolValOrUnknown(VR, VD->getType());
|
||||
}
|
||||
|
||||
if (R->hasHeapOrStackStorage()) {
|
||||
|
|
@ -906,11 +901,8 @@ SVal RegionStoreManager::Retrieve(const GRState *state, Loc L, QualType T) {
|
|||
RTy = T->getAsPointerType()->getPointeeType();
|
||||
}
|
||||
|
||||
// All other integer values are symbolic.
|
||||
if (Loc::IsLocType(RTy) || RTy->isIntegerType())
|
||||
return ValMgr.getRegionValueSymbolVal(R, RTy);
|
||||
else
|
||||
return UnknownVal();
|
||||
// All other values are symbolic.
|
||||
return ValMgr.getRegionValueSymbolValOrUnknown(R, RTy);
|
||||
}
|
||||
|
||||
SVal RegionStoreManager::RetrieveElement(const GRState* state,
|
||||
|
|
@ -977,10 +969,7 @@ SVal RegionStoreManager::RetrieveElement(const GRState* state,
|
|||
if (const QualType *p = state->get<RegionCasts>(R))
|
||||
Ty = (*p)->getAsPointerType()->getPointeeType();
|
||||
|
||||
if (Loc::IsLocType(Ty) || Ty->isIntegerType())
|
||||
return ValMgr.getRegionValueSymbolVal(R, Ty);
|
||||
else
|
||||
return UnknownVal();
|
||||
return ValMgr.getRegionValueSymbolValOrUnknown(R, Ty);
|
||||
}
|
||||
|
||||
SVal RegionStoreManager::RetrieveField(const GRState* state,
|
||||
|
|
@ -1020,11 +1009,8 @@ SVal RegionStoreManager::RetrieveField(const GRState* state,
|
|||
Ty = tmp->getAsPointerType()->getPointeeType();
|
||||
}
|
||||
|
||||
// All other integer values are symbolic.
|
||||
if (Loc::IsLocType(Ty) || Ty->isIntegerType())
|
||||
return ValMgr.getRegionValueSymbolVal(R, Ty);
|
||||
else
|
||||
return UnknownVal();
|
||||
// All other values are symbolic.
|
||||
return ValMgr.getRegionValueSymbolValOrUnknown(R, Ty);
|
||||
}
|
||||
|
||||
SVal RegionStoreManager::RetrieveStruct(const GRState *state,
|
||||
|
|
|
|||
Loading…
Reference in New Issue