[clang] [llvm] [clang][NFC] Rename Traits.td to BuiltinTraits.td (PR #214595)
Matthias Wippich via cfe-commits
cfe-commits at lists.llvm.org
Thu Aug 6 16:57:54 PDT 2026
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 <mfwippich at gmail.com>
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 <mfwippich at gmail.com>
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
More information about the cfe-commits
mailing list