Renamed deterministic EvalBinOp to DetermEvalBinOpNN. This name mangling is unfortunately needed because virtual methods with the same name can be hidden by subclasses.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53751 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/include/clang/Analysis/PathSensitive/GRExprEngine.h b/include/clang/Analysis/PathSensitive/GRExprEngine.h
index 4a042471..0a0516e 100644
--- a/include/clang/Analysis/PathSensitive/GRExprEngine.h
+++ b/include/clang/Analysis/PathSensitive/GRExprEngine.h
@@ -548,12 +548,13 @@
}
RVal EvalBinOp(BinaryOperator::Opcode Op, NonLVal L, NonLVal R) {
- return R.isValid() ? getTF().EvalBinOp(getStateManager(), Op, L, R) : R;
+ return R.isValid() ? getTF().DetermEvalBinOpNN(getStateManager(), Op, L, R)
+ : R;
}
RVal EvalBinOp(BinaryOperator::Opcode Op, NonLVal L, RVal R) {
- return R.isValid() ? getTF().EvalBinOp(getStateManager(), Op, L,
- cast<NonLVal>(R)) : R;
+ return R.isValid() ? getTF().DetermEvalBinOpNN(getStateManager(), Op, L,
+ cast<NonLVal>(R)) : R;
}
void EvalBinOp(ExplodedNodeSet<ValueState>& Dst, Expr* Ex,
@@ -589,8 +590,8 @@
cast<NonLVal>(L));
}
else
- return getTF().EvalBinOp(getStateManager(), Op, cast<NonLVal>(L),
- cast<NonLVal>(R));
+ return getTF().DetermEvalBinOpNN(getStateManager(), Op, cast<NonLVal>(L),
+ cast<NonLVal>(R));
}
diff --git a/include/clang/Analysis/PathSensitive/GRTransferFuncs.h b/include/clang/Analysis/PathSensitive/GRTransferFuncs.h
index db7de81..8a9b974 100644
--- a/include/clang/Analysis/PathSensitive/GRTransferFuncs.h
+++ b/include/clang/Analysis/PathSensitive/GRTransferFuncs.h
@@ -25,6 +25,19 @@
class ObjCMessageExpr;
class GRTransferFuncs {
+
+ friend class GRExprEngine;
+
+protected:
+
+
+ virtual RVal DetermEvalBinOpNN(ValueStateManager& StateMgr,
+ BinaryOperator::Opcode Op,
+ NonLVal L, NonLVal R) {
+ return UnknownVal();
+ }
+
+
public:
GRTransferFuncs() {}
virtual ~GRTransferFuncs() {}
@@ -47,12 +60,6 @@
virtual RVal EvalComplement(GRExprEngine& Engine, NonLVal X) = 0;
// Binary Operators.
-
- virtual RVal EvalBinOp(ValueStateManager& StateMgr, BinaryOperator::Opcode Op,
- NonLVal L, NonLVal R) {
- return UnknownVal();
- }
-
virtual void EvalBinOpNN(ValueStateSet& OStates, ValueStateManager& StateMgr,
const ValueState* St, Expr* Ex,
BinaryOperator::Opcode Op, NonLVal L, NonLVal R);
diff --git a/lib/Analysis/GRSimpleVals.cpp b/lib/Analysis/GRSimpleVals.cpp
index f95ccb5..cc31ddd 100644
--- a/lib/Analysis/GRSimpleVals.cpp
+++ b/lib/Analysis/GRSimpleVals.cpp
@@ -450,8 +450,9 @@
// Binary operators.
-RVal GRSimpleVals::EvalBinOp(ValueStateManager& StateMgr,
- BinaryOperator::Opcode Op, NonLVal L, NonLVal R) {
+RVal GRSimpleVals::DetermEvalBinOpNN(ValueStateManager& StateMgr,
+ BinaryOperator::Opcode Op,
+ NonLVal L, NonLVal R) {
BasicValueFactory& BasicVals = StateMgr.getBasicVals();
diff --git a/lib/Analysis/GRSimpleVals.h b/lib/Analysis/GRSimpleVals.h
index fc20c3e..ac07f8b 100644
--- a/lib/Analysis/GRSimpleVals.h
+++ b/lib/Analysis/GRSimpleVals.h
@@ -25,6 +25,12 @@
class ASTContext;
class GRSimpleVals : public GRTransferFuncs {
+protected:
+
+ virtual RVal DetermEvalBinOpNN(ValueStateManager& StateMgr,
+ BinaryOperator::Opcode Op,
+ NonLVal L, NonLVal R);
+
public:
GRSimpleVals() {}
virtual ~GRSimpleVals() {}
@@ -44,9 +50,6 @@
// Binary Operators.
- virtual RVal EvalBinOp(ValueStateManager& StateMgr, BinaryOperator::Opcode Op,
- NonLVal L, NonLVal R);
-
virtual RVal EvalBinOp(GRExprEngine& Engine, BinaryOperator::Opcode Op,
LVal L, LVal R);
diff --git a/lib/Analysis/GRTransferFuncs.cpp b/lib/Analysis/GRTransferFuncs.cpp
index 9d9c97f..e30e071 100644
--- a/lib/Analysis/GRTransferFuncs.cpp
+++ b/lib/Analysis/GRTransferFuncs.cpp
@@ -44,5 +44,5 @@
BinaryOperator::Opcode Op,
NonLVal L, NonLVal R) {
- OStates.Add(StateMgr.SetRVal(St, Ex, EvalBinOp(StateMgr, Op, L, R)));
+ OStates.Add(StateMgr.SetRVal(St, Ex, DetermEvalBinOpNN(StateMgr, Op, L, R)));
}