summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang/include/clang/Analysis/PathSensitive/SVals.h9
-rw-r--r--clang/include/clang/Analysis/PathSensitive/ValueManager.h8
-rw-r--r--clang/lib/Analysis/GRSimpleVals.cpp9
-rw-r--r--clang/lib/Analysis/SVals.cpp17
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();
}
OpenPOWER on IntegriCloud