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
diff --git a/lib/Analysis/GRTransferFuncs.cpp b/lib/Analysis/GRTransferFuncs.cpp
index a31f8aa..cf32a07 100644
--- a/lib/Analysis/GRTransferFuncs.cpp
+++ b/lib/Analysis/GRTransferFuncs.cpp
@@ -37,3 +37,18 @@
     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));
+}