]> granicus.if.org Git - clang/commitdiff
Remove SVal::MakeZero and replace it with ValueManager::makeZeroVal.
authorTed Kremenek <kremenek@apple.com>
Thu, 9 Apr 2009 16:46:55 +0000 (16:46 +0000)
committerTed Kremenek <kremenek@apple.com>
Thu, 9 Apr 2009 16:46:55 +0000 (16:46 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68711 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Analysis/PathSensitive/GRExprEngine.h
include/clang/Analysis/PathSensitive/SVals.h
include/clang/Analysis/PathSensitive/ValueManager.h
lib/Analysis/GRExprEngine.cpp
lib/Analysis/SVals.cpp

index 9c401bedc2e4ae3fcce88ee0ed187738265ed980..29acc707da633033bf2fdb52fc9d59e3e1186cbb 100644 (file)
@@ -63,6 +63,9 @@ protected:
   /// 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 @@ public:
     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; }
index f3a2d369e750a1ac0a309164c5dff2cb3debcefd..df407801815c49bfd118a5d1630c317f83285764 100644 (file)
@@ -97,8 +97,6 @@ public:
     return getRawKind() > UnknownKind;
   }
   
-  static SVal MakeZero(BasicValueFactory &BasicVals, QualType T);
-  
   bool isZeroConstant() const;
   
   /// getAsLocSymbol - If this SVal is a location (subclasses Loc) and 
index b60c86d31a99896760d2a2e2434c15d173b672b9..28aa791c0234d9cc0b3ffde1038fee8797d24945 100644 (file)
@@ -77,6 +77,9 @@ public:
   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
index 1c596bb2b491615742f9749c472f90d2e00176e2..2a43b9a89eaaa96ce7c57af97323559c470cb4aa 100644 (file)
@@ -122,6 +122,7 @@ GRExprEngine::GRExprEngine(CFG& cfg, Decl& CD, ASTContext& Ctx,
     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 @@ void GRExprEngine::VisitObjCMessageExprDispatchHelper(ObjCMessageExpr* ME,
               // 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;
             }
index b78eea72c9f306fe72ab27345a4c390bce313c4c..8fdc37fe73750e5d0377b2ac30e77df43f37677f 100644 (file)
@@ -205,7 +205,7 @@ SVal loc::ConcreteInt::EvalBinOp(BasicValueFactory& BasicVals,
 // 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);