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
