https://github.com/TPPPP72 updated https://github.com/llvm/llvm-project/pull/218860
>From d354e8c9cfb97bcb48e5a5c24d759418ff4e5675 Mon Sep 17 00:00:00 2001 From: Shengxin Pei <[email protected]> Date: Wed, 26 Aug 2026 16:25:35 +0800 Subject: [PATCH 1/2] [analyzer][NFC] Clean up `MemRegion.cpp` and align with llvm coding style --- clang/lib/StaticAnalyzer/Core/MemRegion.cpp | 44 +++++++++------------ 1 file changed, 19 insertions(+), 25 deletions(-) diff --git a/clang/lib/StaticAnalyzer/Core/MemRegion.cpp b/clang/lib/StaticAnalyzer/Core/MemRegion.cpp index 36a71d510b902..188db163525a7 100644 --- a/clang/lib/StaticAnalyzer/Core/MemRegion.cpp +++ b/clang/lib/StaticAnalyzer/Core/MemRegion.cpp @@ -207,22 +207,23 @@ QualType ParamVarRegion::getValueType() const { const ParmVarDecl *ParamVarRegion::getDecl() const { const Decl *D = getStackFrame()->getDecl(); - if (const auto *FD = dyn_cast<FunctionDecl>(D)) { assert(Index < FD->param_size()); return FD->parameters()[Index]; - } else if (const auto *BD = dyn_cast<BlockDecl>(D)) { + } + if (const auto *BD = dyn_cast<BlockDecl>(D)) { assert(Index < BD->param_size()); return BD->parameters()[Index]; - } else if (const auto *MD = dyn_cast<ObjCMethodDecl>(D)) { + } + if (const auto *MD = dyn_cast<ObjCMethodDecl>(D)) { assert(Index < MD->param_size()); return MD->parameters()[Index]; - } else if (const auto *CD = dyn_cast<CXXConstructorDecl>(D)) { + } + if (const auto *CD = dyn_cast<CXXConstructorDecl>(D)) { assert(Index < CD->param_size()); return CD->parameters()[Index]; - } else { - llvm_unreachable("Unexpected Decl kind!"); } + llvm_unreachable("Unexpected Decl kind!"); } //===----------------------------------------------------------------------===// @@ -622,11 +623,10 @@ void ParamVarRegion::dumpToStream(raw_ostream &os) const { assert(PVD && "`ParamVarRegion` support functions without `Decl` not implemented" " yet."); - if (const IdentifierInfo *ID = PVD->getIdentifier()) { + if (const IdentifierInfo *ID = PVD->getIdentifier()) os << ID->getName(); - } else { + else os << "ParamVarRegion{P" << PVD->getID() << '}'; - } } bool MemRegion::canPrintPretty() const { @@ -808,13 +808,11 @@ std::string MemRegion::getDescriptiveName(bool UseQuotes, SourceRange MemRegion::sourceRange() const { // Check for more specific regions first. - if (auto *FR = dyn_cast<FieldRegion>(this)) { + if (auto *FR = dyn_cast<FieldRegion>(this)) return FR->getDecl()->getSourceRange(); - } - if (auto *VR = dyn_cast<VarRegion>(this->getBaseRegion())) { + if (auto *VR = dyn_cast<VarRegion>(this->getBaseRegion())) return VR->getDecl()->getSourceRange(); - } // Return invalid source range (can be checked by client). return {}; @@ -925,18 +923,16 @@ DefinedOrUnknownSVal MemRegionManager::getStaticSize(const MemRegion *MR, template <typename REG> const REG *MemRegionManager::LazyAllocate(REG*& region) { - if (!region) { + if (!region) region = new (A) REG(*this); - } return region; } template <typename REG, typename ARG> const REG *MemRegionManager::LazyAllocate(REG*& region, ARG a) { - if (!region) { + if (!region) region = new (A) REG(this, a); - } return region; } @@ -1065,13 +1061,12 @@ const VarRegion *MemRegionManager::getVarRegion(const VarDecl *D, if (CallSite) { const Decl *CalleeDecl = SF->getDecl(); bool CurrentParam = true; - if (const auto *FD = dyn_cast<FunctionDecl>(CalleeDecl)) { + if (const auto *FD = dyn_cast<FunctionDecl>(CalleeDecl)) CurrentParam = (Index < FD->param_size() && FD->getParamDecl(Index) == PVD); - } else if (const auto *BD = dyn_cast<BlockDecl>(CalleeDecl)) { + else if (const auto *BD = dyn_cast<BlockDecl>(CalleeDecl)) CurrentParam = (Index < BD->param_size() && BD->getParamDecl(Index) == PVD); - } if (CurrentParam) { // If this is a parameter of the *current* stack frame, we can @@ -1111,11 +1106,10 @@ const VarRegion *MemRegionManager::getVarRegion(const VarDecl *D, // so they are placed in the global internal space, which is not // invalidated by calls to functions declared in system headers. if (Ctx.getSourceManager().isInSystemHeader(D->getLocation()) && - !isStdStreamVar(D)) { + !isStdStreamVar(D)) sReg = getGlobalsRegion(MemRegion::GlobalSystemSpaceRegionKind); - } else { + else sReg = getGlobalsRegion(MemRegion::GlobalInternalSpaceRegionKind); - } } // Finally handle static locals. @@ -1230,9 +1224,9 @@ MemRegionManager::getCompoundLiteralRegion(const CompoundLiteralExpr *CL, const StackFrame *SF) { const MemSpaceRegion *sReg = nullptr; - if (CL->isFileScope()) + if (CL->isFileScope()) { sReg = getGlobalsRegion(); - else { + } else { assert(SF); sReg = getStackLocalsRegion(SF); } >From de6b6d64c21fc449a3474504efe92ea168456625 Mon Sep 17 00:00:00 2001 From: Shengxin Pei <[email protected]> Date: Wed, 26 Aug 2026 18:24:20 +0800 Subject: [PATCH 2/2] update --- clang/lib/StaticAnalyzer/Core/MemRegion.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/clang/lib/StaticAnalyzer/Core/MemRegion.cpp b/clang/lib/StaticAnalyzer/Core/MemRegion.cpp index 188db163525a7..f565bafc7479d 100644 --- a/clang/lib/StaticAnalyzer/Core/MemRegion.cpp +++ b/clang/lib/StaticAnalyzer/Core/MemRegion.cpp @@ -808,11 +808,13 @@ std::string MemRegion::getDescriptiveName(bool UseQuotes, SourceRange MemRegion::sourceRange() const { // Check for more specific regions first. - if (auto *FR = dyn_cast<FieldRegion>(this)) + if (auto *FR = dyn_cast<FieldRegion>(this)) { return FR->getDecl()->getSourceRange(); + } - if (auto *VR = dyn_cast<VarRegion>(this->getBaseRegion())) + if (auto *VR = dyn_cast<VarRegion>(this->getBaseRegion())) { return VR->getDecl()->getSourceRange(); + } // Return invalid source range (can be checked by client). return {}; @@ -1061,12 +1063,13 @@ const VarRegion *MemRegionManager::getVarRegion(const VarDecl *D, if (CallSite) { const Decl *CalleeDecl = SF->getDecl(); bool CurrentParam = true; - if (const auto *FD = dyn_cast<FunctionDecl>(CalleeDecl)) + if (const auto *FD = dyn_cast<FunctionDecl>(CalleeDecl)) { CurrentParam = (Index < FD->param_size() && FD->getParamDecl(Index) == PVD); - else if (const auto *BD = dyn_cast<BlockDecl>(CalleeDecl)) + } else if (const auto *BD = dyn_cast<BlockDecl>(CalleeDecl)) { CurrentParam = (Index < BD->param_size() && BD->getParamDecl(Index) == PVD); + } if (CurrentParam) { // If this is a parameter of the *current* stack frame, we can _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
