diff --git a/lib/StaticAnalyzer/Core/RegionStore.cpp b/lib/StaticAnalyzer/Core/RegionStore.cpp
index 77e9453..32eb56c 100644
--- a/lib/StaticAnalyzer/Core/RegionStore.cpp
+++ b/lib/StaticAnalyzer/Core/RegionStore.cpp
@@ -201,6 +201,21 @@
   Store asStore() const {
     return asImmutableMap().getRootWithoutRetain();
   }
+
+  void dump(llvm::raw_ostream &OS, const char *nl) const {
+   for (iterator I = begin(), E = end(); I != E; ++I) {
+     const ClusterBindings &Cluster = I.getData();
+     for (ClusterBindings::iterator CI = Cluster.begin(), CE = Cluster.end();
+          CI != CE; ++CI) {
+       OS << ' ' << CI.getKey() << " : " << CI.getData() << nl;
+     }
+     OS << nl;
+   }
+  }
+
+  LLVM_ATTRIBUTE_USED void dump() const {
+    dump(llvm::errs(), "\n");
+  }
 };
 } // end anonymous namespace
 
@@ -2037,13 +2052,5 @@
   OS << "Store (direct and default bindings), "
      << B.asStore()
      << " :" << nl;
-
-  for (RegionBindingsRef::iterator I = B.begin(), E = B.end(); I != E; ++I) {
-    const ClusterBindings &Cluster = I.getData();
-    for (ClusterBindings::iterator CI = Cluster.begin(), CE = Cluster.end();
-         CI != CE; ++CI) {
-      OS << ' ' << CI.getKey() << " : " << CI.getData() << nl;
-    }
-    OS << nl;
-  }
+  B.dump(OS, nl);
 }
