From fc3388dfddf760cf3484fd99de28e1eb53769554 Mon Sep 17 00:00:00 2001 From: Ted Kremenek Date: Fri, 10 Apr 2009 18:11:44 +0000 Subject: [PATCH] Move a few more NonLoc static functions to ValueManager. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68800 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/clang/Analysis/PathSensitive/SVals.h | 9 --------- .../clang/Analysis/PathSensitive/ValueManager.h | 8 ++++++++ lib/Analysis/GRSimpleVals.cpp | 9 +++++---- lib/Analysis/SVals.cpp | 17 ++++++++--------- 4 files changed, 21 insertions(+), 22 deletions(-) diff --git a/include/clang/Analysis/PathSensitive/SVals.h b/include/clang/Analysis/PathSensitive/SVals.h index 4df1982143..6c9285e532 100644 --- a/include/clang/Analysis/PathSensitive/SVals.h +++ b/include/clang/Analysis/PathSensitive/SVals.h @@ -164,15 +164,6 @@ public: void print(llvm::raw_ostream& Out) const; // Utility methods to create NonLocs. - static NonLoc MakeVal(SymbolRef sym); - - static NonLoc MakeVal(SymbolManager& SymMgr, const SymExpr *lhs, - BinaryOperator::Opcode op, const llvm::APSInt& rhs, - QualType T); - - static NonLoc MakeVal(SymbolManager& SymMgr, const SymExpr *lhs, - BinaryOperator::Opcode op, const SymExpr *rhs, - QualType T); static NonLoc MakeIntVal(BasicValueFactory& BasicVals, uint64_t X, bool isUnsigned); diff --git a/include/clang/Analysis/PathSensitive/ValueManager.h b/include/clang/Analysis/PathSensitive/ValueManager.h index 415969b54d..aeabec80de 100644 --- a/include/clang/Analysis/PathSensitive/ValueManager.h +++ b/include/clang/Analysis/PathSensitive/ValueManager.h @@ -84,6 +84,14 @@ public: SVal getConjuredSymbolVal(const Expr* E, QualType T, unsigned Count); SVal getFunctionPointer(const FunctionDecl* FD); + + NonLoc makeNonLoc(SymbolRef sym); + + NonLoc makeNonLoc(const SymExpr *lhs, BinaryOperator::Opcode op, + const llvm::APSInt& rhs, QualType T); + + NonLoc makeNonLoc(const SymExpr *lhs, BinaryOperator::Opcode op, + const SymExpr *rhs, QualType T); }; } // end clang namespace #endif diff --git a/lib/Analysis/GRSimpleVals.cpp b/lib/Analysis/GRSimpleVals.cpp index 1961da20ff..107bea705c 100644 --- a/lib/Analysis/GRSimpleVals.cpp +++ b/lib/Analysis/GRSimpleVals.cpp @@ -231,10 +231,11 @@ SVal GRSimpleVals::DetermEvalBinOpNN(GRExprEngine& Eng, } case nonloc::SymbolValKind: - if (isa(R)) - return NonLoc::MakeVal(Eng.getSymbolManager(), - cast(L).getSymbol(), Op, - cast(R).getValue(), T); + if (isa(R)) { + ValueManager &ValMgr = Eng.getValueManager(); + return ValMgr.makeNonLoc(cast(L).getSymbol(), Op, + cast(R).getValue(), T); + } else return UnknownVal(); } diff --git a/lib/Analysis/SVals.cpp b/lib/Analysis/SVals.cpp index 572d5ec555..87a1073f23 100644 --- a/lib/Analysis/SVals.cpp +++ b/lib/Analysis/SVals.cpp @@ -218,12 +218,12 @@ SVal ValueManager::makeZeroVal(QualType T) { // Utility methods for constructing Non-Locs. //===----------------------------------------------------------------------===// -NonLoc NonLoc::MakeVal(SymbolRef sym) { +NonLoc ValueManager::makeNonLoc(SymbolRef sym) { return nonloc::SymbolVal(sym); } -NonLoc NonLoc::MakeVal(SymbolManager& SymMgr, const SymExpr *lhs, - BinaryOperator::Opcode op, const APSInt& v, QualType T) { +NonLoc ValueManager::makeNonLoc(const SymExpr *lhs, BinaryOperator::Opcode op, + const APSInt& v, QualType T) { // The Environment ensures we always get a persistent APSInt in // BasicValueFactory, so we don't need to get the APSInt from // BasicValueFactory again. @@ -231,9 +231,8 @@ NonLoc NonLoc::MakeVal(SymbolManager& SymMgr, const SymExpr *lhs, return nonloc::SymExprVal(SymMgr.getSymIntExpr(lhs, op, v, T)); } -NonLoc NonLoc::MakeVal(SymbolManager& SymMgr, const SymExpr *lhs, - BinaryOperator::Opcode op, const SymExpr *rhs, -QualType T) { +NonLoc ValueManager::makeNonLoc(const SymExpr *lhs, BinaryOperator::Opcode op, + const SymExpr *rhs, QualType T) { assert(SymMgr.getType(lhs) == SymMgr.getType(rhs)); assert(!Loc::IsLocType(T)); return nonloc::SymExprVal(SymMgr.getSymSymExpr(lhs, op, rhs, T)); @@ -294,7 +293,7 @@ SVal ValueManager::getRValueSymbolVal(const MemRegion* R) { // Only handle integers for now. if (T->isIntegerType() && T->isScalarType()) - return NonLoc::MakeVal(sym); + return makeNonLoc(sym); } return UnknownVal(); @@ -314,7 +313,7 @@ SVal ValueManager::getConjuredSymbolVal(const Expr* E, unsigned Count) { return Loc::MakeVal(MemMgr.getSymbolicRegion(sym)); if (T->isIntegerType() && T->isScalarType()) - return NonLoc::MakeVal(sym); + return makeNonLoc(sym); return UnknownVal(); } @@ -334,7 +333,7 @@ SVal ValueManager::getConjuredSymbolVal(const Expr* E, QualType T, return Loc::MakeVal(MemMgr.getSymbolicRegion(sym)); if (T->isIntegerType() && T->isScalarType()) - return NonLoc::MakeVal(sym); + return makeNonLoc(sym); return UnknownVal(); } -- 2.40.0