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

Reply via email to