https://github.com/Tsche updated 
https://github.com/llvm/llvm-project/pull/214595

>From 7c644229a6b717ad9488bc1730b723218c989d13 Mon Sep 17 00:00:00 2001
From: Matthias Wippich <[email protected]>
Date: Fri, 7 Aug 2026 00:23:45 +0200
Subject: [PATCH 1/2] [clang][NFC] Rename Traits.td to BuiltinTraits.td

---
 clang/include/clang/AST/TypeBase.h                     |  2 +-
 clang/include/clang/Basic/BuiltinTraits.h              |  2 +-
 .../clang/Basic/{Traits.td => BuiltinTraits.td}        |  0
 clang/include/clang/Basic/CMakeLists.txt               |  6 +++---
 clang/include/clang/Basic/Specifiers.h                 |  2 +-
 clang/include/clang/Basic/TokenKinds.def               |  2 +-
 clang/include/clang/Basic/TokenKinds.h                 |  2 +-
 clang/include/clang/Sema/DeclSpec.h                    |  4 ++--
 clang/lib/AST/ItaniumMangle.cpp                        |  2 +-
 clang/lib/AST/JSONNodeDumper.cpp                       |  2 +-
 clang/lib/AST/TextNodeDumper.cpp                       |  2 +-
 clang/lib/AST/TypePrinter.cpp                          |  2 +-
 clang/lib/ASTMatchers/Dynamic/Marshallers.cpp          |  2 +-
 clang/lib/ASTMatchers/Dynamic/Marshallers.h            |  2 +-
 clang/lib/Basic/BuiltinTraits.cpp                      |  2 +-
 clang/lib/Format/FormatToken.h                         |  2 +-
 clang/lib/Format/TokenAnnotator.cpp                    |  2 +-
 clang/lib/Lex/Lexer.cpp                                |  2 +-
 clang/lib/Lex/PPMacroExpansion.cpp                     |  2 +-
 clang/lib/Parse/ParseDecl.cpp                          |  2 +-
 clang/lib/Parse/ParseDeclCXX.cpp                       |  4 ++--
 clang/lib/Parse/ParseExpr.cpp                          |  4 ++--
 clang/lib/Parse/ParseExprCXX.cpp                       | 10 +++++-----
 clang/lib/Parse/ParseStmt.cpp                          |  2 +-
 clang/lib/Parse/ParseTentative.cpp                     |  6 +++---
 clang/lib/Sema/DeclSpec.cpp                            |  4 ++--
 clang/lib/Sema/SemaDecl.cpp                            |  2 +-
 clang/lib/Sema/SemaTemplateVariadic.cpp                |  2 +-
 clang/lib/Sema/SemaType.cpp                            |  4 ++--
 clang/lib/Sema/SemaTypeTraits.cpp                      |  2 +-
 clang/utils/TableGen/CMakeLists.txt                    |  2 +-
 ...TraitsEmitter.cpp => ClangBuiltinTraitsEmitter.cpp} |  2 +-
 clang/utils/TableGen/TableGen.cpp                      | 10 +++++-----
 clang/utils/TableGen/TableGenBackends.h                |  2 +-
 .../gn/secondary/clang/include/clang/Basic/BUILD.gn    |  4 ++--
 llvm/utils/gn/secondary/clang/utils/TableGen/BUILD.gn  |  2 +-
 utils/bazel/llvm-project-overlay/clang/BUILD.bazel     |  6 +++---
 37 files changed, 56 insertions(+), 56 deletions(-)
 rename clang/include/clang/Basic/{Traits.td => BuiltinTraits.td} (100%)
 rename clang/utils/TableGen/{ClangTraitsEmitter.cpp => 
ClangBuiltinTraitsEmitter.cpp} (99%)

diff --git a/clang/include/clang/AST/TypeBase.h 
b/clang/include/clang/AST/TypeBase.h
index 4851c4e5185dd..0c8b7bdd0acdf 100644
--- a/clang/include/clang/AST/TypeBase.h
+++ b/clang/include/clang/AST/TypeBase.h
@@ -6506,7 +6506,7 @@ class UnaryTransformType : public Type, public 
llvm::FoldingSetNode {
 public:
   enum UTTKind {
 #define TRANSFORM_TYPE_TRAIT_DEF(Enum, _) Enum,
-#include "clang/Basic/Traits.inc"
+#include "clang/Basic/BuiltinTraits.inc"
   };
 
 private:
diff --git a/clang/include/clang/Basic/BuiltinTraits.h 
b/clang/include/clang/Basic/BuiltinTraits.h
index 7ff5556e119aa..a72bf614a26c2 100644
--- a/clang/include/clang/Basic/BuiltinTraits.h
+++ b/clang/include/clang/Basic/BuiltinTraits.h
@@ -45,7 +45,7 @@ namespace clang {
 //   ET_Last == last ET_XX in the enum.
 // };
 #define EMIT_ENUMS
-#include "clang/Basic/Traits.inc"
+#include "clang/Basic/BuiltinTraits.inc"
 
 /// Return the internal name of the trait \p T. Never null.
 const char *getTraitName(TypeTrait T) LLVM_READONLY;
diff --git a/clang/include/clang/Basic/Traits.td 
b/clang/include/clang/Basic/BuiltinTraits.td
similarity index 100%
rename from clang/include/clang/Basic/Traits.td
rename to clang/include/clang/Basic/BuiltinTraits.td
diff --git a/clang/include/clang/Basic/CMakeLists.txt 
b/clang/include/clang/Basic/CMakeLists.txt
index baae7bc0245f5..9f8e0620eb483 100644
--- a/clang/include/clang/Basic/CMakeLists.txt
+++ b/clang/include/clang/Basic/CMakeLists.txt
@@ -154,9 +154,9 @@ clang_tablegen(BuiltinTemplates.inc 
-gen-clang-builtin-templates
   SOURCE BuiltinTemplates.td
   TARGET ClangBuiltinTemplates)
 
-clang_tablegen(Traits.inc -gen-clang-traits
-  SOURCE Traits.td
-  TARGET ClangTraits)
+clang_tablegen(BuiltinTraits.inc -gen-clang-builtin-traits
+  SOURCE BuiltinTraits.td
+  TARGET ClangBuiltinTraits)
 
 # ARM NEON and MVE
 clang_tablegen(arm_neon.inc -gen-arm-neon-sema
diff --git a/clang/include/clang/Basic/Specifiers.h 
b/clang/include/clang/Basic/Specifiers.h
index 6aeca806730b1..24edead81247c 100644
--- a/clang/include/clang/Basic/Specifiers.h
+++ b/clang/include/clang/Basic/Specifiers.h
@@ -89,7 +89,7 @@ namespace clang {
     TST_typeof_unqualExpr, // C23 typeof_unqual(expression)
     TST_decltype,          // C++11 decltype
 #define TRANSFORM_TYPE_TRAIT_DEF(_, Trait) TST_##Trait,
-#include "clang/Basic/Traits.inc"
+#include "clang/Basic/BuiltinTraits.inc"
     TST_auto,            // C++11 auto
     TST_decltype_auto,   // C++1y decltype(auto)
     TST_auto_type,       // __auto_type extension
diff --git a/clang/include/clang/Basic/TokenKinds.def 
b/clang/include/clang/Basic/TokenKinds.def
index 3d8d42caa39cf..dc9c7d8109467 100644
--- a/clang/include/clang/Basic/TokenKinds.def
+++ b/clang/include/clang/Basic/TokenKinds.def
@@ -913,7 +913,7 @@ ANNOTATION(repl_input_end)
 // Annotation for #embed
 ANNOTATION(embed)
 
-#include "clang/Basic/Traits.inc"
+#include "clang/Basic/BuiltinTraits.inc"
 
 #undef PRAGMA_ANNOTATION
 #undef ANNOTATION
diff --git a/clang/include/clang/Basic/TokenKinds.h 
b/clang/include/clang/Basic/TokenKinds.h
index 1f1813e7a5cd2..2b676f01acfe8 100644
--- a/clang/include/clang/Basic/TokenKinds.h
+++ b/clang/include/clang/Basic/TokenKinds.h
@@ -24,7 +24,7 @@ namespace clang {
 /// Constants for TokenKinds.def
 enum TokenKey : unsigned {
 #define EMIT_TOKENKEY
-#include "clang/Basic/Traits.inc"
+#include "clang/Basic/BuiltinTraits.inc"
 };
 
 namespace tok {
diff --git a/clang/include/clang/Sema/DeclSpec.h 
b/clang/include/clang/Sema/DeclSpec.h
index f5f26830c6b96..659bc06a257b5 100644
--- a/clang/include/clang/Sema/DeclSpec.h
+++ b/clang/include/clang/Sema/DeclSpec.h
@@ -287,7 +287,7 @@ class DeclSpec {
       clang::TST_typename_pack_indexing;
 #define TRANSFORM_TYPE_TRAIT_DEF(_, Trait)                                     
\
   static const TST TST_##Trait = clang::TST_##Trait;
-#include "clang/Basic/Traits.inc"
+#include "clang/Basic/BuiltinTraits.inc"
   static const TST TST_auto = clang::TST_auto;
   static const TST TST_auto_type = clang::TST_auto_type;
   static const TST TST_unknown_anytype = clang::TST_unknown_anytype;
@@ -502,7 +502,7 @@ class DeclSpec {
   static bool isTransformTypeTrait(TST T) {
     constexpr std::array<TST, 16> Traits = {
 #define TRANSFORM_TYPE_TRAIT_DEF(_, Trait) TST_##Trait,
-#include "clang/Basic/Traits.inc"
+#include "clang/Basic/BuiltinTraits.inc"
     };
 
     return T >= Traits.front() && T <= Traits.back();
diff --git a/clang/lib/AST/ItaniumMangle.cpp b/clang/lib/AST/ItaniumMangle.cpp
index f8e6b898be250..31cbf832e780e 100644
--- a/clang/lib/AST/ItaniumMangle.cpp
+++ b/clang/lib/AST/ItaniumMangle.cpp
@@ -4581,7 +4581,7 @@ void CXXNameMangler::mangleType(const UnaryTransformType 
*T) {
   case UnaryTransformType::Enum:                                               
\
     BuiltinName = "__" #Trait;                                                 
\
     break;
-#include "clang/Basic/Traits.inc"
+#include "clang/Basic/BuiltinTraits.inc"
     }
     mangleVendorType(BuiltinName);
   }
diff --git a/clang/lib/AST/JSONNodeDumper.cpp b/clang/lib/AST/JSONNodeDumper.cpp
index 428ec70f2f129..af54f15410789 100644
--- a/clang/lib/AST/JSONNodeDumper.cpp
+++ b/clang/lib/AST/JSONNodeDumper.cpp
@@ -771,7 +771,7 @@ void JSONNodeDumper::VisitUnaryTransformType(const 
UnaryTransformType *UTT) {
   case UnaryTransformType::Enum:                                               
\
     JOS.attribute("transformKind", #Trait);                                    
\
     break;
-#include "clang/Basic/Traits.inc"
+#include "clang/Basic/BuiltinTraits.inc"
   }
 }
 
diff --git a/clang/lib/AST/TextNodeDumper.cpp b/clang/lib/AST/TextNodeDumper.cpp
index d987dd6cacd12..b7dd2136aa292 100644
--- a/clang/lib/AST/TextNodeDumper.cpp
+++ b/clang/lib/AST/TextNodeDumper.cpp
@@ -2247,7 +2247,7 @@ void TextNodeDumper::VisitUnaryTransformType(const 
UnaryTransformType *T) {
   case UnaryTransformType::Enum:                                               
\
     OS << " " #Trait;                                                          
\
     break;
-#include "clang/Basic/Traits.inc"
+#include "clang/Basic/BuiltinTraits.inc"
   }
 }
 
diff --git a/clang/lib/AST/TypePrinter.cpp b/clang/lib/AST/TypePrinter.cpp
index 75067f6ab3265..61f0452103b9f 100644
--- a/clang/lib/AST/TypePrinter.cpp
+++ b/clang/lib/AST/TypePrinter.cpp
@@ -1396,7 +1396,7 @@ void TypePrinter::printUnaryTransformBefore(const 
UnaryTransformType *T,
   static const llvm::DenseMap<int, const char *> Transformation = {{
 #define TRANSFORM_TYPE_TRAIT_DEF(Enum, Trait)                                  
\
   {UnaryTransformType::Enum, "__" #Trait},
-#include "clang/Basic/Traits.inc"
+#include "clang/Basic/BuiltinTraits.inc"
   }};
   OS << Transformation.lookup(T->getUTTKind()) << '(';
   print(T->getBaseType(), OS, StringRef());
diff --git a/clang/lib/ASTMatchers/Dynamic/Marshallers.cpp 
b/clang/lib/ASTMatchers/Dynamic/Marshallers.cpp
index 155bc08e5d45f..b34ae525f67fd 100644
--- a/clang/lib/ASTMatchers/Dynamic/Marshallers.cpp
+++ b/clang/lib/ASTMatchers/Dynamic/Marshallers.cpp
@@ -102,7 +102,7 @@ clang::ast_matchers::dynamic::internal::ArgTypeTraits<
   static constexpr llvm::StringRef Allowed[] = {
 #define UNARY_EXPR_OR_TYPE_TRAIT(Spelling, Name, Key) "UETT_" #Name,
 #define CXX11_UNARY_EXPR_OR_TYPE_TRAIT(Spelling, Name, Key) "UETT_" #Name,
-#include "clang/Basic/Traits.inc"
+#include "clang/Basic/BuiltinTraits.inc"
   };
   if (Value.isString())
     return ::getBestGuess(Value.getString(), llvm::ArrayRef(Allowed), "UETT_");
diff --git a/clang/lib/ASTMatchers/Dynamic/Marshallers.h 
b/clang/lib/ASTMatchers/Dynamic/Marshallers.h
index 5b6e47addbb64..b2eb51b5da2f7 100644
--- a/clang/lib/ASTMatchers/Dynamic/Marshallers.h
+++ b/clang/lib/ASTMatchers/Dynamic/Marshallers.h
@@ -276,7 +276,7 @@ template <> struct ArgTypeTraits<UnaryExprOrTypeTrait> {
 #define UNARY_EXPR_OR_TYPE_TRAIT(Spelling, Name, Key) .Case(#Name, UETT_##Name)
 #define CXX11_UNARY_EXPR_OR_TYPE_TRAIT(Spelling, Name, Key)                    
\
   .Case(#Name, UETT_##Name)
-#include "clang/Basic/Traits.inc"
+#include "clang/Basic/BuiltinTraits.inc"
         .Default(std::nullopt);
   }
 
diff --git a/clang/lib/Basic/BuiltinTraits.cpp 
b/clang/lib/Basic/BuiltinTraits.cpp
index 7bc88b2aef3e9..c237f6037e95b 100644
--- a/clang/lib/Basic/BuiltinTraits.cpp
+++ b/clang/lib/Basic/BuiltinTraits.cpp
@@ -25,7 +25,7 @@ using namespace clang;
 // static constexpr const char *ExpressionTraitNames[] = {...};
 // static constexpr const char *ExpressionTraitSpellings[] = {...};
 #define EMIT_ARRAYS
-#include "clang/Basic/Traits.inc"
+#include "clang/Basic/BuiltinTraits.inc"
 
 const char *clang::getTraitName(TypeTrait T) {
   assert(T <= TT_Last && "invalid enum value!");
diff --git a/clang/lib/Format/FormatToken.h b/clang/lib/Format/FormatToken.h
index 5c90a73c45cfc..4a2982eaa3a17 100644
--- a/clang/lib/Format/FormatToken.h
+++ b/clang/lib/Format/FormatToken.h
@@ -831,7 +831,7 @@ struct FormatToken {
                    tok::kw_decltype, tok::kw_noexcept, tok::kw_static_assert,
                    tok::kw__Atomic,
 #define TRANSFORM_TYPE_TRAIT_DEF(_, Trait) tok::kw___##Trait,
-#include "clang/Basic/Traits.inc"
+#include "clang/Basic/BuiltinTraits.inc"
                    tok::kw_requires);
   }
 
diff --git a/clang/lib/Format/TokenAnnotator.cpp 
b/clang/lib/Format/TokenAnnotator.cpp
index 32ae8990f52c5..b6c33279b0aca 100644
--- a/clang/lib/Format/TokenAnnotator.cpp
+++ b/clang/lib/Format/TokenAnnotator.cpp
@@ -450,7 +450,7 @@ class AnnotatingParser {
       } else if (PrevNonComment->isOneOf(TT_TypenameMacro, tok::kw_decltype,
                                          tok::kw_typeof,
 #define TRANSFORM_TYPE_TRAIT_DEF(_, Trait) tok::kw___##Trait,
-#include "clang/Basic/Traits.inc"
+#include "clang/Basic/BuiltinTraits.inc"
                                          tok::kw__Atomic)) {
         OpeningParen.setType(TT_TypeDeclarationParen);
         // decltype() and typeof() usually contain expressions.
diff --git a/clang/lib/Lex/Lexer.cpp b/clang/lib/Lex/Lexer.cpp
index e9cfe444028ed..37e33861c4470 100644
--- a/clang/lib/Lex/Lexer.cpp
+++ b/clang/lib/Lex/Lexer.cpp
@@ -116,7 +116,7 @@ bool Token::isSimpleTypeSpecifier(const LangOptions 
&LangOpts) const {
   case tok::kw__Fract:
   case tok::kw__Sat:
 #define TRANSFORM_TYPE_TRAIT_DEF(_, Trait) case tok::kw___##Trait:
-#include "clang/Basic/Traits.inc"
+#include "clang/Basic/BuiltinTraits.inc"
   case tok::kw___auto_type:
   case tok::kw_char16_t:
   case tok::kw_char32_t:
diff --git a/clang/lib/Lex/PPMacroExpansion.cpp 
b/clang/lib/Lex/PPMacroExpansion.cpp
index eb8f04c248b79..eabb1d242506f 100644
--- a/clang/lib/Lex/PPMacroExpansion.cpp
+++ b/clang/lib/Lex/PPMacroExpansion.cpp
@@ -1609,7 +1609,7 @@ static bool IsBuiltinTrait(Token &Tok) {
   switch (Tok.getKind()) {
   default:
     return false;
-#include "clang/Basic/Traits.inc"
+#include "clang/Basic/BuiltinTraits.inc"
   }
 }
 
diff --git a/clang/lib/Parse/ParseDecl.cpp b/clang/lib/Parse/ParseDecl.cpp
index 9fa3b96527c08..2aaeba9225c38 100644
--- a/clang/lib/Parse/ParseDecl.cpp
+++ b/clang/lib/Parse/ParseDecl.cpp
@@ -4637,7 +4637,7 @@ void Parser::ParseDeclarationSpecifiers(
       continue;
 
 #define TRANSFORM_TYPE_TRAIT_DEF(_, Trait) case tok::kw___##Trait:
-#include "clang/Basic/Traits.inc"
+#include "clang/Basic/BuiltinTraits.inc"
       // HACK: libstdc++ already uses '__remove_cv' as an alias template so we
       // work around this by expecting all transform type traits to be suffixed
       // with '('. They're an identifier otherwise.
diff --git a/clang/lib/Parse/ParseDeclCXX.cpp b/clang/lib/Parse/ParseDeclCXX.cpp
index 150987dae332d..a3617c3db49c4 100644
--- a/clang/lib/Parse/ParseDeclCXX.cpp
+++ b/clang/lib/Parse/ParseDeclCXX.cpp
@@ -1241,7 +1241,7 @@ DeclSpec::TST Parser::TypeTransformTokToDeclSpec() {
 #define TRANSFORM_TYPE_TRAIT_DEF(_, Trait)                                     
\
   case tok::kw___##Trait:                                                      
\
     return DeclSpec::TST_##Trait;
-#include "clang/Basic/Traits.inc"
+#include "clang/Basic/BuiltinTraits.inc"
   default:
     llvm_unreachable("passed in an unhandled type transformation built-in");
   }
@@ -1604,7 +1604,7 @@ void Parser::ParseClassSpecifier(tok::TokenKind 
TagTokKind,
       !Tok.isAnnotation() && Tok.getIdentifierInfo() &&
       Tok.isOneOf(
 #define TRANSFORM_TYPE_TRAIT_DEF(_, Trait) tok::kw___##Trait,
-#include "clang/Basic/Traits.inc"
+#include "clang/Basic/BuiltinTraits.inc"
           tok::kw___is_abstract,
           tok::kw___is_aggregate,
           tok::kw___is_arithmetic,
diff --git a/clang/lib/Parse/ParseExpr.cpp b/clang/lib/Parse/ParseExpr.cpp
index 6ca036664094e..87cd7a01451cf 100644
--- a/clang/lib/Parse/ParseExpr.cpp
+++ b/clang/lib/Parse/ParseExpr.cpp
@@ -710,7 +710,7 @@ bool Parser::isRevertibleTypeTrait(const IdentifierInfo *II,
     REVERTIBLE_TYPE_TRAIT(__reference_binds_to_temporary);
 #define TRANSFORM_TYPE_TRAIT_DEF(_, Trait)                                     
\
   REVERTIBLE_TYPE_TRAIT(RTT_JOIN(__, Trait));
-#include "clang/Basic/Traits.inc"
+#include "clang/Basic/BuiltinTraits.inc"
 #undef REVERTIBLE_TYPE_TRAIT
 #undef RTT_JOIN
   }
@@ -1563,7 +1563,7 @@ Parser::ParseCastExpression(CastParseKind ParseKind, bool 
isAddressOfOperand,
     return ExprError();
   }
 #define TRANSFORM_TYPE_TRAIT_DEF(_, Trait) case tok::kw___##Trait:
-#include "clang/Basic/Traits.inc"
+#include "clang/Basic/BuiltinTraits.inc"
     // HACK: libstdc++ uses some of the transform-type-traits as alias
     // templates, so we need to work around this.
     if (!NextToken().is(tok::l_paren)) {
diff --git a/clang/lib/Parse/ParseExprCXX.cpp b/clang/lib/Parse/ParseExprCXX.cpp
index 06ff45da413ca..f9a0dcc7d53af 100644
--- a/clang/lib/Parse/ParseExprCXX.cpp
+++ b/clang/lib/Parse/ParseExprCXX.cpp
@@ -375,7 +375,7 @@ bool Parser::ParseOptionalCXXScopeSpecifier(
 
     switch (Tok.getKind()) {
 #define TRANSFORM_TYPE_TRAIT_DEF(_, Trait) case tok::kw___##Trait:
-#include "clang/Basic/Traits.inc"
+#include "clang/Basic/BuiltinTraits.inc"
       if (!NextToken().is(tok::l_paren)) {
         Tok.setKind(tok::identifier);
         Diag(Tok, diag::ext_keyword_as_ident)
@@ -2881,7 +2881,7 @@ bool Parser::ParseUnqualifiedId(CXXScopeSpec &SS, 
ParsedType ObjectType,
 
   switch (Tok.getKind()) {
 #define TRANSFORM_TYPE_TRAIT_DEF(_, Trait) case tok::kw___##Trait:
-#include "clang/Basic/Traits.inc"
+#include "clang/Basic/BuiltinTraits.inc"
     if (!NextToken().is(tok::l_paren)) {
       Tok.setKind(tok::identifier);
       Diag(Tok, diag::ext_keyword_as_ident)
@@ -3464,7 +3464,7 @@ case tok::kw_ ## Spelling: return BTT_ ## Name;
 #include "clang/Basic/TokenKinds.def"
 #define TYPE_TRAIT_N(Spelling, Name, Key) \
   case tok::kw_ ## Spelling: return TT_ ## Name;
-#include "clang/Basic/Traits.inc"
+#include "clang/Basic/BuiltinTraits.inc"
   }
 }
 
@@ -3475,7 +3475,7 @@ static ArrayTypeTrait 
ArrayTypeTraitFromTokKind(tok::TokenKind kind) {
 #define ARRAY_TYPE_TRAIT(Spelling, Name, Key)                                  
\
   case tok::kw_##Spelling:                                                     
\
     return ATT_##Name;
-#include "clang/Basic/Traits.inc"
+#include "clang/Basic/BuiltinTraits.inc"
   }
 }
 
@@ -3486,7 +3486,7 @@ static ExpressionTrait 
ExpressionTraitFromTokKind(tok::TokenKind kind) {
 #define EXPRESSION_TRAIT(Spelling, Name, Key)                                  
\
   case tok::kw_##Spelling:                                                     
\
     return ET_##Name;
-#include "clang/Basic/Traits.inc"
+#include "clang/Basic/BuiltinTraits.inc"
   }
 }
 
diff --git a/clang/lib/Parse/ParseStmt.cpp b/clang/lib/Parse/ParseStmt.cpp
index 1d4bdf6d8f8e1..219bcd980e860 100644
--- a/clang/lib/Parse/ParseStmt.cpp
+++ b/clang/lib/Parse/ParseStmt.cpp
@@ -241,7 +241,7 @@ StmtResult 
Parser::ParseStatementOrDeclarationAfterAttributes(
 
     switch (Tok.getKind()) {
 #define TRANSFORM_TYPE_TRAIT_DEF(_, Trait) case tok::kw___##Trait:
-#include "clang/Basic/Traits.inc"
+#include "clang/Basic/BuiltinTraits.inc"
       if (NextToken().is(tok::less)) {
         Tok.setKind(tok::identifier);
         Diag(Tok, diag::ext_keyword_as_ident)
diff --git a/clang/lib/Parse/ParseTentative.cpp 
b/clang/lib/Parse/ParseTentative.cpp
index 61bcd17c3a0f3..ab64b9d65d8e4 100644
--- a/clang/lib/Parse/ParseTentative.cpp
+++ b/clang/lib/Parse/ParseTentative.cpp
@@ -174,7 +174,7 @@ Parser::TPResult Parser::TryConsumeDeclarationSpecifier() {
   case tok::kw_typeof_unqual:
   case tok::kw___attribute:
 #define TRANSFORM_TYPE_TRAIT_DEF(_, Trait) case tok::kw___##Trait:
-#include "clang/Basic/Traits.inc"
+#include "clang/Basic/BuiltinTraits.inc"
   {
     ConsumeToken();
     if (Tok.isNot(tok::l_paren))
@@ -1550,7 +1550,7 @@ Parser::isCXXDeclarationSpecifier(ImplicitTypenameContext 
AllowImplicitTypename,
   }
 
 #define TRANSFORM_TYPE_TRAIT_DEF(_, Trait) case tok::kw___##Trait:
-#include "clang/Basic/Traits.inc"
+#include "clang/Basic/BuiltinTraits.inc"
     return TPResult::True;
 
   // C11 _Alignas
@@ -1594,7 +1594,7 @@ bool Parser::isCXXDeclarationSpecifierAType() {
   case tok::kw_typeof:
   case tok::kw_typeof_unqual:
 #define TRANSFORM_TYPE_TRAIT_DEF(_, Trait) case tok::kw___##Trait:
-#include "clang/Basic/Traits.inc"
+#include "clang/Basic/BuiltinTraits.inc"
     return true;
 
     // elaborated-type-specifier
diff --git a/clang/lib/Sema/DeclSpec.cpp b/clang/lib/Sema/DeclSpec.cpp
index 738b0cc85a029..1492bbf60a373 100644
--- a/clang/lib/Sema/DeclSpec.cpp
+++ b/clang/lib/Sema/DeclSpec.cpp
@@ -365,7 +365,7 @@ bool Declarator::isDeclarationOfFunction() const {
       return false;
 
 #define TRANSFORM_TYPE_TRAIT_DEF(_, Trait) case TST_##Trait:
-#include "clang/Basic/Traits.inc"
+#include "clang/Basic/BuiltinTraits.inc"
     case TST_typename:
     case TST_typeof_unqualType:
     case TST_typeofType: {
@@ -573,7 +573,7 @@ const char *DeclSpec::getSpecifierName(DeclSpec::TST T,
 #define TRANSFORM_TYPE_TRAIT_DEF(_, Trait)                                     
\
   case DeclSpec::TST_##Trait:                                                  
\
     return "__" #Trait;
-#include "clang/Basic/Traits.inc"
+#include "clang/Basic/BuiltinTraits.inc"
   case DeclSpec::TST_unknown_anytype: return "__unknown_anytype";
   case DeclSpec::TST_atomic: return "_Atomic";
   case DeclSpec::TST_BFloat16: return "__bf16";
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp
index ae8c26808a164..c5dcdee7dc5dd 100644
--- a/clang/lib/Sema/SemaDecl.cpp
+++ b/clang/lib/Sema/SemaDecl.cpp
@@ -6230,7 +6230,7 @@ static bool RebuildDeclaratorInCurrentInstantiation(Sema 
&S, Declarator &D,
   case DeclSpec::TST_typeofType:
   case DeclSpec::TST_typeof_unqualType:
 #define TRANSFORM_TYPE_TRAIT_DEF(_, Trait) case DeclSpec::TST_##Trait:
-#include "clang/Basic/Traits.inc"
+#include "clang/Basic/BuiltinTraits.inc"
   case DeclSpec::TST_atomic: {
     // Grab the type from the parser.
     TypeSourceInfo *TSI = nullptr;
diff --git a/clang/lib/Sema/SemaTemplateVariadic.cpp 
b/clang/lib/Sema/SemaTemplateVariadic.cpp
index c26a96eae9f66..aa818aad7ff68 100644
--- a/clang/lib/Sema/SemaTemplateVariadic.cpp
+++ b/clang/lib/Sema/SemaTemplateVariadic.cpp
@@ -1145,7 +1145,7 @@ bool Sema::containsUnexpandedParameterPacks(Declarator 
&D) {
   case TST_typeof_unqualType:
   case TST_typeofType:
 #define TRANSFORM_TYPE_TRAIT_DEF(_, Trait) case TST_##Trait:
-#include "clang/Basic/Traits.inc"
+#include "clang/Basic/BuiltinTraits.inc"
   case TST_atomic: {
     QualType T = DS.getRepAsType().get();
     if (!T.isNull() && T->containsUnexpandedParameterPack())
diff --git a/clang/lib/Sema/SemaType.cpp b/clang/lib/Sema/SemaType.cpp
index dc3564c8b17fd..c19022ac1aee8 100644
--- a/clang/lib/Sema/SemaType.cpp
+++ b/clang/lib/Sema/SemaType.cpp
@@ -887,7 +887,7 @@ TSTToUnaryTransformType(DeclSpec::TST SwitchTST) {
 #define TRANSFORM_TYPE_TRAIT_DEF(Enum, Trait)                                  
\
   case TST_##Trait:                                                            
\
     return UnaryTransformType::Enum;
-#include "clang/Basic/Traits.inc"
+#include "clang/Basic/BuiltinTraits.inc"
   default:
     llvm_unreachable("attempted to parse a non-unary transform builtin");
   }
@@ -1307,7 +1307,7 @@ static QualType ConvertDeclSpecToType(TypeProcessingState 
&state) {
   }
 
 #define TRANSFORM_TYPE_TRAIT_DEF(_, Trait) case DeclSpec::TST_##Trait:
-#include "clang/Basic/Traits.inc"
+#include "clang/Basic/BuiltinTraits.inc"
     Result = S.GetTypeFromParser(DS.getRepAsType());
     assert(!Result.isNull() && "Didn't get a type for the transformation?");
     Result = S.BuildUnaryTransformType(
diff --git a/clang/lib/Sema/SemaTypeTraits.cpp 
b/clang/lib/Sema/SemaTypeTraits.cpp
index e6c79dbeedc6a..9b7840cf38fcd 100644
--- a/clang/lib/Sema/SemaTypeTraits.cpp
+++ b/clang/lib/Sema/SemaTypeTraits.cpp
@@ -1955,7 +1955,7 @@ ExprResult Sema::BuildExpressionTrait(ExpressionTrait ET, 
SourceLocation KWLoc,
 static std::optional<TypeTrait> StdNameToTypeTrait(StringRef Name) {
   return llvm::StringSwitch<std::optional<TypeTrait>>(Name)
 #define EMIT_STD_NAME_CASES
-#include "clang/Basic/Traits.inc"
+#include "clang/Basic/BuiltinTraits.inc"
       .Default(std::nullopt);
 }
 
diff --git a/clang/utils/TableGen/CMakeLists.txt 
b/clang/utils/TableGen/CMakeLists.txt
index 722a14bf609ee..963a753bf057a 100644
--- a/clang/utils/TableGen/CMakeLists.txt
+++ b/clang/utils/TableGen/CMakeLists.txt
@@ -10,6 +10,7 @@ add_tablegen(clang-tblgen CLANG
   ClangAttrEmitter.cpp
   ClangBuiltinsEmitter.cpp
   ClangBuiltinTemplatesEmitter.cpp
+  ClangBuiltinTraitsEmitter.cpp
   ClangCommentCommandInfoEmitter.cpp
   ClangCommentHTMLNamedCharacterReferenceEmitter.cpp
   ClangCommentHTMLTagsEmitter.cpp
@@ -21,7 +22,6 @@ add_tablegen(clang-tblgen CLANG
   ClangSACheckersEmitter.cpp
   ClangSyntaxEmitter.cpp
   ClangTypeNodesEmitter.cpp
-  ClangTraitsEmitter.cpp
   HLSLEmitter.cpp
   MveEmitter.cpp
   NeonEmitter.cpp
diff --git a/clang/utils/TableGen/ClangTraitsEmitter.cpp 
b/clang/utils/TableGen/ClangBuiltinTraitsEmitter.cpp
similarity index 99%
rename from clang/utils/TableGen/ClangTraitsEmitter.cpp
rename to clang/utils/TableGen/ClangBuiltinTraitsEmitter.cpp
index d02f3cf821e1d..c40bc3d75fff1 100644
--- a/clang/utils/TableGen/ClangTraitsEmitter.cpp
+++ b/clang/utils/TableGen/ClangBuiltinTraitsEmitter.cpp
@@ -226,7 +226,7 @@ void emitStdNameCases(const RecordKeeper &Records, 
raw_ostream &OS) {
 
 } // namespace
 
-void clang::EmitClangTraits(const RecordKeeper &Records, raw_ostream &OS) {
+void clang::EmitClangBuiltinTraits(const RecordKeeper &Records, raw_ostream 
&OS) {
   emitSourceFileHeader("Type and expression traits", OS, Records);
   OS << "#if defined(EMIT_TOKENKEY)\n";
   emitTokenKey(Records, OS);
diff --git a/clang/utils/TableGen/TableGen.cpp 
b/clang/utils/TableGen/TableGen.cpp
index 5ea37d8e160ca..46e05f2207909 100644
--- a/clang/utils/TableGen/TableGen.cpp
+++ b/clang/utils/TableGen/TableGen.cpp
@@ -127,7 +127,7 @@ enum ActionType {
   GenOptDocs,
   GenDataCollectors,
   GenTestPragmaAttributeSupportedAttributes,
-  GenClangTraits
+  GenClangBuiltinTraits
 };
 
 namespace {
@@ -372,8 +372,8 @@ cl::opt<ActionType> Action(
                    "gen-clang-test-pragma-attribute-supported-attributes",
                    "Generate a list of attributes supported by #pragma clang "
                    "attribute for testing purposes"),
-        clEnumValN(GenClangTraits, "gen-clang-traits",
-                   "Generate Traits.inc for clang")));
+        clEnumValN(GenClangBuiltinTraits, "gen-clang-builtin-traits",
+                   "Generate BuiltinTraits.inc for clang")));
 
 cl::opt<std::string>
 ClangComponent("clang-component",
@@ -696,8 +696,8 @@ bool ClangTableGenMain(raw_ostream &OS, const RecordKeeper 
&Records) {
   case GenTestPragmaAttributeSupportedAttributes:
     EmitTestPragmaAttributeSupportedAttributes(Records, OS);
     break;
-  case GenClangTraits:
-    EmitClangTraits(Records, OS);
+  case GenClangBuiltinTraits:
+    EmitClangBuiltinTraits(Records, OS);
     break;
   }
 
diff --git a/clang/utils/TableGen/TableGenBackends.h 
b/clang/utils/TableGen/TableGenBackends.h
index fc71e112f86e7..1e4659bbf6a50 100644
--- a/clang/utils/TableGen/TableGenBackends.h
+++ b/clang/utils/TableGen/TableGenBackends.h
@@ -217,7 +217,7 @@ void EmitClangDataCollectors(const llvm::RecordKeeper 
&Records,
 void EmitTestPragmaAttributeSupportedAttributes(
     const llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
 
-void EmitClangTraits(const llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
+void EmitClangBuiltinTraits(const llvm::RecordKeeper &Records, 
llvm::raw_ostream &OS);
 
 } // end namespace clang
 
diff --git a/llvm/utils/gn/secondary/clang/include/clang/Basic/BUILD.gn 
b/llvm/utils/gn/secondary/clang/include/clang/Basic/BUILD.gn
index 0d05b990c914b..ad7745981fd5d 100644
--- a/llvm/utils/gn/secondary/clang/include/clang/Basic/BUILD.gn
+++ b/llvm/utils/gn/secondary/clang/include/clang/Basic/BUILD.gn
@@ -205,8 +205,8 @@ clang_tablegen("BuiltinTemplates") {
   args = [ "-gen-clang-builtin-templates" ]
 }
 
-clang_tablegen("Traits") {
-  args = [ "-gen-clang-traits" ]
+clang_tablegen("BuiltinTraits") {
+  args = [ "-gen-clang-builtin-traits" ]
 }
 
 # ARM CDE, MVE, and NEON.
diff --git a/llvm/utils/gn/secondary/clang/utils/TableGen/BUILD.gn 
b/llvm/utils/gn/secondary/clang/utils/TableGen/BUILD.gn
index 65223b94ab282..8bac3ff18ea55 100644
--- a/llvm/utils/gn/secondary/clang/utils/TableGen/BUILD.gn
+++ b/llvm/utils/gn/secondary/clang/utils/TableGen/BUILD.gn
@@ -12,6 +12,7 @@ executable("clang-tblgen") {
     "ClangASTPropertiesEmitter.cpp",
     "ClangAttrEmitter.cpp",
     "ClangBuiltinTemplatesEmitter.cpp",
+    "ClangBuiltinTraitsEmitter.cpp",
     "ClangBuiltinsEmitter.cpp",
     "ClangCommentCommandInfoEmitter.cpp",
     "ClangCommentHTMLNamedCharacterReferenceEmitter.cpp",
@@ -23,7 +24,6 @@ executable("clang-tblgen") {
     "ClangOptionDocEmitter.cpp",
     "ClangSACheckersEmitter.cpp",
     "ClangSyntaxEmitter.cpp",
-    "ClangTraitsEmitter.cpp",
     "ClangTypeNodesEmitter.cpp",
     "HLSLEmitter.cpp",
     "MveEmitter.cpp",
diff --git a/utils/bazel/llvm-project-overlay/clang/BUILD.bazel 
b/utils/bazel/llvm-project-overlay/clang/BUILD.bazel
index ddfb4e0d6df98..f3ad2b7e21b4a 100644
--- a/utils/bazel/llvm-project-overlay/clang/BUILD.bazel
+++ b/utils/bazel/llvm-project-overlay/clang/BUILD.bazel
@@ -471,9 +471,9 @@ gentbl_cc_library(
 
 gentbl_cc_library(
     name = "basic_traits_gen",
-    tbl_outs = {"include/clang/Basic/Traits.inc": ["-gen-clang-traits"]},
+    tbl_outs = {"include/clang/Basic/BuiltinTraits.inc": 
["-gen-clang-builtin-traits"]},
     tblgen = ":clang-tblgen",
-    td_file = "include/clang/Basic/Traits.td",
+    td_file = "include/clang/Basic/BuiltinTraits.td",
     deps = [":BasicTdFiles"],
 )
 
@@ -721,6 +721,7 @@ cc_library(
         "include/clang/Basic/AttrList.inc",
         "include/clang/Basic/AttrSubMatchRulesList.inc",
         "include/clang/Basic/BuiltinTemplates.inc",
+        "include/clang/Basic/BuiltinTraits.inc",
         "include/clang/Basic/DiagnosticASTKinds.inc",
         "include/clang/Basic/DiagnosticAnalysisKinds.inc",
         "include/clang/Basic/DiagnosticCommentKinds.inc",
@@ -737,7 +738,6 @@ cc_library(
         "include/clang/Basic/DiagnosticSemaKinds.inc",
         "include/clang/Basic/DiagnosticSerializationKinds.inc",
         "include/clang/Basic/DiagnosticStableIDs.inc",
-        "include/clang/Basic/Traits.inc",
         "include/clang/Basic/arm_fp16.inc",
         "include/clang/Basic/arm_immcheck_types.inc",
         "include/clang/Basic/arm_mve_builtin_aliases.inc",

>From 564133151323612f73b67106e58f001fd4e671d3 Mon Sep 17 00:00:00 2001
From: Matthias Wippich <[email protected]>
Date: Fri, 7 Aug 2026 01:57:29 +0200
Subject: [PATCH 2/2] fix formatting errors

---
 clang/utils/TableGen/ClangBuiltinTraitsEmitter.cpp | 3 ++-
 clang/utils/TableGen/TableGenBackends.h            | 3 ++-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/clang/utils/TableGen/ClangBuiltinTraitsEmitter.cpp 
b/clang/utils/TableGen/ClangBuiltinTraitsEmitter.cpp
index c40bc3d75fff1..09fbbcc522c50 100644
--- a/clang/utils/TableGen/ClangBuiltinTraitsEmitter.cpp
+++ b/clang/utils/TableGen/ClangBuiltinTraitsEmitter.cpp
@@ -226,7 +226,8 @@ void emitStdNameCases(const RecordKeeper &Records, 
raw_ostream &OS) {
 
 } // namespace
 
-void clang::EmitClangBuiltinTraits(const RecordKeeper &Records, raw_ostream 
&OS) {
+void clang::EmitClangBuiltinTraits(const RecordKeeper &Records,
+                                   raw_ostream &OS) {
   emitSourceFileHeader("Type and expression traits", OS, Records);
   OS << "#if defined(EMIT_TOKENKEY)\n";
   emitTokenKey(Records, OS);
diff --git a/clang/utils/TableGen/TableGenBackends.h 
b/clang/utils/TableGen/TableGenBackends.h
index 1e4659bbf6a50..764e6aff11cb4 100644
--- a/clang/utils/TableGen/TableGenBackends.h
+++ b/clang/utils/TableGen/TableGenBackends.h
@@ -217,7 +217,8 @@ void EmitClangDataCollectors(const llvm::RecordKeeper 
&Records,
 void EmitTestPragmaAttributeSupportedAttributes(
     const llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
 
-void EmitClangBuiltinTraits(const llvm::RecordKeeper &Records, 
llvm::raw_ostream &OS);
+void EmitClangBuiltinTraits(const llvm::RecordKeeper &Records,
+                            llvm::raw_ostream &OS);
 
 } // end namespace clang
 

_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to