forked from OSchip/llvm-project
Move common methods to the base StoreManager class.
llvm-svn: 95534
This commit is contained in:
parent
794da4c236
commit
08515a5242
|
@ -89,12 +89,18 @@ public:
|
||||||
// caller's responsibility to 'delete' the returned map.
|
// caller's responsibility to 'delete' the returned map.
|
||||||
virtual SubRegionMap *getSubRegionMap(Store store) = 0;
|
virtual SubRegionMap *getSubRegionMap(Store store) = 0;
|
||||||
|
|
||||||
virtual SVal getLValueVar(const VarDecl *VD, const LocationContext *LC) = 0;
|
virtual SVal getLValueVar(const VarDecl *VD, const LocationContext *LC) {
|
||||||
|
return ValMgr.makeLoc(MRMgr.getVarRegion(VD, LC));
|
||||||
|
}
|
||||||
|
|
||||||
virtual SVal getLValueString(const StringLiteral* sl) = 0;
|
virtual SVal getLValueString(const StringLiteral* S) {
|
||||||
|
return ValMgr.makeLoc(MRMgr.getStringRegion(S));
|
||||||
|
}
|
||||||
|
|
||||||
SVal getLValueCompoundLiteral(const CompoundLiteralExpr* cl,
|
SVal getLValueCompoundLiteral(const CompoundLiteralExpr* CL,
|
||||||
const LocationContext *LC);
|
const LocationContext *LC) {
|
||||||
|
return loc::MemRegionVal(MRMgr.getCompoundLiteralRegion(CL, LC));
|
||||||
|
}
|
||||||
|
|
||||||
virtual SVal getLValueIvar(const ObjCIvarDecl* decl, SVal base) = 0;
|
virtual SVal getLValueIvar(const ObjCIvarDecl* decl, SVal base) = 0;
|
||||||
|
|
||||||
|
|
|
@ -70,8 +70,6 @@ public:
|
||||||
return store;
|
return store;
|
||||||
}
|
}
|
||||||
|
|
||||||
SVal getLValueVar(const VarDecl *VD, const LocationContext *LC);
|
|
||||||
SVal getLValueString(const StringLiteral *S);
|
|
||||||
SVal getLValueIvar(const ObjCIvarDecl* D, SVal Base);
|
SVal getLValueIvar(const ObjCIvarDecl* D, SVal Base);
|
||||||
SVal getLValueField(const FieldDecl *D, SVal Base);
|
SVal getLValueField(const FieldDecl *D, SVal Base);
|
||||||
SVal getLValueElement(QualType elementType, SVal Offset, SVal Base);
|
SVal getLValueElement(QualType elementType, SVal Offset, SVal Base);
|
||||||
|
@ -115,15 +113,6 @@ StoreManager* clang::CreateBasicStoreManager(GRStateManager& StMgr) {
|
||||||
return new BasicStoreManager(StMgr);
|
return new BasicStoreManager(StMgr);
|
||||||
}
|
}
|
||||||
|
|
||||||
SVal BasicStoreManager::getLValueVar(const VarDecl* VD,
|
|
||||||
const LocationContext *LC) {
|
|
||||||
return ValMgr.makeLoc(MRMgr.getVarRegion(VD, LC));
|
|
||||||
}
|
|
||||||
|
|
||||||
SVal BasicStoreManager::getLValueString(const StringLiteral* S) {
|
|
||||||
return ValMgr.makeLoc(MRMgr.getStringRegion(S));
|
|
||||||
}
|
|
||||||
|
|
||||||
SVal BasicStoreManager::getLValueIvar(const ObjCIvarDecl* D, SVal Base) {
|
SVal BasicStoreManager::getLValueIvar(const ObjCIvarDecl* D, SVal Base) {
|
||||||
|
|
||||||
if (Base.isUnknownOrUndef())
|
if (Base.isUnknownOrUndef())
|
||||||
|
|
|
@ -232,23 +232,6 @@ public:
|
||||||
/// the value is not specified.
|
/// the value is not specified.
|
||||||
Store setImplicitDefaultValue(Store store, const MemRegion *R, QualType T);
|
Store setImplicitDefaultValue(Store store, const MemRegion *R, QualType T);
|
||||||
|
|
||||||
/// getLValueString - Returns an SVal representing the lvalue of a
|
|
||||||
/// StringLiteral. Within RegionStore a StringLiteral has an
|
|
||||||
/// associated StringRegion, and the lvalue of a StringLiteral is
|
|
||||||
/// the lvalue of that region.
|
|
||||||
SVal getLValueString(const StringLiteral* S);
|
|
||||||
|
|
||||||
/// getLValueCompoundLiteral - Returns an SVal representing the
|
|
||||||
/// lvalue of a compound literal. Within RegionStore a compound
|
|
||||||
/// literal has an associated region, and the lvalue of the
|
|
||||||
/// compound literal is the lvalue of that region.
|
|
||||||
SVal getLValueCompoundLiteral(const CompoundLiteralExpr*);
|
|
||||||
|
|
||||||
/// getLValueVar - Returns an SVal that represents the lvalue of a
|
|
||||||
/// variable. Within RegionStore a variable has an associated
|
|
||||||
/// VarRegion, and the lvalue of the variable is the lvalue of that region.
|
|
||||||
SVal getLValueVar(const VarDecl *VD, const LocationContext *LC);
|
|
||||||
|
|
||||||
SVal getLValueIvar(const ObjCIvarDecl* D, SVal Base);
|
SVal getLValueIvar(const ObjCIvarDecl* D, SVal Base);
|
||||||
|
|
||||||
SVal getLValueField(const FieldDecl* D, SVal Base);
|
SVal getLValueField(const FieldDecl* D, SVal Base);
|
||||||
|
@ -680,22 +663,6 @@ Store RegionStoreManager::InvalidateRegions(Store store,
|
||||||
// getLValueXXX methods.
|
// getLValueXXX methods.
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
||||||
/// getLValueString - Returns an SVal representing the lvalue of a
|
|
||||||
/// StringLiteral. Within RegionStore a StringLiteral has an
|
|
||||||
/// associated StringRegion, and the lvalue of a StringLiteral is the
|
|
||||||
/// lvalue of that region.
|
|
||||||
SVal RegionStoreManager::getLValueString(const StringLiteral* S) {
|
|
||||||
return loc::MemRegionVal(MRMgr.getStringRegion(S));
|
|
||||||
}
|
|
||||||
|
|
||||||
/// getLValueVar - Returns an SVal that represents the lvalue of a
|
|
||||||
/// variable. Within RegionStore a variable has an associated
|
|
||||||
/// VarRegion, and the lvalue of the variable is the lvalue of that region.
|
|
||||||
SVal RegionStoreManager::getLValueVar(const VarDecl *VD,
|
|
||||||
const LocationContext *LC) {
|
|
||||||
return loc::MemRegionVal(MRMgr.getVarRegion(VD, LC));
|
|
||||||
}
|
|
||||||
|
|
||||||
SVal RegionStoreManager::getLValueIvar(const ObjCIvarDecl* D, SVal Base) {
|
SVal RegionStoreManager::getLValueIvar(const ObjCIvarDecl* D, SVal Base) {
|
||||||
return getLValueFieldOrIvar(D, Base);
|
return getLValueFieldOrIvar(D, Base);
|
||||||
}
|
}
|
||||||
|
|
|
@ -234,16 +234,3 @@ Store StoreManager::InvalidateRegions(Store store,
|
||||||
|
|
||||||
return store;
|
return store;
|
||||||
}
|
}
|
||||||
|
|
||||||
//===----------------------------------------------------------------------===//
|
|
||||||
// Common getLValueXXX methods.
|
|
||||||
//===----------------------------------------------------------------------===//
|
|
||||||
|
|
||||||
/// getLValueCompoundLiteral - Returns an SVal representing the lvalue
|
|
||||||
/// of a compound literal. Within RegionStore a compound literal
|
|
||||||
/// has an associated region, and the lvalue of the compound literal
|
|
||||||
/// is the lvalue of that region.
|
|
||||||
SVal StoreManager::getLValueCompoundLiteral(const CompoundLiteralExpr* CL,
|
|
||||||
const LocationContext *LC) {
|
|
||||||
return loc::MemRegionVal(MRMgr.getCompoundLiteralRegion(CL, LC));
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in New Issue