diff options
-rw-r--r-- | clang/include/clang/Analysis/PathSensitive/SVals.h | 9 | ||||
-rw-r--r-- | clang/include/clang/Analysis/PathSensitive/ValueManager.h | 8 | ||||
-rw-r--r-- | clang/lib/Analysis/GRSimpleVals.cpp | 9 | ||||
-rw-r--r-- | clang/lib/Analysis/SVals.cpp | 17 |
4 files changed, 21 insertions, 22 deletions
diff --git a/clang/include/clang/Analysis/PathSensitive/SVals.h b/clang/include/clang/Analysis/PathSensitive/SVals.h index 4df19821438..6c9285e5321 100644 --- a/clang/include/clang/Analysis/PathSensitive/SVals.h +++ b/clang/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/clang/include/clang/Analysis/PathSensitive/ValueManager.h b/clang/include/clang/Analysis/PathSensitive/ValueManager.h index 415969b54db..aeabec80de9 100644 --- a/clang/include/clang/Analysis/PathSensitive/ValueManager.h +++ b/clang/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/clang/lib/Analysis/GRSimpleVals.cpp b/clang/lib/Analysis/GRSimpleVals.cpp index 1961da20ffb..107bea705c3 100644 --- a/clang/lib/Analysis/GRSimpleVals.cpp +++ b/clang/lib/Analysis/GRSimpleVals.cpp @@ -231,10 +231,11 @@ SVal GRSimpleVals::DetermEvalBinOpNN(GRExprEngine& Eng, } case nonloc::SymbolValKind: - if (isa<nonloc::ConcreteInt>(R)) - return NonLoc::MakeVal(Eng.getSymbolManager(), - cast<nonloc::SymbolVal>(L).getSymbol(), Op, - cast<nonloc::ConcreteInt>(R).getValue(), T); + if (isa<nonloc::ConcreteInt>(R)) { + ValueManager &ValMgr = Eng.getValueManager(); + return ValMgr.makeNonLoc(cast<nonloc::SymbolVal>(L).getSymbol(), Op, + cast<nonloc::ConcreteInt>(R).getValue(), T); + } else return UnknownVal(); } diff --git a/clang/lib/Analysis/SVals.cpp b/clang/lib/Analysis/SVals.cpp index 572d5ec5558..87a1073f23c 100644 --- a/clang/lib/Analysis/SVals.cpp +++ b/clang/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(); } |