summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
Diffstat (limited to 'clang')
-rw-r--r--clang/include/clang/Analysis/PathSensitive/GRState.h22
-rw-r--r--clang/lib/Analysis/GRExprEngine.cpp4
2 files changed, 14 insertions, 12 deletions
diff --git a/clang/include/clang/Analysis/PathSensitive/GRState.h b/clang/include/clang/Analysis/PathSensitive/GRState.h
index 98f1242ad81..1f230dfaf20 100644
--- a/clang/include/clang/Analysis/PathSensitive/GRState.h
+++ b/clang/include/clang/Analysis/PathSensitive/GRState.h
@@ -218,6 +218,10 @@ public:
return bindExpr(Ex, V, true, false);
}
+ const GRState *bindDecl(const VarDecl* VD, SVal IVal) const;
+
+ const GRState *bindDeclWithNoInit(const VarDecl* VD) const;
+
const GRState *bindLoc(Loc location, SVal V) const;
const GRState *bindLoc(SVal location, SVal V) const;
@@ -498,16 +502,6 @@ public:
StoreManager& getStoreManager() { return *StoreMgr; }
ConstraintManager& getConstraintManager() { return *ConstraintMgr; }
- const GRState* BindDecl(const GRState* St, const VarDecl* VD, SVal IVal) {
- // Store manager should return a persistent state.
- return StoreMgr->BindDecl(St, VD, IVal);
- }
-
- const GRState* BindDeclWithNoInit(const GRState* St, const VarDecl* VD) {
- // Store manager should return a persistent state.
- return StoreMgr->BindDeclWithNoInit(St, VD);
- }
-
const GRState* RemoveDeadBindings(const GRState* St, Stmt* Loc,
SymbolReaper& SymReaper);
@@ -709,6 +703,14 @@ inline const GRState *GRState::bindCompoundLiteral(const CompoundLiteralExpr* CL
return Mgr->StoreMgr->BindCompoundLiteral(this, CL, V);
}
+inline const GRState *GRState::bindDecl(const VarDecl* VD, SVal IVal) const {
+ return Mgr->StoreMgr->BindDecl(this, VD, IVal);
+}
+
+inline const GRState *GRState::bindDeclWithNoInit(const VarDecl* VD) const {
+ return Mgr->StoreMgr->BindDeclWithNoInit(this, VD);
+}
+
inline const GRState *GRState::bindExpr(const Stmt* Ex, SVal V, bool isBlkExpr,
bool Invalidate) const {
return Mgr->BindExpr(this, Ex, V, isBlkExpr, Invalidate);
diff --git a/clang/lib/Analysis/GRExprEngine.cpp b/clang/lib/Analysis/GRExprEngine.cpp
index 7d56d108deb..c32c424b669 100644
--- a/clang/lib/Analysis/GRExprEngine.cpp
+++ b/clang/lib/Analysis/GRExprEngine.cpp
@@ -2247,7 +2247,7 @@ void GRExprEngine::VisitDeclStmt(DeclStmt* DS, NodeTy* Pred, NodeSet& Dst) {
InitVal = ValMgr.getConjuredSymbolVal(InitEx, Count);
}
- state = StateMgr.BindDecl(state, VD, InitVal);
+ state = state->bindDecl(VD, InitVal);
// The next thing to do is check if the GRTransferFuncs object wants to
// update the state based on the new binding. If the GRTransferFunc
@@ -2257,7 +2257,7 @@ void GRExprEngine::VisitDeclStmt(DeclStmt* DS, NodeTy* Pred, NodeSet& Dst) {
InitVal);
}
else {
- state = StateMgr.BindDeclWithNoInit(state, VD);
+ state = state->bindDeclWithNoInit(VD);
MakeNode(Dst, DS, *I, state);
}
}
OpenPOWER on IntegriCloud