[clang] [llvm] [clang][NFC] fold ExpressionTraits and TypeTraits helpers into BuiltinTraits.h (PR #210838)
Matthias Wippich via cfe-commits
cfe-commits at lists.llvm.org
Tue Jul 28 02:12:38 PDT 2026
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 <mfwippich at gmail.com>
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",
More information about the cfe-commits
mailing list