aboutsummaryrefslogtreecommitdiff
path: root/lib/Analysis/GRTransferFuncs.cpp
diff options
context:
space:
mode:
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));
+}