diff options
author | Ted Kremenek <kremenek@apple.com> | 2008-07-18 05:53:58 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2008-07-18 05:53:58 +0000 |
commit | 6297a8ec313c722db50f686fd190842b7ea91118 (patch) | |
tree | f57dcbafbe06eee9a7ce3737a98c3a97135d51b7 /lib/Analysis/GRTransferFuncs.cpp | |
parent | 4d9985ab390079ccc8b05b6c349026f237567b8f (diff) |
Created ValueStateSet class to manage the creation of multiple states by a method.
Modified the new EvalBinOpNN to generate states instead of nodes. This is a much simpler interface and is what clients will want to do.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53750 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Analysis/GRTransferFuncs.cpp')
-rw-r--r-- | lib/Analysis/GRTransferFuncs.cpp | 16 |
1 files changed, 5 insertions, 11 deletions
diff --git a/lib/Analysis/GRTransferFuncs.cpp b/lib/Analysis/GRTransferFuncs.cpp index cf32a073c1..9d9c97f0ed 100644 --- a/lib/Analysis/GRTransferFuncs.cpp +++ b/lib/Analysis/GRTransferFuncs.cpp @@ -38,17 +38,11 @@ void GRTransferFuncs::EvalStore(ExplodedNodeSet<ValueState>& Dst, Eng.getStateManager().SetRVal(St, cast<LVal>(TargetLV), Val)); } -void GRTransferFuncs::EvalBinOpNN(ExplodedNodeSet<ValueState>& Dst, - GRExprEngine& Engine, - GRStmtNodeBuilder<ValueState>& Builder, +void GRTransferFuncs::EvalBinOpNN(ValueStateSet& OStates, + ValueStateManager& StateMgr, + const ValueState *St, Expr* Ex, BinaryOperator::Opcode Op, - Expr* Ex, - NonLVal L, NonLVal R, - ExplodedNode<ValueState>* Pred) { - - ValueStateManager& StateMgr = Engine.getStateManager(); - const ValueState* St = Builder.GetState(Pred); + NonLVal L, NonLVal R) { - RVal Result = EvalBinOp(Engine, Op, L, R); - Builder.MakeNode(Dst, Ex, Pred, StateMgr.SetRVal(St, Ex, Result)); + OStates.Add(StateMgr.SetRVal(St, Ex, EvalBinOp(StateMgr, Op, L, R))); } |