// caller's responsibility to 'delete' the returned map.
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,
- const LocationContext *LC);
+ SVal getLValueCompoundLiteral(const CompoundLiteralExpr* CL,
+ const LocationContext *LC) {
+ return loc::MemRegionVal(MRMgr.getCompoundLiteralRegion(CL, LC));
+ }
virtual SVal getLValueIvar(const ObjCIvarDecl* decl, SVal base) = 0;
return store;
}
- SVal getLValueVar(const VarDecl *VD, const LocationContext *LC);
- SVal getLValueString(const StringLiteral *S);
SVal getLValueIvar(const ObjCIvarDecl* D, SVal Base);
SVal getLValueField(const FieldDecl *D, SVal Base);
SVal getLValueElement(QualType elementType, SVal Offset, SVal Base);
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) {
if (Base.isUnknownOrUndef())
/// the value is not specified.
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 getLValueField(const FieldDecl* D, SVal Base);
// 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) {
return getLValueFieldOrIvar(D, Base);
}
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));
-}