From: Ted Kremenek Date: Wed, 7 Jan 2009 22:18:50 +0000 (+0000) Subject: Refactor MemRegionManager instance variable into parent class. No functionality... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d6cfbe4bd5103cd020d987d09438744eb17226a3;p=clang Refactor MemRegionManager instance variable into parent class. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61888 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Analysis/PathSensitive/Store.h b/include/clang/Analysis/PathSensitive/Store.h index 5425b6976b..be8ee458cb 100644 --- a/include/clang/Analysis/PathSensitive/Store.h +++ b/include/clang/Analysis/PathSensitive/Store.h @@ -37,7 +37,14 @@ class StoreManager { public: typedef llvm::SmallSet LiveSymbolsTy; typedef llvm::DenseSet DeadSymbolsTy; - + +protected: + /// MRMgr - Manages region objects associated with this StoreManager. + MemRegionManager MRMgr; + + StoreManager(llvm::BumpPtrAllocator& Alloc) : MRMgr(Alloc) {} + +public: virtual ~StoreManager() {} /// Retrieve - Retrieves the value bound to specified location. The optional @@ -64,7 +71,7 @@ public: SVal V) = 0; virtual Store getInitialStore() = 0; - virtual MemRegionManager& getRegionManager() = 0; + MemRegionManager& getRegionManager() { return MRMgr; } virtual SVal getLValueVar(const GRState* St, const VarDecl* VD) = 0; diff --git a/lib/Analysis/BasicStore.cpp b/lib/Analysis/BasicStore.cpp index fe14a9effc..9e469c0b5d 100644 --- a/lib/Analysis/BasicStore.cpp +++ b/lib/Analysis/BasicStore.cpp @@ -26,14 +26,13 @@ namespace { class VISIBILITY_HIDDEN BasicStoreManager : public StoreManager { VarBindingsTy::Factory VBFactory; GRStateManager& StateMgr; - MemRegionManager MRMgr; const MemRegion* SelfRegion; public: BasicStoreManager(GRStateManager& mgr) - : VBFactory(mgr.getAllocator()), + : StoreManager(mgr.getAllocator()), + VBFactory(mgr.getAllocator()), StateMgr(mgr), - MRMgr(StateMgr.getAllocator()), SelfRegion(0) {} ~BasicStoreManager() {} @@ -49,7 +48,6 @@ public: Store BindInternal(Store St, Loc LV, SVal V); Store Remove(Store St, Loc LV); Store getInitialStore(); - MemRegionManager& getRegionManager() { return MRMgr; } // FIXME: Investigate what is using this. This method should be removed. virtual Loc getLoc(const VarDecl* VD) { diff --git a/lib/Analysis/RegionStore.cpp b/lib/Analysis/RegionStore.cpp index 4e0215b997..598107c1ea 100644 --- a/lib/Analysis/RegionStore.cpp +++ b/lib/Analysis/RegionStore.cpp @@ -54,6 +54,7 @@ namespace clang { // // MemRegions represent chunks of memory with a size (their "extent"). This // GDM entry tracks the extents for regions. Extents are in bytes. +// namespace { class VISIBILITY_HIDDEN RegionExtents {}; } static int RegionExtentsIndex = 0; namespace clang { @@ -108,14 +109,13 @@ class VISIBILITY_HIDDEN RegionStoreManager : public StoreManager { RegionViews::Factory RVFactory; GRStateManager& StateMgr; - MemRegionManager MRMgr; public: RegionStoreManager(GRStateManager& mgr) - : RBFactory(mgr.getAllocator()), + : StoreManager(mgr.getAllocator()), + RBFactory(mgr.getAllocator()), RVFactory(mgr.getAllocator()), - StateMgr(mgr), - MRMgr(StateMgr.getAllocator()) {} + StateMgr(mgr) {} virtual ~RegionStoreManager() {}