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);
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
}
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();
}
// 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.
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));
// Only handle integers for now.
if (T->isIntegerType() && T->isScalarType())
- return NonLoc::MakeVal(sym);
+ return makeNonLoc(sym);
}
return UnknownVal();
return Loc::MakeVal(MemMgr.getSymbolicRegion(sym));
if (T->isIntegerType() && T->isScalarType())
- return NonLoc::MakeVal(sym);
+ return makeNonLoc(sym);
return UnknownVal();
}
return Loc::MakeVal(MemMgr.getSymbolicRegion(sym));
if (T->isIntegerType() && T->isScalarType())
- return NonLoc::MakeVal(sym);
+ return makeNonLoc(sym);
return UnknownVal();
}