aboutsummaryrefslogtreecommitdiff
path: root/include/clang
diff options
context:
space:
mode:
Diffstat (limited to 'include/clang')
-rw-r--r--include/clang/Analysis/PathSensitive/ExplodedGraph.h3
-rw-r--r--include/clang/Analysis/PathSensitive/GRCoreEngine.h2
-rw-r--r--include/clang/Analysis/PathSensitive/GRExprEngine.h7
-rw-r--r--include/clang/Analysis/PathSensitive/GRTransferFuncs.h8
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