aboutsummaryrefslogtreecommitdiff
path: root/lib/Analysis/GRTransferFuncs.cpp
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2008-07-17 21:27:31 +0000
committerTed Kremenek <kremenek@apple.com>2008-07-17 21:27:31 +0000
commitdf7533b5e523a3def04b5c33b56361a94dd97d35 (patch)
treeeb6b3bdbc20a65ef672764c3681b99b2111b6d6d /lib/Analysis/GRTransferFuncs.cpp
parent1f3846e3013a3b6679aeaa2e4c61de37a5c320ee (diff)
Begin major changes to EvalXXX methods in GRTransferFuncs. Currently some of the methods only return an RVal; we want them to be able to create an arbitrary number of states.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53739 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Analysis/GRTransferFuncs.cpp')
-rw-r--r--lib/Analysis/GRTransferFuncs.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/lib/Analysis/GRTransferFuncs.cpp b/lib/Analysis/GRTransferFuncs.cpp
index a31f8aaa1b..cf32a073c1 100644
--- a/lib/Analysis/GRTransferFuncs.cpp
+++ b/lib/Analysis/GRTransferFuncs.cpp
@@ -37,3 +37,18 @@ void GRTransferFuncs::EvalStore(ExplodedNodeSet<ValueState>& Dst,
Builder.MakeNode(Dst, E, Pred,
Eng.getStateManager().SetRVal(St, cast<LVal>(TargetLV), Val));
}
+
+void GRTransferFuncs::EvalBinOpNN(ExplodedNodeSet<ValueState>& Dst,
+ GRExprEngine& Engine,
+ GRStmtNodeBuilder<ValueState>& Builder,
+ BinaryOperator::Opcode Op,
+ Expr* Ex,
+ NonLVal L, NonLVal R,
+ ExplodedNode<ValueState>* Pred) {
+
+ ValueStateManager& StateMgr = Engine.getStateManager();
+ const ValueState* St = Builder.GetState(Pred);
+
+ RVal Result = EvalBinOp(Engine, Op, L, R);
+ Builder.MakeNode(Dst, Ex, Pred, StateMgr.SetRVal(St, Ex, Result));
+}