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
This commit is contained in:
Ted Kremenek 2008-07-18 15:27:58 +00:00
Родитель 6297a8ec31
Коммит ad8329e58d
5 изменённых файлов: 29 добавлений и 17 удалений

Просмотреть файл

@ -548,12 +548,13 @@ protected:
}
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 @@ protected:
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));
}

Просмотреть файл

@ -25,6 +25,19 @@ namespace clang {
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 @@ public:
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);

Просмотреть файл

@ -450,8 +450,9 @@ RVal GRSimpleVals::EvalComplement(GRExprEngine& Eng, NonLVal X) {
// 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();

Просмотреть файл

@ -25,6 +25,12 @@ class PathDiagnostic;
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 @@ public:
// 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);

Просмотреть файл

@ -44,5 +44,5 @@ void GRTransferFuncs::EvalBinOpNN(ValueStateSet& OStates,
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)));
}