diff options
-rw-r--r-- | include/clang/Analysis/PathSensitive/SVals.h | 5 | ||||
-rw-r--r-- | lib/Analysis/SVals.cpp | 9 |
2 files changed, 14 insertions, 0 deletions
diff --git a/include/clang/Analysis/PathSensitive/SVals.h b/include/clang/Analysis/PathSensitive/SVals.h index 0bacc863e1..ca78f66099 100644 --- a/include/clang/Analysis/PathSensitive/SVals.h +++ b/include/clang/Analysis/PathSensitive/SVals.h @@ -174,12 +174,17 @@ public: static NonLoc MakeVal(BasicValueFactory& BasicVals, unsigned X, bool isUnsigned); + static NonLoc MakeVal(BasicValueFactory& BasicVals, uint64_t X, + unsigned BitWidth, bool isUnsigned); + static NonLoc MakeVal(BasicValueFactory& BasicVals, uint64_t X, QualType T); static NonLoc MakeVal(BasicValueFactory& BasicVals, IntegerLiteral* I); static NonLoc MakeVal(BasicValueFactory& BasicVals, const llvm::APInt& I, bool isUnsigned); + + static NonLoc MakeVal(BasicValueFactory& BasicVals, const llvm::APSInt& I); static NonLoc MakeIntTruthVal(BasicValueFactory& BasicVals, bool b); diff --git a/lib/Analysis/SVals.cpp b/lib/Analysis/SVals.cpp index 0210729b46..524904dafa 100644 --- a/lib/Analysis/SVals.cpp +++ b/lib/Analysis/SVals.cpp @@ -248,6 +248,11 @@ NonLoc NonLoc::MakeVal(BasicValueFactory& BasicVals, unsigned X, isUnsigned)); } +NonLoc NonLoc::MakeVal(BasicValueFactory& BasicVals, uint64_t X, + unsigned BitWidth, bool isUnsigned) { + return nonloc::ConcreteInt(BasicVals.getValue(X, BitWidth, isUnsigned)); +} + NonLoc NonLoc::MakeVal(BasicValueFactory& BasicVals, uint64_t X, QualType T) { return nonloc::ConcreteInt(BasicVals.getValue(X, T)); } @@ -263,6 +268,10 @@ NonLoc NonLoc::MakeVal(BasicValueFactory& BasicVals, const llvm::APInt& I, return nonloc::ConcreteInt(BasicVals.getValue(I, isUnsigned)); } +NonLoc NonLoc::MakeVal(BasicValueFactory& BasicVals, const llvm::APSInt& I) { + return nonloc::ConcreteInt(BasicVals.getValue(I)); +} + NonLoc NonLoc::MakeIntTruthVal(BasicValueFactory& BasicVals, bool b) { return nonloc::ConcreteInt(BasicVals.getTruthValue(b)); } |