diff options
Diffstat (limited to 'clang')
-rw-r--r-- | clang/include/clang/Analysis/PathSensitive/GRState.h | 22 | ||||
-rw-r--r-- | clang/lib/Analysis/GRExprEngine.cpp | 4 |
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); } } |