https://github.com/eiytoq created https://github.com/llvm/llvm-project/pull/183027
- Use structured bindings. - Use if-init-statements to replace nested `if`. - Use `using` instead of `typedef`. >From 3f9e35774c8d11e8465072a5d844b08a9f70e153 Mon Sep 17 00:00:00 2001 From: eiytoq <[email protected]> Date: Tue, 24 Feb 2026 19:11:15 +0800 Subject: [PATCH] [clang][NFC] ItaniumMangle: modernize code style --- clang/lib/AST/ItaniumMangle.cpp | 80 +++++++++++++++------------------ 1 file changed, 37 insertions(+), 43 deletions(-) diff --git a/clang/lib/AST/ItaniumMangle.cpp b/clang/lib/AST/ItaniumMangle.cpp index df00760fa911b..f8f06e93cf767 100644 --- a/clang/lib/AST/ItaniumMangle.cpp +++ b/clang/lib/AST/ItaniumMangle.cpp @@ -68,7 +68,7 @@ static bool isLambda(const NamedDecl *ND) { static const unsigned UnknownArity = ~0U; class ItaniumMangleContextImpl : public ItaniumMangleContext { - typedef std::pair<const DeclContext*, IdentifierInfo*> DiscriminatorKeyTy; + using DiscriminatorKeyTy = std::pair<const DeclContext*, IdentifierInfo*>; llvm::DenseMap<DiscriminatorKeyTy, unsigned> Discriminator; llvm::DenseMap<const NamedDecl*, unsigned> Uniquifier; const DiscriminatorOverrideTy DiscriminatorOverride = nullptr; @@ -140,10 +140,9 @@ class ItaniumMangleContextImpl : public ItaniumMangleContext { return false; // Anonymous tags are already numbered. - if (const TagDecl *Tag = dyn_cast<TagDecl>(ND)) { - if (Tag->getName().empty() && !Tag->getTypedefNameForAnonDecl()) - return false; - } + if (const TagDecl *Tag = dyn_cast<TagDecl>(ND); + Tag && Tag->getName().empty() && !Tag->getTypedefNameForAnonDecl()) + return false; // Use the canonical number for externally visible decls. if (ND->isExternallyVisible()) { @@ -283,7 +282,7 @@ class CXXNameMangler { // The goal is to annotate against which version of a library an object was // built and to be able to provide backwards compatibility ("dual abi"). // For more information see docs/ItaniumMangleAbiTags.rst. - typedef SmallVector<StringRef, 4> AbiTagList; + using AbiTagList = SmallVector<StringRef, 4>; // State to gather all implicit and explicit tags used in a mangled name. // Must always have an instance of this while emitting any name to keep @@ -674,9 +673,8 @@ ItaniumMangleContextImpl::getEffectiveDeclContext(const Decl *D) { return getEffectiveDeclContext(cast<Decl>(DC)); } - if (const auto *VD = dyn_cast<VarDecl>(D)) - if (VD->isExternC()) - return getASTContext().getTranslationUnitDecl(); + if (const auto *VD = dyn_cast<VarDecl>(D); VD && VD->isExternC()) + return getASTContext().getTranslationUnitDecl(); if (const auto *FD = getASTContext().getLangOpts().getClangABICompat() > LangOptions::ClangABI::Ver19 @@ -1110,8 +1108,8 @@ void CXXNameMangler::mangleModuleName(const NamedDecl *ND) { // ::= W P <source-name> void CXXNameMangler::mangleModuleNamePrefix(StringRef Name, bool IsPartition) { // <substitution> ::= S <seq-id> _ - auto It = ModuleSubstitutions.find(Name); - if (It != ModuleSubstitutions.end()) { + if (auto It = ModuleSubstitutions.find(Name); + It != ModuleSubstitutions.end()) { Out << 'S'; mangleSeqID(It->second); return; @@ -1119,18 +1117,18 @@ void CXXNameMangler::mangleModuleNamePrefix(StringRef Name, bool IsPartition) { // FIXME: Preserve hierarchy in module names rather than flattening // them to strings; use Module*s as substitution keys. - auto Parts = Name.rsplit('.'); - if (Parts.second.empty()) - Parts.second = Parts.first; + auto [Prefix, SubName] = Name.rsplit('.'); + if (SubName.empty()) + SubName = Prefix; else { - mangleModuleNamePrefix(Parts.first, IsPartition); + mangleModuleNamePrefix(Prefix, IsPartition); IsPartition = false; } Out << 'W'; if (IsPartition) Out << 'P'; - Out << Parts.second.size() << Parts.second; + Out << SubName.size() << SubName; ModuleSubstitutions.insert({Name, SeqID++}); } @@ -1979,15 +1977,14 @@ void CXXNameMangler::mangleBlockForPrefix(const BlockDecl *Block) { void CXXNameMangler::mangleUnqualifiedBlock(const BlockDecl *Block) { // When trying to be ABI-compatibility with clang 12 and before, mangle a // <data-member-prefix> now, with no substitutions and no <template-args>. - if (Decl *Context = Block->getBlockManglingContextDecl()) { - if (isCompatibleWith(LangOptions::ClangABI::Ver12) && - (isa<VarDecl>(Context) || isa<FieldDecl>(Context)) && - Context->getDeclContext()->isRecord()) { - const auto *ND = cast<NamedDecl>(Context); - if (ND->getIdentifier()) { - mangleSourceNameWithAbiTags(ND); - Out << 'M'; - } + if (Decl *Context = Block->getBlockManglingContextDecl(); + Context && isCompatibleWith(LangOptions::ClangABI::Ver12) && + (isa<VarDecl>(Context) || isa<FieldDecl>(Context)) && + Context->getDeclContext()->isRecord()) { + const auto *ND = cast<NamedDecl>(Context); + if (ND->getIdentifier()) { + mangleSourceNameWithAbiTags(ND); + Out << 'M'; } } @@ -2097,18 +2094,17 @@ void CXXNameMangler::mangleRequiresClause(const Expr *RequiresClause) { void CXXNameMangler::mangleLambda(const CXXRecordDecl *Lambda) { // When trying to be ABI-compatibility with clang 12 and before, mangle a // <data-member-prefix> now, with no substitutions. - if (Decl *Context = Lambda->getLambdaContextDecl()) { - if (isCompatibleWith(LangOptions::ClangABI::Ver12) && - (isa<VarDecl>(Context) || isa<FieldDecl>(Context)) && - !isa<ParmVarDecl>(Context)) { - if (const IdentifierInfo *Name - = cast<NamedDecl>(Context)->getIdentifier()) { - mangleSourceName(Name); - const TemplateArgumentList *TemplateArgs = nullptr; - if (GlobalDecl TD = isTemplate(cast<NamedDecl>(Context), TemplateArgs)) - mangleTemplateArgs(asTemplateName(TD), *TemplateArgs); - Out << 'M'; - } + if (Decl *Context = Lambda->getLambdaContextDecl(); + Context && isCompatibleWith(LangOptions::ClangABI::Ver12) && + (isa<VarDecl>(Context) || isa<FieldDecl>(Context)) && + !isa<ParmVarDecl>(Context)) { + if (const IdentifierInfo *Name = + cast<NamedDecl>(Context)->getIdentifier()) { + mangleSourceName(Name); + const TemplateArgumentList *TemplateArgs = nullptr; + if (GlobalDecl TD = isTemplate(cast<NamedDecl>(Context), TemplateArgs)) + mangleTemplateArgs(asTemplateName(TD), *TemplateArgs); + Out << 'M'; } } @@ -3005,9 +3001,7 @@ void CXXNameMangler::mangleType(QualType T) { T = Desugared; } while (true); } - SplitQualType split = T.split(); - Qualifiers quals = split.Quals; - const Type *ty = split.Ty; + auto [ty, quals] = T.split(); bool isSubstitutable = isTypeSubstitutable(quals, ty, Context.getASTContext()); @@ -3027,9 +3021,9 @@ void CXXNameMangler::mangleType(QualType T) { if (quals || ty->isDependentAddressSpaceType()) { if (const DependentAddressSpaceType *DAST = dyn_cast<DependentAddressSpaceType>(ty)) { - SplitQualType splitDAST = DAST->getPointeeType().split(); - mangleQualifiers(splitDAST.Quals, DAST); - mangleType(QualType(splitDAST.Ty, 0)); + auto [Ty, Quals] = DAST->getPointeeType().split(); + mangleQualifiers(Quals, DAST); + mangleType(QualType(Ty, 0)); } else { mangleQualifiers(quals); _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
