https://github.com/Tsche updated https://github.com/llvm/llvm-project/pull/210838
>From 1c5f3a1c92b31d3189a8d57214ba93156723926c Mon Sep 17 00:00:00 2001 From: Matthias Wippich <[email protected]> Date: Tue, 21 Jul 2026 01:12:38 +0200 Subject: [PATCH 1/3] [clang][NFC] fold ExpressionTraits and TypeTraits helpers into Traits.h --- clang/include/clang/AST/Expr.h | 2 +- clang/include/clang/AST/ExprCXX.h | 3 +- clang/include/clang/AST/Stmt.h | 3 +- clang/include/clang/ASTMatchers/ASTMatchers.h | 2 +- clang/include/clang/Basic/ExpressionTraits.h | 37 ------------------- .../clang/Basic/{TypeTraits.h => Traits.h} | 16 ++++++-- clang/include/clang/Sema/Sema.h | 3 +- clang/lib/AST/ExprConstShared.h | 2 +- clang/lib/AST/StmtPrinter.cpp | 3 +- clang/lib/AST/TextNodeDumper.cpp | 2 +- clang/lib/ASTMatchers/Dynamic/Marshallers.h | 2 +- clang/lib/Basic/CMakeLists.txt | 3 +- clang/lib/Basic/ExpressionTraits.cpp | 35 ------------------ .../lib/Basic/{TypeTraits.cpp => Traits.cpp} | 20 ++++++++-- clang/lib/Sema/SemaChecking.cpp | 2 +- clang/lib/Sema/SemaExpr.cpp | 2 +- clang/lib/Sema/SemaTemplateDeductionGuide.cpp | 2 +- clang/lib/Sema/SemaTypeTraits.cpp | 2 +- clang/lib/Serialization/ASTReaderStmt.cpp | 3 +- .../Checkers/CStringSyntaxChecker.cpp | 4 +- clang/utils/TableGen/ClangTraitsEmitter.cpp | 12 ++++++ .../gn/secondary/clang/lib/Basic/BUILD.gn | 3 +- 22 files changed, 58 insertions(+), 105 deletions(-) delete mode 100644 clang/include/clang/Basic/ExpressionTraits.h rename clang/include/clang/Basic/{TypeTraits.h => Traits.h} (76%) delete mode 100644 clang/lib/Basic/ExpressionTraits.cpp rename clang/lib/Basic/{TypeTraits.cpp => Traits.cpp} (80%) diff --git a/clang/include/clang/AST/Expr.h b/clang/include/clang/AST/Expr.h index 53107e2794174..fd5ae5c6ac827 100644 --- a/clang/include/clang/AST/Expr.h +++ b/clang/include/clang/AST/Expr.h @@ -27,7 +27,7 @@ #include "clang/Basic/CharInfo.h" #include "clang/Basic/LangOptions.h" #include "clang/Basic/SyncScope.h" -#include "clang/Basic/TypeTraits.h" +#include "clang/Basic/Traits.h" #include "llvm/ADT/APFloat.h" #include "llvm/ADT/APSInt.h" #include "llvm/ADT/SmallVector.h" diff --git a/clang/include/clang/AST/ExprCXX.h b/clang/include/clang/AST/ExprCXX.h index 757f2137c90dc..55d377803b0c0 100644 --- a/clang/include/clang/AST/ExprCXX.h +++ b/clang/include/clang/AST/ExprCXX.h @@ -31,7 +31,6 @@ #include "clang/AST/Type.h" #include "clang/AST/UnresolvedSet.h" #include "clang/Basic/ExceptionSpecificationType.h" -#include "clang/Basic/ExpressionTraits.h" #include "clang/Basic/LLVM.h" #include "clang/Basic/Lambda.h" #include "clang/Basic/LangOptions.h" @@ -39,7 +38,7 @@ #include "clang/Basic/SourceLocation.h" #include "clang/Basic/Specifiers.h" #include "clang/Basic/TemplateKinds.h" -#include "clang/Basic/TypeTraits.h" +#include "clang/Basic/Traits.h" #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/PointerUnion.h" #include "llvm/ADT/STLExtras.h" diff --git a/clang/include/clang/AST/Stmt.h b/clang/include/clang/AST/Stmt.h index f07ba9205661b..9f71af7c66cd0 100644 --- a/clang/include/clang/AST/Stmt.h +++ b/clang/include/clang/AST/Stmt.h @@ -19,7 +19,6 @@ #include "clang/AST/OperationKinds.h" #include "clang/AST/StmtIterator.h" #include "clang/Basic/CapturedStmt.h" -#include "clang/Basic/ExpressionTraits.h" #include "clang/Basic/IdentifierTable.h" #include "clang/Basic/LLVM.h" #include "clang/Basic/Lambda.h" @@ -27,7 +26,7 @@ #include "clang/Basic/OperatorKinds.h" #include "clang/Basic/SourceLocation.h" #include "clang/Basic/Specifiers.h" -#include "clang/Basic/TypeTraits.h" +#include "clang/Basic/Traits.h" #include "llvm/ADT/APFloat.h" #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/BitmaskEnum.h" diff --git a/clang/include/clang/ASTMatchers/ASTMatchers.h b/clang/include/clang/ASTMatchers/ASTMatchers.h index 8108ee559acea..758b05ab7897a 100644 --- a/clang/include/clang/ASTMatchers/ASTMatchers.h +++ b/clang/include/clang/ASTMatchers/ASTMatchers.h @@ -80,7 +80,7 @@ #include "clang/Basic/LLVM.h" #include "clang/Basic/SourceManager.h" #include "clang/Basic/Specifiers.h" -#include "clang/Basic/TypeTraits.h" +#include "clang/Basic/Traits.h" #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/SmallVector.h" #include "llvm/ADT/StringExtras.h" diff --git a/clang/include/clang/Basic/ExpressionTraits.h b/clang/include/clang/Basic/ExpressionTraits.h deleted file mode 100644 index 48ae69cf1ae17..0000000000000 --- a/clang/include/clang/Basic/ExpressionTraits.h +++ /dev/null @@ -1,37 +0,0 @@ -//===- ExpressionTraits.h - C++ Expression Traits Support Enums -*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// -/// -/// \file -/// Defines enumerations for expression traits intrinsics. -/// -//===----------------------------------------------------------------------===// - -#ifndef LLVM_CLANG_BASIC_EXPRESSIONTRAITS_H -#define LLVM_CLANG_BASIC_EXPRESSIONTRAITS_H - -#include "llvm/Support/Compiler.h" - -namespace clang { - -enum ExpressionTrait { -#define EXPRESSION_TRAIT(Spelling, Name, Key) ET_##Name, -#include "clang/Basic/Traits.inc" - ET_Last = -1 // ET_Last == last ET_XX in the enum. -#define EXPRESSION_TRAIT(Spelling, Name, Key) +1 -#include "clang/Basic/Traits.inc" -}; - -/// Return the internal name of type trait \p T. Never null. -const char *getTraitName(ExpressionTrait T) LLVM_READONLY; - -/// Return the spelling of the type trait \p TT. Never null. -const char *getTraitSpelling(ExpressionTrait T) LLVM_READONLY; - -} // namespace clang - -#endif diff --git a/clang/include/clang/Basic/TypeTraits.h b/clang/include/clang/Basic/Traits.h similarity index 76% rename from clang/include/clang/Basic/TypeTraits.h rename to clang/include/clang/Basic/Traits.h index 017b8699de89e..bcc5b4060ab61 100644 --- a/clang/include/clang/Basic/TypeTraits.h +++ b/clang/include/clang/Basic/Traits.h @@ -1,4 +1,4 @@ -//===--- TypeTraits.h - C++ Type Traits Support Enumerations ----*- C++ -*-===// +//===--- Traits.h - C++ Traits Support Enumerations ----*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. @@ -7,7 +7,7 @@ //===----------------------------------------------------------------------===// /// /// \file -/// Defines enumerations for the type traits support. +/// Defines enumerations for traits support. /// //===----------------------------------------------------------------------===// @@ -38,18 +38,26 @@ namespace clang { // UETT_ ... // UETT_Last == last UETT_XX in the enum. // }; + +/// Names for the expression traits. +// enum ExpressionTrait { +// ET_ ... +// ET_Last == last ET_XX in the enum. +// }; #define EMIT_ENUMS #include "clang/Basic/Traits.inc" -/// Return the internal name of type trait \p T. Never null. +/// Return the internal name of the trait \p T. Never null. const char *getTraitName(TypeTrait T) LLVM_READONLY; const char *getTraitName(ArrayTypeTrait T) LLVM_READONLY; const char *getTraitName(UnaryExprOrTypeTrait T) LLVM_READONLY; +const char *getTraitName(ExpressionTrait T) LLVM_READONLY; -/// Return the spelling of the type trait \p TT. Never null. +/// Return the spelling of the trait \p T. Never null. const char *getTraitSpelling(TypeTrait T) LLVM_READONLY; const char *getTraitSpelling(ArrayTypeTrait T) LLVM_READONLY; const char *getTraitSpelling(UnaryExprOrTypeTrait T) LLVM_READONLY; +const char *getTraitSpelling(ExpressionTrait T) LLVM_READONLY; /// Return the arity of the type trait \p T. unsigned getTypeTraitArity(TypeTrait T) LLVM_READONLY; diff --git a/clang/include/clang/Sema/Sema.h b/clang/include/clang/Sema/Sema.h index d43b6954196a2..99763989937ad 100644 --- a/clang/include/clang/Sema/Sema.h +++ b/clang/include/clang/Sema/Sema.h @@ -40,7 +40,6 @@ #include "clang/Basic/Cuda.h" #include "clang/Basic/DiagnosticSema.h" #include "clang/Basic/ExceptionSpecificationType.h" -#include "clang/Basic/ExpressionTraits.h" #include "clang/Basic/LLVM.h" #include "clang/Basic/Lambda.h" #include "clang/Basic/LangOptions.h" @@ -54,7 +53,7 @@ #include "clang/Basic/StackExhaustionHandler.h" #include "clang/Basic/TemplateKinds.h" #include "clang/Basic/TokenKinds.h" -#include "clang/Basic/TypeTraits.h" +#include "clang/Basic/Traits.h" #include "clang/Sema/AnalysisBasedWarnings.h" #include "clang/Sema/Attr.h" #include "clang/Sema/CleanupInfo.h" diff --git a/clang/lib/AST/ExprConstShared.h b/clang/lib/AST/ExprConstShared.h index 7ba3071668bd1..f1c9fb2bfab4a 100644 --- a/clang/lib/AST/ExprConstShared.h +++ b/clang/lib/AST/ExprConstShared.h @@ -14,7 +14,7 @@ #ifndef LLVM_CLANG_LIB_AST_EXPRCONSTSHARED_H #define LLVM_CLANG_LIB_AST_EXPRCONSTSHARED_H -#include "clang/Basic/TypeTraits.h" +#include "clang/Basic/Traits.h" #include <cstdint> #include <optional> diff --git a/clang/lib/AST/StmtPrinter.cpp b/clang/lib/AST/StmtPrinter.cpp index 9a97d52fd3020..92bc3e214f3d0 100644 --- a/clang/lib/AST/StmtPrinter.cpp +++ b/clang/lib/AST/StmtPrinter.cpp @@ -35,7 +35,6 @@ #include "clang/AST/StmtVisitor.h" #include "clang/AST/TemplateBase.h" #include "clang/AST/Type.h" -#include "clang/Basic/ExpressionTraits.h" #include "clang/Basic/IdentifierTable.h" #include "clang/Basic/JsonSupport.h" #include "clang/Basic/LLVM.h" @@ -43,7 +42,7 @@ #include "clang/Basic/OpenMPKinds.h" #include "clang/Basic/OperatorKinds.h" #include "clang/Basic/SourceLocation.h" -#include "clang/Basic/TypeTraits.h" +#include "clang/Basic/Traits.h" #include "clang/Lex/Lexer.h" #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/STLExtras.h" diff --git a/clang/lib/AST/TextNodeDumper.cpp b/clang/lib/AST/TextNodeDumper.cpp index 4bc7607a87d92..46939bcb4748b 100644 --- a/clang/lib/AST/TextNodeDumper.cpp +++ b/clang/lib/AST/TextNodeDumper.cpp @@ -22,7 +22,7 @@ #include "clang/Basic/Module.h" #include "clang/Basic/SourceManager.h" #include "clang/Basic/Specifiers.h" -#include "clang/Basic/TypeTraits.h" +#include "clang/Basic/Traits.h" #include "llvm/ADT/StringExtras.h" #include "llvm/Frontend/HLSL/HLSLRootSignature.h" diff --git a/clang/lib/ASTMatchers/Dynamic/Marshallers.h b/clang/lib/ASTMatchers/Dynamic/Marshallers.h index 799df88c95827..2bdf4a201fe5c 100644 --- a/clang/lib/ASTMatchers/Dynamic/Marshallers.h +++ b/clang/lib/ASTMatchers/Dynamic/Marshallers.h @@ -27,7 +27,7 @@ #include "clang/Basic/AttrKinds.h" #include "clang/Basic/LLVM.h" #include "clang/Basic/OpenMPKinds.h" -#include "clang/Basic/TypeTraits.h" +#include "clang/Basic/Traits.h" #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/STLExtras.h" #include "llvm/ADT/StringRef.h" diff --git a/clang/lib/Basic/CMakeLists.txt b/clang/lib/Basic/CMakeLists.txt index 21851e79b9d15..5b88efe5b5e5f 100644 --- a/clang/lib/Basic/CMakeLists.txt +++ b/clang/lib/Basic/CMakeLists.txt @@ -67,7 +67,6 @@ add_clang_library(clangBasic Diagnostic.cpp DiagnosticIDs.cpp DiagnosticOptions.cpp - ExpressionTraits.cpp FileEntry.cpp FileManager.cpp IdentifierTable.cpp @@ -123,7 +122,7 @@ add_clang_library(clangBasic Targets/XCore.cpp Targets/Xtensa.cpp TokenKinds.cpp - TypeTraits.cpp + Traits.cpp Version.cpp Warnings.cpp XRayInstr.cpp diff --git a/clang/lib/Basic/ExpressionTraits.cpp b/clang/lib/Basic/ExpressionTraits.cpp deleted file mode 100644 index 67126ff1d8a05..0000000000000 --- a/clang/lib/Basic/ExpressionTraits.cpp +++ /dev/null @@ -1,35 +0,0 @@ -//===--- ExpressionTraits.cpp - Expression Traits Support -----------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// -// -// This file implements the expression traits support functions. -// -//===----------------------------------------------------------------------===// - -#include "clang/Basic/ExpressionTraits.h" -#include <cassert> -using namespace clang; - -static constexpr const char *ExpressionTraitNames[] = { -#define EXPRESSION_TRAIT(Spelling, Name, Key) #Name, -#include "clang/Basic/Traits.inc" -}; - -static constexpr const char *ExpressionTraitSpellings[] = { -#define EXPRESSION_TRAIT(Spelling, Name, Key) #Spelling, -#include "clang/Basic/Traits.inc" -}; - -const char *clang::getTraitName(ExpressionTrait T) { - assert(T <= ET_Last && "invalid enum value!"); - return ExpressionTraitNames[T]; -} - -const char *clang::getTraitSpelling(ExpressionTrait T) { - assert(T <= ET_Last && "invalid enum value!"); - return ExpressionTraitSpellings[T]; -} diff --git a/clang/lib/Basic/TypeTraits.cpp b/clang/lib/Basic/Traits.cpp similarity index 80% rename from clang/lib/Basic/TypeTraits.cpp rename to clang/lib/Basic/Traits.cpp index 8307cf9e5afbd..2065dc7ab6b6a 100644 --- a/clang/lib/Basic/TypeTraits.cpp +++ b/clang/lib/Basic/Traits.cpp @@ -1,4 +1,4 @@ -//===--- TypeTraits.cpp - Type Traits Support -----------------------------===// +//===--- Traits.cpp - Traits Support --------------------------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. @@ -6,22 +6,24 @@ // //===----------------------------------------------------------------------===// // -// This file implements the type traits support functions. +// This file implements the traits support functions. // //===----------------------------------------------------------------------===// -#include "clang/Basic/TypeTraits.h" +#include "clang/Basic/Traits.h" #include <cassert> #include <cstring> using namespace clang; // static constexpr const char *TypeTraitNames[] = {...}; // static constexpr const char *TypeTraitSpellings[] = {...}; +// static constexpr const unsigned TypeTraitArities[] = {...}; // static constexpr const char *ArrayTypeTraitNames[] = {...}; // static constexpr const char *ArrayTypeTraitSpellings[] = {...}; // static constexpr const char *UnaryExprOrTypeTraitNames[] = {...}; // static constexpr const char *UnaryExprOrTypeTraitSpellings[] = {...}; -// static constexpr const unsigned TypeTraitArities[] = {...}; +// static constexpr const char *ExpressionTraitNames[] = {...}; +// static constexpr const char *ExpressionTraitSpellings[] = {...}; #define EMIT_ARRAYS #include "clang/Basic/Traits.inc" @@ -40,6 +42,11 @@ const char *clang::getTraitName(UnaryExprOrTypeTrait T) { return UnaryExprOrTypeTraitNames[T]; } +const char *clang::getTraitName(ExpressionTrait T) { + assert(T <= ET_Last && "invalid enum value!"); + return ExpressionTraitNames[T]; +} + const char *clang::getTraitSpelling(TypeTrait T) { assert(T <= TT_Last && "invalid enum value!"); if (T == BTT_IsDeducible) { @@ -68,3 +75,8 @@ unsigned clang::getTypeTraitArity(TypeTrait T) { assert(T <= TT_Last && "invalid enum value!"); return TypeTraitArities[T]; } + +const char *clang::getTraitSpelling(ExpressionTrait T) { + assert(T <= ET_Last && "invalid enum value!"); + return ExpressionTraitSpellings[T]; +} diff --git a/clang/lib/Sema/SemaChecking.cpp b/clang/lib/Sema/SemaChecking.cpp index ef07e8c6133ed..a966e9fa6248b 100644 --- a/clang/lib/Sema/SemaChecking.cpp +++ b/clang/lib/Sema/SemaChecking.cpp @@ -54,7 +54,7 @@ #include "clang/Basic/Specifiers.h" #include "clang/Basic/SyncScope.h" #include "clang/Basic/TargetInfo.h" -#include "clang/Basic/TypeTraits.h" +#include "clang/Basic/Traits.h" #include "clang/Lex/Lexer.h" // TODO: Extract static functions to fix layering. #include "clang/Sema/Initialization.h" #include "clang/Sema/Lookup.h" diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp index b844670543a55..ea6bb475c1092 100644 --- a/clang/lib/Sema/SemaExpr.cpp +++ b/clang/lib/Sema/SemaExpr.cpp @@ -39,7 +39,7 @@ #include "clang/Basic/SourceManager.h" #include "clang/Basic/Specifiers.h" #include "clang/Basic/TargetInfo.h" -#include "clang/Basic/TypeTraits.h" +#include "clang/Basic/Traits.h" #include "clang/Lex/LiteralSupport.h" #include "clang/Lex/Preprocessor.h" #include "clang/Sema/AnalysisBasedWarnings.h" diff --git a/clang/lib/Sema/SemaTemplateDeductionGuide.cpp b/clang/lib/Sema/SemaTemplateDeductionGuide.cpp index fa740d5581e5f..54349add9aced 100644 --- a/clang/lib/Sema/SemaTemplateDeductionGuide.cpp +++ b/clang/lib/Sema/SemaTemplateDeductionGuide.cpp @@ -31,7 +31,7 @@ #include "clang/Basic/LLVM.h" #include "clang/Basic/SourceLocation.h" #include "clang/Basic/Specifiers.h" -#include "clang/Basic/TypeTraits.h" +#include "clang/Basic/Traits.h" #include "clang/Sema/DeclSpec.h" #include "clang/Sema/Initialization.h" #include "clang/Sema/Lookup.h" diff --git a/clang/lib/Sema/SemaTypeTraits.cpp b/clang/lib/Sema/SemaTypeTraits.cpp index fe3d3c5acf7be..cf2cbb8a5312c 100644 --- a/clang/lib/Sema/SemaTypeTraits.cpp +++ b/clang/lib/Sema/SemaTypeTraits.cpp @@ -17,7 +17,7 @@ #include "clang/Basic/DiagnosticParse.h" #include "clang/Basic/DiagnosticSema.h" #include "clang/Basic/Specifiers.h" -#include "clang/Basic/TypeTraits.h" +#include "clang/Basic/Traits.h" #include "clang/Sema/EnterExpressionEvaluationContext.h" #include "clang/Sema/Initialization.h" #include "clang/Sema/Lookup.h" diff --git a/clang/lib/Serialization/ASTReaderStmt.cpp b/clang/lib/Serialization/ASTReaderStmt.cpp index 87cec16a76323..4e0a56dcf371c 100644 --- a/clang/lib/Serialization/ASTReaderStmt.cpp +++ b/clang/lib/Serialization/ASTReaderStmt.cpp @@ -39,13 +39,12 @@ #include "clang/AST/Type.h" #include "clang/AST/UnresolvedSet.h" #include "clang/Basic/CapturedStmt.h" -#include "clang/Basic/ExpressionTraits.h" #include "clang/Basic/LLVM.h" #include "clang/Basic/LangOptions.h" #include "clang/Basic/OpenMPKinds.h" #include "clang/Basic/SourceLocation.h" #include "clang/Basic/Specifiers.h" -#include "clang/Basic/TypeTraits.h" +#include "clang/Basic/Traits.h" #include "clang/Lex/Token.h" #include "clang/Serialization/ASTBitCodes.h" #include "clang/Serialization/ASTRecordReader.h" diff --git a/clang/lib/StaticAnalyzer/Checkers/CStringSyntaxChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/CStringSyntaxChecker.cpp index 888724f7ea3b2..a021a46c7b20a 100644 --- a/clang/lib/StaticAnalyzer/Checkers/CStringSyntaxChecker.cpp +++ b/clang/lib/StaticAnalyzer/Checkers/CStringSyntaxChecker.cpp @@ -11,13 +11,13 @@ // of bytes to copy. // //===----------------------------------------------------------------------===// -#include "clang/StaticAnalyzer/Checkers/BuiltinCheckerRegistration.h" #include "clang/AST/Expr.h" #include "clang/AST/OperationKinds.h" #include "clang/AST/StmtVisitor.h" #include "clang/Analysis/AnalysisDeclContext.h" #include "clang/Basic/TargetInfo.h" -#include "clang/Basic/TypeTraits.h" +#include "clang/Basic/Traits.h" +#include "clang/StaticAnalyzer/Checkers/BuiltinCheckerRegistration.h" #include "clang/StaticAnalyzer/Core/BugReporter/BugReporter.h" #include "clang/StaticAnalyzer/Core/Checker.h" #include "clang/StaticAnalyzer/Core/PathSensitive/AnalysisManager.h" diff --git a/clang/utils/TableGen/ClangTraitsEmitter.cpp b/clang/utils/TableGen/ClangTraitsEmitter.cpp index 6ca0aa313f754..62936c6609ba0 100644 --- a/clang/utils/TableGen/ClangTraitsEmitter.cpp +++ b/clang/utils/TableGen/ClangTraitsEmitter.cpp @@ -147,6 +147,15 @@ void emitEnums(const RecordKeeper &Records, raw_ostream &OS) { OS << " UETT_Last = " << UETTs.size() + CXX11UETTs.size() - 1 << " // UETT_Last == last UETT_XX in the enum.\n" << "};\n\n"; + + const auto ExpressionTraits = + getAllDerivedDefsInDeclOrder(Records, "ExpressionTrait"); + OS << "/// Names for the expression traits.\n" + "enum ExpressionTrait {\n"; + emitEnumerators(OS, ExpressionTraits); + OS << " ET_Last = " << ExpressionTraits.size() - 1 + << " // ET_Last == last ET_XX in the enum.\n" + << "};\n\n"; } template <typename RangeT> @@ -192,6 +201,9 @@ void emitArrays(const RecordKeeper &Records, raw_ostream &OS) { concat<const Record *const>( getAllDerivedDefsInDeclOrder(Records, "UnaryExprOrTypeTrait"), getAllDerivedDefsInDeclOrder(Records, "CXX11UnaryExprOrTypeTrait"))); + emitNamesAndSpellings( + OS, "ExpressionTrait", + getAllDerivedDefsInDeclOrder(Records, "ExpressionTrait")); } void emitStdNameCases(const RecordKeeper &Records, raw_ostream &OS) { diff --git a/llvm/utils/gn/secondary/clang/lib/Basic/BUILD.gn b/llvm/utils/gn/secondary/clang/lib/Basic/BUILD.gn index 61a983990bdf8..72a8005a58b30 100644 --- a/llvm/utils/gn/secondary/clang/lib/Basic/BUILD.gn +++ b/llvm/utils/gn/secondary/clang/lib/Basic/BUILD.gn @@ -89,7 +89,6 @@ static_library("Basic") { "Diagnostic.cpp", "DiagnosticIDs.cpp", "DiagnosticOptions.cpp", - "ExpressionTraits.cpp", "FileEntry.cpp", "FileManager.cpp", "IdentifierTable.cpp", @@ -145,7 +144,7 @@ static_library("Basic") { "Targets/XCore.cpp", "Targets/Xtensa.cpp", "TokenKinds.cpp", - "TypeTraits.cpp", + "Traits.cpp", "Version.cpp", "Warnings.cpp", "XRayInstr.cpp", >From ae815ea99e4119e4cb110118f3b569d9e2f83979 Mon Sep 17 00:00:00 2001 From: Matthias Wippich <[email protected]> Date: Thu, 23 Jul 2026 01:59:01 +0200 Subject: [PATCH 2/3] Rename to BuiltinTraits --- clang/include/clang/AST/Expr.h | 2 +- clang/include/clang/AST/ExprCXX.h | 2 +- clang/include/clang/AST/Stmt.h | 2 +- clang/include/clang/ASTMatchers/ASTMatchers.h | 2 +- clang/include/clang/Basic/{Traits.h => BuiltinTraits.h} | 2 +- clang/include/clang/Sema/Sema.h | 2 +- clang/lib/AST/ExprConstShared.h | 2 +- clang/lib/AST/StmtPrinter.cpp | 2 +- clang/lib/AST/TextNodeDumper.cpp | 2 +- clang/lib/ASTMatchers/Dynamic/Marshallers.h | 2 +- clang/lib/Basic/{Traits.cpp => BuiltinTraits.cpp} | 4 ++-- clang/lib/Basic/CMakeLists.txt | 2 +- clang/lib/Sema/SemaChecking.cpp | 2 +- clang/lib/Sema/SemaExpr.cpp | 2 +- clang/lib/Sema/SemaTemplateDeductionGuide.cpp | 2 +- clang/lib/Sema/SemaTypeTraits.cpp | 2 +- clang/lib/Serialization/ASTReaderStmt.cpp | 2 +- clang/lib/StaticAnalyzer/Checkers/CStringSyntaxChecker.cpp | 4 ++-- llvm/utils/gn/secondary/clang/lib/Basic/BUILD.gn | 2 +- 19 files changed, 21 insertions(+), 21 deletions(-) rename clang/include/clang/Basic/{Traits.h => BuiltinTraits.h} (96%) rename clang/lib/Basic/{Traits.cpp => BuiltinTraits.cpp} (96%) diff --git a/clang/include/clang/AST/Expr.h b/clang/include/clang/AST/Expr.h index fd5ae5c6ac827..f95f87cc4e8e0 100644 --- a/clang/include/clang/AST/Expr.h +++ b/clang/include/clang/AST/Expr.h @@ -24,10 +24,10 @@ #include "clang/AST/Stmt.h" #include "clang/AST/TemplateBase.h" #include "clang/AST/TypeBase.h" +#include "clang/Basic/BuiltinTraits.h" #include "clang/Basic/CharInfo.h" #include "clang/Basic/LangOptions.h" #include "clang/Basic/SyncScope.h" -#include "clang/Basic/Traits.h" #include "llvm/ADT/APFloat.h" #include "llvm/ADT/APSInt.h" #include "llvm/ADT/SmallVector.h" diff --git a/clang/include/clang/AST/ExprCXX.h b/clang/include/clang/AST/ExprCXX.h index 55d377803b0c0..a43f8950d456e 100644 --- a/clang/include/clang/AST/ExprCXX.h +++ b/clang/include/clang/AST/ExprCXX.h @@ -30,6 +30,7 @@ #include "clang/AST/TemplateBase.h" #include "clang/AST/Type.h" #include "clang/AST/UnresolvedSet.h" +#include "clang/Basic/BuiltinTraits.h" #include "clang/Basic/ExceptionSpecificationType.h" #include "clang/Basic/LLVM.h" #include "clang/Basic/Lambda.h" @@ -38,7 +39,6 @@ #include "clang/Basic/SourceLocation.h" #include "clang/Basic/Specifiers.h" #include "clang/Basic/TemplateKinds.h" -#include "clang/Basic/Traits.h" #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/PointerUnion.h" #include "llvm/ADT/STLExtras.h" diff --git a/clang/include/clang/AST/Stmt.h b/clang/include/clang/AST/Stmt.h index 9f71af7c66cd0..69db8252f931e 100644 --- a/clang/include/clang/AST/Stmt.h +++ b/clang/include/clang/AST/Stmt.h @@ -18,6 +18,7 @@ #include "clang/AST/DependenceFlags.h" #include "clang/AST/OperationKinds.h" #include "clang/AST/StmtIterator.h" +#include "clang/Basic/BuiltinTraits.h" #include "clang/Basic/CapturedStmt.h" #include "clang/Basic/IdentifierTable.h" #include "clang/Basic/LLVM.h" @@ -26,7 +27,6 @@ #include "clang/Basic/OperatorKinds.h" #include "clang/Basic/SourceLocation.h" #include "clang/Basic/Specifiers.h" -#include "clang/Basic/Traits.h" #include "llvm/ADT/APFloat.h" #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/BitmaskEnum.h" diff --git a/clang/include/clang/ASTMatchers/ASTMatchers.h b/clang/include/clang/ASTMatchers/ASTMatchers.h index 758b05ab7897a..02d52b51a45c9 100644 --- a/clang/include/clang/ASTMatchers/ASTMatchers.h +++ b/clang/include/clang/ASTMatchers/ASTMatchers.h @@ -74,13 +74,13 @@ #include "clang/ASTMatchers/ASTMatchersMacros.h" #include "clang/ASTMatchers/LowLevelHelpers.h" #include "clang/Basic/AttrKinds.h" +#include "clang/Basic/BuiltinTraits.h" #include "clang/Basic/ExceptionSpecificationType.h" #include "clang/Basic/FileManager.h" #include "clang/Basic/IdentifierTable.h" #include "clang/Basic/LLVM.h" #include "clang/Basic/SourceManager.h" #include "clang/Basic/Specifiers.h" -#include "clang/Basic/Traits.h" #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/SmallVector.h" #include "llvm/ADT/StringExtras.h" diff --git a/clang/include/clang/Basic/Traits.h b/clang/include/clang/Basic/BuiltinTraits.h similarity index 96% rename from clang/include/clang/Basic/Traits.h rename to clang/include/clang/Basic/BuiltinTraits.h index bcc5b4060ab61..7ff5556e119aa 100644 --- a/clang/include/clang/Basic/Traits.h +++ b/clang/include/clang/Basic/BuiltinTraits.h @@ -1,4 +1,4 @@ -//===--- Traits.h - C++ Traits Support Enumerations ----*- C++ -*-===// +//===--- BuiltinTraits.h - C++ Traits Support Enumerations ----*- C++ -*-=====// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. diff --git a/clang/include/clang/Sema/Sema.h b/clang/include/clang/Sema/Sema.h index 99763989937ad..9c9b0012fe44f 100644 --- a/clang/include/clang/Sema/Sema.h +++ b/clang/include/clang/Sema/Sema.h @@ -36,6 +36,7 @@ #include "clang/Analysis/Analyses/LifetimeSafety/LifetimeAnnotations.h" #include "clang/Basic/AttrSubjectMatchRules.h" #include "clang/Basic/Builtins.h" +#include "clang/Basic/BuiltinTraits.h" #include "clang/Basic/CapturedStmt.h" #include "clang/Basic/Cuda.h" #include "clang/Basic/DiagnosticSema.h" @@ -53,7 +54,6 @@ #include "clang/Basic/StackExhaustionHandler.h" #include "clang/Basic/TemplateKinds.h" #include "clang/Basic/TokenKinds.h" -#include "clang/Basic/Traits.h" #include "clang/Sema/AnalysisBasedWarnings.h" #include "clang/Sema/Attr.h" #include "clang/Sema/CleanupInfo.h" diff --git a/clang/lib/AST/ExprConstShared.h b/clang/lib/AST/ExprConstShared.h index f1c9fb2bfab4a..cdf2a5697528e 100644 --- a/clang/lib/AST/ExprConstShared.h +++ b/clang/lib/AST/ExprConstShared.h @@ -14,7 +14,7 @@ #ifndef LLVM_CLANG_LIB_AST_EXPRCONSTSHARED_H #define LLVM_CLANG_LIB_AST_EXPRCONSTSHARED_H -#include "clang/Basic/Traits.h" +#include "clang/Basic/BuiltinTraits.h" #include <cstdint> #include <optional> diff --git a/clang/lib/AST/StmtPrinter.cpp b/clang/lib/AST/StmtPrinter.cpp index 92bc3e214f3d0..a11c0dfb75d81 100644 --- a/clang/lib/AST/StmtPrinter.cpp +++ b/clang/lib/AST/StmtPrinter.cpp @@ -35,6 +35,7 @@ #include "clang/AST/StmtVisitor.h" #include "clang/AST/TemplateBase.h" #include "clang/AST/Type.h" +#include "clang/Basic/BuiltinTraits.h" #include "clang/Basic/IdentifierTable.h" #include "clang/Basic/JsonSupport.h" #include "clang/Basic/LLVM.h" @@ -42,7 +43,6 @@ #include "clang/Basic/OpenMPKinds.h" #include "clang/Basic/OperatorKinds.h" #include "clang/Basic/SourceLocation.h" -#include "clang/Basic/Traits.h" #include "clang/Lex/Lexer.h" #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/STLExtras.h" diff --git a/clang/lib/AST/TextNodeDumper.cpp b/clang/lib/AST/TextNodeDumper.cpp index 46939bcb4748b..843e12b371a9b 100644 --- a/clang/lib/AST/TextNodeDumper.cpp +++ b/clang/lib/AST/TextNodeDumper.cpp @@ -19,10 +19,10 @@ #include "clang/AST/NestedNameSpecifier.h" #include "clang/AST/Type.h" #include "clang/AST/TypeLocVisitor.h" +#include "clang/Basic/BuiltinTraits.h" #include "clang/Basic/Module.h" #include "clang/Basic/SourceManager.h" #include "clang/Basic/Specifiers.h" -#include "clang/Basic/Traits.h" #include "llvm/ADT/StringExtras.h" #include "llvm/Frontend/HLSL/HLSLRootSignature.h" diff --git a/clang/lib/ASTMatchers/Dynamic/Marshallers.h b/clang/lib/ASTMatchers/Dynamic/Marshallers.h index 2bdf4a201fe5c..5b6e47addbb64 100644 --- a/clang/lib/ASTMatchers/Dynamic/Marshallers.h +++ b/clang/lib/ASTMatchers/Dynamic/Marshallers.h @@ -25,9 +25,9 @@ #include "clang/ASTMatchers/Dynamic/Diagnostics.h" #include "clang/ASTMatchers/Dynamic/VariantValue.h" #include "clang/Basic/AttrKinds.h" +#include "clang/Basic/BuiltinTraits.h" #include "clang/Basic/LLVM.h" #include "clang/Basic/OpenMPKinds.h" -#include "clang/Basic/Traits.h" #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/STLExtras.h" #include "llvm/ADT/StringRef.h" diff --git a/clang/lib/Basic/Traits.cpp b/clang/lib/Basic/BuiltinTraits.cpp similarity index 96% rename from clang/lib/Basic/Traits.cpp rename to clang/lib/Basic/BuiltinTraits.cpp index 2065dc7ab6b6a..7bc88b2aef3e9 100644 --- a/clang/lib/Basic/Traits.cpp +++ b/clang/lib/Basic/BuiltinTraits.cpp @@ -1,4 +1,4 @@ -//===--- Traits.cpp - Traits Support --------------------------------------===// +//===--- BuiltinTraits.cpp - Builtin Traits Support -----------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. @@ -10,7 +10,7 @@ // //===----------------------------------------------------------------------===// -#include "clang/Basic/Traits.h" +#include "clang/Basic/BuiltinTraits.h" #include <cassert> #include <cstring> using namespace clang; diff --git a/clang/lib/Basic/CMakeLists.txt b/clang/lib/Basic/CMakeLists.txt index 5b88efe5b5e5f..6329c3fa8b34e 100644 --- a/clang/lib/Basic/CMakeLists.txt +++ b/clang/lib/Basic/CMakeLists.txt @@ -59,6 +59,7 @@ add_clang_library(clangBasic Attributes.cpp AtomicLineLogger.cpp Builtins.cpp + BuiltinTraits.cpp CLWarnings.cpp CharInfo.cpp CodeGenOptions.cpp @@ -122,7 +123,6 @@ add_clang_library(clangBasic Targets/XCore.cpp Targets/Xtensa.cpp TokenKinds.cpp - Traits.cpp Version.cpp Warnings.cpp XRayInstr.cpp diff --git a/clang/lib/Sema/SemaChecking.cpp b/clang/lib/Sema/SemaChecking.cpp index a966e9fa6248b..ff42d98df965c 100644 --- a/clang/lib/Sema/SemaChecking.cpp +++ b/clang/lib/Sema/SemaChecking.cpp @@ -41,6 +41,7 @@ #include "clang/AST/TypeLoc.h" #include "clang/AST/UnresolvedSet.h" #include "clang/Basic/AddressSpaces.h" +#include "clang/Basic/BuiltinTraits.h" #include "clang/Basic/Diagnostic.h" #include "clang/Basic/DiagnosticSema.h" #include "clang/Basic/IdentifierTable.h" @@ -54,7 +55,6 @@ #include "clang/Basic/Specifiers.h" #include "clang/Basic/SyncScope.h" #include "clang/Basic/TargetInfo.h" -#include "clang/Basic/Traits.h" #include "clang/Lex/Lexer.h" // TODO: Extract static functions to fix layering. #include "clang/Sema/Initialization.h" #include "clang/Sema/Lookup.h" diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp index ea6bb475c1092..5956a65d799c8 100644 --- a/clang/lib/Sema/SemaExpr.cpp +++ b/clang/lib/Sema/SemaExpr.cpp @@ -34,12 +34,12 @@ #include "clang/AST/Type.h" #include "clang/AST/TypeLoc.h" #include "clang/Basic/Builtins.h" +#include "clang/Basic/BuiltinTraits.h" #include "clang/Basic/DiagnosticSema.h" #include "clang/Basic/PartialDiagnostic.h" #include "clang/Basic/SourceManager.h" #include "clang/Basic/Specifiers.h" #include "clang/Basic/TargetInfo.h" -#include "clang/Basic/Traits.h" #include "clang/Lex/LiteralSupport.h" #include "clang/Lex/Preprocessor.h" #include "clang/Sema/AnalysisBasedWarnings.h" diff --git a/clang/lib/Sema/SemaTemplateDeductionGuide.cpp b/clang/lib/Sema/SemaTemplateDeductionGuide.cpp index 54349add9aced..3f37b59807f85 100644 --- a/clang/lib/Sema/SemaTemplateDeductionGuide.cpp +++ b/clang/lib/Sema/SemaTemplateDeductionGuide.cpp @@ -28,10 +28,10 @@ #include "clang/AST/TemplateName.h" #include "clang/AST/Type.h" #include "clang/AST/TypeLoc.h" +#include "clang/Basic/BuiltinTraits.h" #include "clang/Basic/LLVM.h" #include "clang/Basic/SourceLocation.h" #include "clang/Basic/Specifiers.h" -#include "clang/Basic/Traits.h" #include "clang/Sema/DeclSpec.h" #include "clang/Sema/Initialization.h" #include "clang/Sema/Lookup.h" diff --git a/clang/lib/Sema/SemaTypeTraits.cpp b/clang/lib/Sema/SemaTypeTraits.cpp index cf2cbb8a5312c..e6c79dbeedc6a 100644 --- a/clang/lib/Sema/SemaTypeTraits.cpp +++ b/clang/lib/Sema/SemaTypeTraits.cpp @@ -13,11 +13,11 @@ #include "clang/AST/DeclCXX.h" #include "clang/AST/TemplateBase.h" #include "clang/AST/Type.h" +#include "clang/Basic/BuiltinTraits.h" #include "clang/Basic/DiagnosticIDs.h" #include "clang/Basic/DiagnosticParse.h" #include "clang/Basic/DiagnosticSema.h" #include "clang/Basic/Specifiers.h" -#include "clang/Basic/Traits.h" #include "clang/Sema/EnterExpressionEvaluationContext.h" #include "clang/Sema/Initialization.h" #include "clang/Sema/Lookup.h" diff --git a/clang/lib/Serialization/ASTReaderStmt.cpp b/clang/lib/Serialization/ASTReaderStmt.cpp index 4e0a56dcf371c..97f1857e200ca 100644 --- a/clang/lib/Serialization/ASTReaderStmt.cpp +++ b/clang/lib/Serialization/ASTReaderStmt.cpp @@ -38,13 +38,13 @@ #include "clang/AST/TemplateBase.h" #include "clang/AST/Type.h" #include "clang/AST/UnresolvedSet.h" +#include "clang/Basic/BuiltinTraits.h" #include "clang/Basic/CapturedStmt.h" #include "clang/Basic/LLVM.h" #include "clang/Basic/LangOptions.h" #include "clang/Basic/OpenMPKinds.h" #include "clang/Basic/SourceLocation.h" #include "clang/Basic/Specifiers.h" -#include "clang/Basic/Traits.h" #include "clang/Lex/Token.h" #include "clang/Serialization/ASTBitCodes.h" #include "clang/Serialization/ASTRecordReader.h" diff --git a/clang/lib/StaticAnalyzer/Checkers/CStringSyntaxChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/CStringSyntaxChecker.cpp index a021a46c7b20a..bfd90beb82cde 100644 --- a/clang/lib/StaticAnalyzer/Checkers/CStringSyntaxChecker.cpp +++ b/clang/lib/StaticAnalyzer/Checkers/CStringSyntaxChecker.cpp @@ -11,13 +11,13 @@ // of bytes to copy. // //===----------------------------------------------------------------------===// +#include "clang/StaticAnalyzer/Checkers/BuiltinCheckerRegistration.h" #include "clang/AST/Expr.h" #include "clang/AST/OperationKinds.h" #include "clang/AST/StmtVisitor.h" #include "clang/Analysis/AnalysisDeclContext.h" +#include "clang/Basic/BuiltinTraits.h" #include "clang/Basic/TargetInfo.h" -#include "clang/Basic/Traits.h" -#include "clang/StaticAnalyzer/Checkers/BuiltinCheckerRegistration.h" #include "clang/StaticAnalyzer/Core/BugReporter/BugReporter.h" #include "clang/StaticAnalyzer/Core/Checker.h" #include "clang/StaticAnalyzer/Core/PathSensitive/AnalysisManager.h" diff --git a/llvm/utils/gn/secondary/clang/lib/Basic/BUILD.gn b/llvm/utils/gn/secondary/clang/lib/Basic/BUILD.gn index 72a8005a58b30..d5f3ee7ca2761 100644 --- a/llvm/utils/gn/secondary/clang/lib/Basic/BUILD.gn +++ b/llvm/utils/gn/secondary/clang/lib/Basic/BUILD.gn @@ -81,6 +81,7 @@ static_library("Basic") { "AtomicLineLogger.cpp", "Attributes.cpp", "Builtins.cpp", + "BuiltinTraits.cpp", "CLWarnings.cpp", "CharInfo.cpp", "CodeGenOptions.cpp", @@ -144,7 +145,6 @@ static_library("Basic") { "Targets/XCore.cpp", "Targets/Xtensa.cpp", "TokenKinds.cpp", - "Traits.cpp", "Version.cpp", "Warnings.cpp", "XRayInstr.cpp", >From 1daa941e8394d1d3c6b55567773766da2cc8c5f0 Mon Sep 17 00:00:00 2001 From: Matthias Wippich <[email protected]> Date: Thu, 23 Jul 2026 12:22:27 +0200 Subject: [PATCH 3/3] fix include order --- clang/include/clang/Sema/Sema.h | 2 +- clang/lib/Sema/SemaExpr.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/clang/include/clang/Sema/Sema.h b/clang/include/clang/Sema/Sema.h index 9c9b0012fe44f..427b60724ffd4 100644 --- a/clang/include/clang/Sema/Sema.h +++ b/clang/include/clang/Sema/Sema.h @@ -35,8 +35,8 @@ #include "clang/AST/TypeLoc.h" #include "clang/Analysis/Analyses/LifetimeSafety/LifetimeAnnotations.h" #include "clang/Basic/AttrSubjectMatchRules.h" -#include "clang/Basic/Builtins.h" #include "clang/Basic/BuiltinTraits.h" +#include "clang/Basic/Builtins.h" #include "clang/Basic/CapturedStmt.h" #include "clang/Basic/Cuda.h" #include "clang/Basic/DiagnosticSema.h" diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp index 5956a65d799c8..28835dc07daa4 100644 --- a/clang/lib/Sema/SemaExpr.cpp +++ b/clang/lib/Sema/SemaExpr.cpp @@ -33,8 +33,8 @@ #include "clang/AST/StmtVisitor.h" #include "clang/AST/Type.h" #include "clang/AST/TypeLoc.h" -#include "clang/Basic/Builtins.h" #include "clang/Basic/BuiltinTraits.h" +#include "clang/Basic/Builtins.h" #include "clang/Basic/DiagnosticSema.h" #include "clang/Basic/PartialDiagnostic.h" #include "clang/Basic/SourceManager.h" _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
