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
