diff options
author | Balazs Benics <benicsbalazs@gmail.com> | 2024-12-19 12:51:40 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-12-19 12:51:40 +0100 |
commit | d0d5101f9959013e42f6f07d79d0fe638aaa0aa3 (patch) | |
tree | fe9b5b9bb71d9fa253bea32f7ad8801962ed1da5 /clang/lib/StaticAnalyzer/Checkers/ArrayBoundCheckerV2.cpp | |
parent | 060d62b48aeb5080ffcae1dc56e41a06c6f56701 (diff) | |
download | llvm-d0d5101f9959013e42f6f07d79d0fe638aaa0aa3.zip llvm-d0d5101f9959013e42f6f07d79d0fe638aaa0aa3.tar.gz llvm-d0d5101f9959013e42f6f07d79d0fe638aaa0aa3.tar.bz2 |
[analyzer][NFC] Migrate nonloc::ConcreteInt to use APSIntPtr (2/4) (#120436)
Diffstat (limited to 'clang/lib/StaticAnalyzer/Checkers/ArrayBoundCheckerV2.cpp')
-rw-r--r-- | clang/lib/StaticAnalyzer/Checkers/ArrayBoundCheckerV2.cpp | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/clang/lib/StaticAnalyzer/Checkers/ArrayBoundCheckerV2.cpp b/clang/lib/StaticAnalyzer/Checkers/ArrayBoundCheckerV2.cpp index 3f83756..6422933 100644 --- a/clang/lib/StaticAnalyzer/Checkers/ArrayBoundCheckerV2.cpp +++ b/clang/lib/StaticAnalyzer/Checkers/ArrayBoundCheckerV2.cpp @@ -22,6 +22,7 @@ #include "clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h" #include "clang/StaticAnalyzer/Core/PathSensitive/DynamicExtent.h" #include "clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h" +#include "llvm/ADT/APSInt.h" #include "llvm/ADT/SmallString.h" #include "llvm/Support/FormatVariadic.h" #include "llvm/Support/raw_ostream.h" @@ -241,26 +242,25 @@ computeOffset(ProgramStateRef State, SValBuilder &SVB, SVal Location) { static std::pair<NonLoc, nonloc::ConcreteInt> getSimplifiedOffsets(NonLoc offset, nonloc::ConcreteInt extent, SValBuilder &svalBuilder) { + const llvm::APSInt &extentVal = extent.getValue(); std::optional<nonloc::SymbolVal> SymVal = offset.getAs<nonloc::SymbolVal>(); if (SymVal && SymVal->isExpression()) { if (const SymIntExpr *SIE = dyn_cast<SymIntExpr>(SymVal->getSymbol())) { - llvm::APSInt constant = - APSIntType(extent.getValue()).convert(SIE->getRHS()); + llvm::APSInt constant = APSIntType(extentVal).convert(SIE->getRHS()); switch (SIE->getOpcode()) { case BO_Mul: // The constant should never be 0 here, becasue multiplication by zero // is simplified by the engine. - if ((extent.getValue() % constant) != 0) + if ((extentVal % constant) != 0) return std::pair<NonLoc, nonloc::ConcreteInt>(offset, extent); else return getSimplifiedOffsets( nonloc::SymbolVal(SIE->getLHS()), - svalBuilder.makeIntVal(extent.getValue() / constant), - svalBuilder); + svalBuilder.makeIntVal(extentVal / constant), svalBuilder); case BO_Add: return getSimplifiedOffsets( nonloc::SymbolVal(SIE->getLHS()), - svalBuilder.makeIntVal(extent.getValue() - constant), svalBuilder); + svalBuilder.makeIntVal(extentVal - constant), svalBuilder); default: break; } @@ -363,7 +363,7 @@ static std::string getRegionName(const SubRegion *Region) { static std::optional<int64_t> getConcreteValue(NonLoc SV) { if (auto ConcreteVal = SV.getAs<nonloc::ConcreteInt>()) { - return ConcreteVal->getValue().tryExtValue(); + return ConcreteVal->getValue()->tryExtValue(); } return std::nullopt; } |