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

>From 43888dfe89e4abab278e4303d0c9bbe9d8ac9050 Mon Sep 17 00:00:00 2001
From: Matthias Wippich <[email protected]>
Date: Tue, 28 Jul 2026 11:12:19 +0200
Subject: [PATCH] [clang][NFC] fold ExpressionTraits and TypeTraits helpers
 into BuiltinTraits

---
 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 +-
 .../Basic/{TypeTraits.h => BuiltinTraits.h}   | 16 ++++++--
 clang/include/clang/Basic/ExpressionTraits.h  | 37 -------------------
 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 +-
 .../{TypeTraits.cpp => BuiltinTraits.cpp}     | 20 ++++++++--
 clang/lib/Basic/CMakeLists.txt                |  3 +-
 clang/lib/Basic/ExpressionTraits.cpp          | 35 ------------------
 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         |  2 +-
 clang/utils/TableGen/ClangTraitsEmitter.cpp   | 12 ++++++
 .../gn/secondary/clang/lib/Basic/BUILD.gn     |  3 +-
 22 files changed, 57 insertions(+), 104 deletions(-)
 rename clang/include/clang/Basic/{TypeTraits.h => BuiltinTraits.h} (76%)
 delete mode 100644 clang/include/clang/Basic/ExpressionTraits.h
 rename clang/lib/Basic/{TypeTraits.cpp => BuiltinTraits.cpp} (80%)
 delete mode 100644 clang/lib/Basic/ExpressionTraits.cpp

diff --git a/clang/include/clang/AST/Expr.h b/clang/include/clang/AST/Expr.h
index 53107e2794174..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/TypeTraits.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..a43f8950d456e 100644
--- a/clang/include/clang/AST/ExprCXX.h
+++ b/clang/include/clang/AST/ExprCXX.h
@@ -30,8 +30,8 @@
 #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/ExpressionTraits.h"
 #include "clang/Basic/LLVM.h"
 #include "clang/Basic/Lambda.h"
 #include "clang/Basic/LangOptions.h"
@@ -39,7 +39,6 @@
 #include "clang/Basic/SourceLocation.h"
 #include "clang/Basic/Specifiers.h"
 #include "clang/Basic/TemplateKinds.h"
-#include "clang/Basic/TypeTraits.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..69db8252f931e 100644
--- a/clang/include/clang/AST/Stmt.h
+++ b/clang/include/clang/AST/Stmt.h
@@ -18,8 +18,8 @@
 #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/ExpressionTraits.h"
 #include "clang/Basic/IdentifierTable.h"
 #include "clang/Basic/LLVM.h"
 #include "clang/Basic/Lambda.h"
@@ -27,7 +27,6 @@
 #include "clang/Basic/OperatorKinds.h"
 #include "clang/Basic/SourceLocation.h"
 #include "clang/Basic/Specifiers.h"
-#include "clang/Basic/TypeTraits.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..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/TypeTraits.h"
 #include "llvm/ADT/ArrayRef.h"
 #include "llvm/ADT/SmallVector.h"
 #include "llvm/ADT/StringExtras.h"
diff --git a/clang/include/clang/Basic/TypeTraits.h 
b/clang/include/clang/Basic/BuiltinTraits.h
similarity index 76%
rename from clang/include/clang/Basic/TypeTraits.h
rename to clang/include/clang/Basic/BuiltinTraits.h
index 017b8699de89e..7ff5556e119aa 100644
--- a/clang/include/clang/Basic/TypeTraits.h
+++ b/clang/include/clang/Basic/BuiltinTraits.h
@@ -1,4 +1,4 @@
-//===--- TypeTraits.h - C++ Type 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.
@@ -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/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/Sema/Sema.h b/clang/include/clang/Sema/Sema.h
index d43b6954196a2..427b60724ffd4 100644
--- a/clang/include/clang/Sema/Sema.h
+++ b/clang/include/clang/Sema/Sema.h
@@ -35,12 +35,12 @@
 #include "clang/AST/TypeLoc.h"
 #include "clang/Analysis/Analyses/LifetimeSafety/LifetimeAnnotations.h"
 #include "clang/Basic/AttrSubjectMatchRules.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"
 #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 +54,6 @@
 #include "clang/Basic/StackExhaustionHandler.h"
 #include "clang/Basic/TemplateKinds.h"
 #include "clang/Basic/TokenKinds.h"
-#include "clang/Basic/TypeTraits.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..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/TypeTraits.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 9a97d52fd3020..a11c0dfb75d81 100644
--- a/clang/lib/AST/StmtPrinter.cpp
+++ b/clang/lib/AST/StmtPrinter.cpp
@@ -35,7 +35,7 @@
 #include "clang/AST/StmtVisitor.h"
 #include "clang/AST/TemplateBase.h"
 #include "clang/AST/Type.h"
-#include "clang/Basic/ExpressionTraits.h"
+#include "clang/Basic/BuiltinTraits.h"
 #include "clang/Basic/IdentifierTable.h"
 #include "clang/Basic/JsonSupport.h"
 #include "clang/Basic/LLVM.h"
@@ -43,7 +43,6 @@
 #include "clang/Basic/OpenMPKinds.h"
 #include "clang/Basic/OperatorKinds.h"
 #include "clang/Basic/SourceLocation.h"
-#include "clang/Basic/TypeTraits.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..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/TypeTraits.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..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/TypeTraits.h"
 #include "llvm/ADT/ArrayRef.h"
 #include "llvm/ADT/STLExtras.h"
 #include "llvm/ADT/StringRef.h"
diff --git a/clang/lib/Basic/TypeTraits.cpp b/clang/lib/Basic/BuiltinTraits.cpp
similarity index 80%
rename from clang/lib/Basic/TypeTraits.cpp
rename to clang/lib/Basic/BuiltinTraits.cpp
index 8307cf9e5afbd..7bc88b2aef3e9 100644
--- a/clang/lib/Basic/TypeTraits.cpp
+++ b/clang/lib/Basic/BuiltinTraits.cpp
@@ -1,4 +1,4 @@
-//===--- TypeTraits.cpp - Type 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.
@@ -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/BuiltinTraits.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/Basic/CMakeLists.txt b/clang/lib/Basic/CMakeLists.txt
index 21851e79b9d15..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
@@ -67,7 +68,6 @@ add_clang_library(clangBasic
   Diagnostic.cpp
   DiagnosticIDs.cpp
   DiagnosticOptions.cpp
-  ExpressionTraits.cpp
   FileEntry.cpp
   FileManager.cpp
   IdentifierTable.cpp
@@ -123,7 +123,6 @@ add_clang_library(clangBasic
   Targets/XCore.cpp
   Targets/Xtensa.cpp
   TokenKinds.cpp
-  TypeTraits.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/Sema/SemaChecking.cpp b/clang/lib/Sema/SemaChecking.cpp
index ef07e8c6133ed..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/TypeTraits.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..28835dc07daa4 100644
--- a/clang/lib/Sema/SemaExpr.cpp
+++ b/clang/lib/Sema/SemaExpr.cpp
@@ -33,13 +33,13 @@
 #include "clang/AST/StmtVisitor.h"
 #include "clang/AST/Type.h"
 #include "clang/AST/TypeLoc.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"
 #include "clang/Basic/Specifiers.h"
 #include "clang/Basic/TargetInfo.h"
-#include "clang/Basic/TypeTraits.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..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/TypeTraits.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..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/TypeTraits.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..97f1857e200ca 100644
--- a/clang/lib/Serialization/ASTReaderStmt.cpp
+++ b/clang/lib/Serialization/ASTReaderStmt.cpp
@@ -38,14 +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/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/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..bfd90beb82cde 100644
--- a/clang/lib/StaticAnalyzer/Checkers/CStringSyntaxChecker.cpp
+++ b/clang/lib/StaticAnalyzer/Checkers/CStringSyntaxChecker.cpp
@@ -16,8 +16,8 @@
 #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/TypeTraits.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..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",
@@ -89,7 +90,6 @@ static_library("Basic") {
     "Diagnostic.cpp",
     "DiagnosticIDs.cpp",
     "DiagnosticOptions.cpp",
-    "ExpressionTraits.cpp",
     "FileEntry.cpp",
     "FileManager.cpp",
     "IdentifierTable.cpp",
@@ -145,7 +145,6 @@ static_library("Basic") {
     "Targets/XCore.cpp",
     "Targets/Xtensa.cpp",
     "TokenKinds.cpp",
-    "TypeTraits.cpp",
     "Version.cpp",
     "Warnings.cpp",
     "XRayInstr.cpp",

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

Reply via email to