From: Ted Kremenek Date: Fri, 18 Jul 2008 15:27:58 +0000 (+0000) Subject: Renamed deterministic EvalBinOp to DetermEvalBinOpNN. This name mangling is unfortun... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ad8329e58df5b0b2c44dca1447b324467a6c5da1;p=clang 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 4a04247139..0a0516e602 100644 --- a/include/clang/Analysis/PathSensitive/GRExprEngine.h +++ b/include/clang/Analysis/PathSensitive/GRExprEngine.h @@ -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(R)) : R; + return R.isValid() ? getTF().DetermEvalBinOpNN(getStateManager(), Op, L, + cast(R)) : R; } void EvalBinOp(ExplodedNodeSet& Dst, Expr* Ex, @@ -589,8 +590,8 @@ protected: cast(L)); } else - return getTF().EvalBinOp(getStateManager(), Op, cast(L), - cast(R)); + return getTF().DetermEvalBinOpNN(getStateManager(), Op, cast(L), + cast(R)); } diff --git a/include/clang/Analysis/PathSensitive/GRTransferFuncs.h b/include/clang/Analysis/PathSensitive/GRTransferFuncs.h index db7de81621..8a9b9741d4 100644 --- a/include/clang/Analysis/PathSensitive/GRTransferFuncs.h +++ b/include/clang/Analysis/PathSensitive/GRTransferFuncs.h @@ -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); diff --git a/lib/Analysis/GRSimpleVals.cpp b/lib/Analysis/GRSimpleVals.cpp index f95ccb564f..cc31ddddef 100644 --- a/lib/Analysis/GRSimpleVals.cpp +++ b/lib/Analysis/GRSimpleVals.cpp @@ -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(); diff --git a/lib/Analysis/GRSimpleVals.h b/lib/Analysis/GRSimpleVals.h index fc20c3e5bc..ac07f8b324 100644 --- a/lib/Analysis/GRSimpleVals.h +++ b/lib/Analysis/GRSimpleVals.h @@ -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); diff --git a/lib/Analysis/GRTransferFuncs.cpp b/lib/Analysis/GRTransferFuncs.cpp index 9d9c97f0ed..e30e0712c5 100644 --- a/lib/Analysis/GRTransferFuncs.cpp +++ b/lib/Analysis/GRTransferFuncs.cpp @@ -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))); }