diff --git a/include/clang/Checker/PathSensitive/Store.h b/include/clang/Checker/PathSensitive/Store.h
index b00e9b2..feba9de 100644
--- a/include/clang/Checker/PathSensitive/Store.h
+++ b/include/clang/Checker/PathSensitive/Store.h
@@ -86,7 +86,7 @@
   /// getSubRegionMap - Returns an opaque map object that clients can query
   ///  to get the subregions of a given MemRegion object.  It is the
   //   caller's responsibility to 'delete' the returned map.
-  virtual SubRegionMap *getSubRegionMap(const GRState *state) = 0;
+  virtual SubRegionMap *getSubRegionMap(Store store) = 0;
 
   virtual SVal getLValueVar(const VarDecl *VD, const LocationContext *LC) = 0;
 
diff --git a/lib/Checker/BasicStore.cpp b/lib/Checker/BasicStore.cpp
index 5d8be82..2c83ed9 100644
--- a/lib/Checker/BasicStore.cpp
+++ b/lib/Checker/BasicStore.cpp
@@ -40,7 +40,7 @@
 
   ~BasicStoreManager() {}
 
-  SubRegionMap *getSubRegionMap(const GRState *state) {
+  SubRegionMap *getSubRegionMap(Store store) {
     return new BasicStoreSubRegionMap();
   }
 
diff --git a/lib/Checker/FlatStore.cpp b/lib/Checker/FlatStore.cpp
index e924664..c4f37df 100644
--- a/lib/Checker/FlatStore.cpp
+++ b/lib/Checker/FlatStore.cpp
@@ -37,7 +37,9 @@
     return RBFactory.GetEmptyMap().getRoot();
   }
 
-  SubRegionMap *getSubRegionMap(const GRState *state);
+  SubRegionMap *getSubRegionMap(Store store) {
+    return 0;
+  }
 
   SVal getLValueVar(const VarDecl *VD, const LocationContext *LC);
 
@@ -88,11 +90,6 @@
   return store;
 }
 
-
-SubRegionMap *FlatStoreManager::getSubRegionMap(const GRState *state) {
-  return 0;
-}
-
 SVal FlatStoreManager::getLValueVar(const VarDecl *VD, 
                                     const LocationContext *LC) {
   return UnknownVal();
diff --git a/lib/Checker/GRState.cpp b/lib/Checker/GRState.cpp
index 2e95206..3abc6d2 100644
--- a/lib/Checker/GRState.cpp
+++ b/lib/Checker/GRState.cpp
@@ -301,7 +301,8 @@
 
   // Now look at the subregions.
   if (!SRM.get())
-   SRM.reset(state->getStateManager().getStoreManager().getSubRegionMap(state));
+    SRM.reset(state->getStateManager().getStoreManager().
+                                           getSubRegionMap(state->getStore()));
 
   return SRM->iterSubRegions(R, *this);
 }
diff --git a/lib/Checker/RegionStore.cpp b/lib/Checker/RegionStore.cpp
index c59ecf8..420f665 100644
--- a/lib/Checker/RegionStore.cpp
+++ b/lib/Checker/RegionStore.cpp
@@ -215,7 +215,9 @@
       delete (*I).second;
   }
 
-  SubRegionMap *getSubRegionMap(const GRState *state);
+  SubRegionMap *getSubRegionMap(Store store) {
+    return getRegionStoreSubRegionMap(store);
+  }
 
   RegionStoreSubRegionMap *getRegionStoreSubRegionMap(Store store);
 
@@ -474,15 +476,10 @@
   return M;
 }
 
-SubRegionMap *RegionStoreManager::getSubRegionMap(const GRState *state) {
-  return getRegionStoreSubRegionMap(state->getStore());
-}
-
 //===----------------------------------------------------------------------===//
 // Binding invalidation.
 //===----------------------------------------------------------------------===//
 
-
 void RegionStoreManager::RemoveSubRegionBindings(RegionBindings &B,
                                                  const MemRegion *R,
                                                  RegionStoreSubRegionMap &M) {
