diff options
Diffstat (limited to 'include')
4 files changed, 12 insertions, 8 deletions
diff --git a/include/clang/Analysis/PathSensitive/ExplodedGraph.h b/include/clang/Analysis/PathSensitive/ExplodedGraph.h index 423f4f065c..ca76c48387 100644 --- a/include/clang/Analysis/PathSensitive/ExplodedGraph.h +++ b/include/clang/Analysis/PathSensitive/ExplodedGraph.h @@ -365,9 +365,10 @@ public: }; -template <typename NodeTy> +template <typename StateTy> class ExplodedNodeSet { + typedef ExplodedNode<StateTy> NodeTy; typedef llvm::SmallPtrSet<NodeTy*,5> ImplTy; ImplTy Impl; diff --git a/include/clang/Analysis/PathSensitive/GRCoreEngine.h b/include/clang/Analysis/PathSensitive/GRCoreEngine.h index 53986a326f..151f202dee 100644 --- a/include/clang/Analysis/PathSensitive/GRCoreEngine.h +++ b/include/clang/Analysis/PathSensitive/GRCoreEngine.h @@ -176,7 +176,7 @@ public: return static_cast<NodeTy*>(NB.generateNodeImpl(S, St)); } - NodeTy* Nodify(ExplodedNodeSet<NodeTy>& Dst, Stmt* S, + NodeTy* Nodify(ExplodedNodeSet<StateTy>& Dst, Stmt* S, NodeTy* Pred, StateTy* St) { // If the state hasn't changed, don't generate a new node. diff --git a/include/clang/Analysis/PathSensitive/GRExprEngine.h b/include/clang/Analysis/PathSensitive/GRExprEngine.h index ffbd064c30..c753249779 100644 --- a/include/clang/Analysis/PathSensitive/GRExprEngine.h +++ b/include/clang/Analysis/PathSensitive/GRExprEngine.h @@ -31,7 +31,7 @@ public: typedef GRBranchNodeBuilder<GRExprEngine> BranchNodeBuilder; typedef GRIndirectGotoNodeBuilder<GRExprEngine> IndirectGotoNodeBuilder; typedef GRSwitchNodeBuilder<GRExprEngine> SwitchNodeBuilder; - typedef ExplodedNodeSet<NodeTy> NodeSet; + typedef ExplodedNodeSet<StateTy> NodeSet; protected: /// G - the simulation graph. @@ -414,8 +414,9 @@ protected: return TF->EvalBinOp(ValMgr, Op, cast<NonLVal>(L), cast<NonLVal>(R)); } - ValueState* EvalCall(CallExpr* CE, LVal L, ValueState* St) { - return TF->EvalCall(StateMgr, ValMgr, CE, L, St); + void EvalCall(NodeSet& Dst, CallExpr* CE, LVal L, NodeTy* Pred) { + assert (Builder && "GRStmtNodeBuilder must be defined."); + return TF->EvalCall(Dst, StateMgr, *Builder, ValMgr, CE, L, Pred); } ValueState* MarkBranch(ValueState* St, Stmt* Terminator, bool branchTaken); diff --git a/include/clang/Analysis/PathSensitive/GRTransferFuncs.h b/include/clang/Analysis/PathSensitive/GRTransferFuncs.h index a91a97b91a..ea8a793471 100644 --- a/include/clang/Analysis/PathSensitive/GRTransferFuncs.h +++ b/include/clang/Analysis/PathSensitive/GRTransferFuncs.h @@ -54,9 +54,11 @@ public: // Calls. - virtual ValueState* EvalCall(ValueStateManager& StateMgr, - ValueManager& ValMgr, CallExpr* CE, LVal L, - ValueState* St) = 0; + virtual void EvalCall(ExplodedNodeSet<ValueState>& Dst, + ValueStateManager& StateMgr, + GRStmtNodeBuilder<ValueState>& Builder, + ValueManager& ValMgr, CallExpr* CE, LVal L, + ExplodedNode<ValueState>* Pred) = 0; }; } // end clang namespace |