summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
Diffstat (limited to 'clang')
-rw-r--r--clang/include/clang/Analysis/PathSensitive/GRExprEngine.h12
-rw-r--r--clang/include/clang/Analysis/PathSensitive/SVals.h2
-rw-r--r--clang/include/clang/Analysis/PathSensitive/ValueManager.h3
-rw-r--r--clang/lib/Analysis/GRExprEngine.cpp3
-rw-r--r--clang/lib/Analysis/SVals.cpp2
5 files changed, 11 insertions, 11 deletions
diff --git a/clang/include/clang/Analysis/PathSensitive/GRExprEngine.h b/clang/include/clang/Analysis/PathSensitive/GRExprEngine.h
index 9c401bedc2e..29acc707da6 100644
--- a/clang/include/clang/Analysis/PathSensitive/GRExprEngine.h
+++ b/clang/include/clang/Analysis/PathSensitive/GRExprEngine.h
@@ -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; }
diff --git a/clang/include/clang/Analysis/PathSensitive/SVals.h b/clang/include/clang/Analysis/PathSensitive/SVals.h
index f3a2d369e75..df407801815 100644
--- a/clang/include/clang/Analysis/PathSensitive/SVals.h
+++ b/clang/include/clang/Analysis/PathSensitive/SVals.h
@@ -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
diff --git a/clang/include/clang/Analysis/PathSensitive/ValueManager.h b/clang/include/clang/Analysis/PathSensitive/ValueManager.h
index b60c86d31a9..28aa791c023 100644
--- a/clang/include/clang/Analysis/PathSensitive/ValueManager.h
+++ b/clang/include/clang/Analysis/PathSensitive/ValueManager.h
@@ -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
diff --git a/clang/lib/Analysis/GRExprEngine.cpp b/clang/lib/Analysis/GRExprEngine.cpp
index 1c596bb2b49..2a43b9a89ea 100644
--- a/clang/lib/Analysis/GRExprEngine.cpp
+++ b/clang/lib/Analysis/GRExprEngine.cpp
@@ -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;
}
diff --git a/clang/lib/Analysis/SVals.cpp b/clang/lib/Analysis/SVals.cpp
index b78eea72c9f..8fdc37fe737 100644
--- a/clang/lib/Analysis/SVals.cpp
+++ b/clang/lib/Analysis/SVals.cpp
@@ -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);
OpenPOWER on IntegriCloud