Remove SVal::MakeZero and replace it with ValueManager::makeZeroVal.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68711 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/include/clang/Analysis/PathSensitive/GRExprEngine.h b/include/clang/Analysis/PathSensitive/GRExprEngine.h
index 9c401be..29acc70 100644
--- a/include/clang/Analysis/PathSensitive/GRExprEngine.h
+++ b/include/clang/Analysis/PathSensitive/GRExprEngine.h
@@ -63,6 +63,9 @@
   /// SymMgr - Object that manages the symbol information.
   SymbolManager& SymMgr;
   
+  /// ValMgr - Object that manages/creates SVals.
+  ValueManager &ValMgr;
+  
   /// EntryNode - The immediate predecessor node.
   NodeTy* EntryNode;
 
@@ -465,13 +468,8 @@
     return StateMgr.getBasicVals();
   }
   
-  ValueManager &getValueManager() {
-    return StateMgr.getValueManager();
-  }
-  
-  const ValueManager &getValueManager() const {
-    return StateMgr.getValueManager();
-  }
+  ValueManager &getValueManager() { return ValMgr; }  
+  const ValueManager &getValueManager() const { return ValMgr; }
   
   // FIXME: Remove when we migrate over to just using ValueManager.
   SymbolManager& getSymbolManager() { return SymMgr; }
diff --git a/include/clang/Analysis/PathSensitive/SVals.h b/include/clang/Analysis/PathSensitive/SVals.h
index f3a2d36..df40780 100644
--- a/include/clang/Analysis/PathSensitive/SVals.h
+++ b/include/clang/Analysis/PathSensitive/SVals.h
@@ -97,8 +97,6 @@
     return getRawKind() > UnknownKind;
   }
   
-  static SVal MakeZero(BasicValueFactory &BasicVals, QualType T);
-  
   bool isZeroConstant() const;
   
   /// getAsLocSymbol - If this SVal is a location (subclasses Loc) and 
diff --git a/include/clang/Analysis/PathSensitive/ValueManager.h b/include/clang/Analysis/PathSensitive/ValueManager.h
index b60c86d..28aa791 100644
--- a/include/clang/Analysis/PathSensitive/ValueManager.h
+++ b/include/clang/Analysis/PathSensitive/ValueManager.h
@@ -77,6 +77,9 @@
   Loc makeRegionVal(SymbolRef Sym) {
     return Loc::MakeVal(MemMgr->getSymbolicRegion(Sym));
   }
+  
+  /// makeZeroVal - Construct an SVal representing '0' for the specified type.
+  SVal makeZeroVal(QualType T);
 };
 } // end clang namespace
 #endif
diff --git a/lib/Analysis/GRExprEngine.cpp b/lib/Analysis/GRExprEngine.cpp
index 1c596bb..2a43b9a 100644
--- a/lib/Analysis/GRExprEngine.cpp
+++ b/lib/Analysis/GRExprEngine.cpp
@@ -122,6 +122,7 @@
     Builder(NULL),
     StateMgr(G.getContext(), SMC, CMC, G.getAllocator(), cfg, CD, L),
     SymMgr(StateMgr.getSymbolManager()),
+    ValMgr(StateMgr.getValueManager()),
     CurrentStmt(NULL),
     NSExceptionII(NULL), NSExceptionInstanceRaiseSelectors(NULL),
     RaiseSel(GetNullarySelector("raise", G.getContext())), 
@@ -1742,7 +1743,7 @@
               // it most likely isn't nil.  We should assume the semantics
               // of this case unless we have *a lot* more knowledge.
               //
-              SVal V = SVal::MakeZero(getBasicVals(), ME->getType());
+              SVal V = ValMgr.makeZeroVal(ME->getType());
               MakeNode(Dst, ME, Pred, BindExpr(StNull, ME, V));
               return;
             }
diff --git a/lib/Analysis/SVals.cpp b/lib/Analysis/SVals.cpp
index b78eea7..8fdc37f 100644
--- a/lib/Analysis/SVals.cpp
+++ b/lib/Analysis/SVals.cpp
@@ -205,7 +205,7 @@
 // Utility methods for constructing SVals.
 //===----------------------------------------------------------------------===//
 
-SVal SVal::MakeZero(BasicValueFactory &BasicVals, QualType T) {
+SVal ValueManager::makeZeroVal(QualType T) {
   if (Loc::IsLocType(T))
     return Loc::MakeNull(BasicVals);