Refactored most of the "Store" piece of ValueState into a Store type. The
current store implementation is now encapsulated by BasicStore.

These changes prompted some long due constification of ValueState. Much of the
diffs in this patch include adding "const" qualifiers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53423 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Analysis/GRSimpleVals.cpp b/lib/Analysis/GRSimpleVals.cpp
index 926bcc8..7d7afe3 100644
--- a/lib/Analysis/GRSimpleVals.cpp
+++ b/lib/Analysis/GRSimpleVals.cpp
@@ -265,9 +265,9 @@
 
 struct VISIBILITY_HIDDEN FindUndefExpr {
   ValueStateManager& VM;
-  ValueState* St;
+  const ValueState* St;
   
-  FindUndefExpr(ValueStateManager& V, ValueState* S) : VM(V), St(S) {}
+  FindUndefExpr(ValueStateManager& V, const ValueState* S) : VM(V), St(S) {}
   
   Expr* FindExpr(Expr* Ex) {
     
@@ -319,7 +319,7 @@
     ExplodedNode<ValueState> *N = *(*I)->pred_begin();
     ProgramPoint P = N->getLocation();
 
-    ValueState* St = (*I)->getState();
+    const ValueState* St = (*I)->getState();
     
     if (PostStmt* PS = dyn_cast<PostStmt>(&P))
       if (PS->getStmt() == Ex)
@@ -652,7 +652,7 @@
                             ExplodedNode<ValueState>* Pred) {
   
   ValueStateManager& StateMgr = Eng.getStateManager();
-  ValueState* St = Builder.GetState(Pred);
+  const ValueState* St = Builder.GetState(Pred);
   
   // Invalidate all arguments passed in by reference (LVals).
 
@@ -700,7 +700,7 @@
   // We just invalidate all arguments passed in by references.
   
   ValueStateManager& StateMgr = Eng.getStateManager();
-  ValueState* St = Builder.GetState(Pred);
+  const ValueState* St = Builder.GetState(Pred);
   
   for (ObjCMessageExpr::arg_iterator I = ME->arg_begin(), E = ME->arg_end();
        I != E; ++I) {