[all-commits] [llvm/llvm-project] e9ef45: [clang] adds unary type transformations as compile...

Christopher Di Bella via All-commits all-commits at lists.llvm.org
Sun Aug 21 20:04:10 PDT 2022


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: e9ef45635b77598fc9ce0cd38d7d3f8c9d88a49d
      https://github.com/llvm/llvm-project/commit/e9ef45635b77598fc9ce0cd38d7d3f8c9d88a49d
  Author: Christopher Di Bella <cjdb at google.com>
  Date:   2022-08-22 (Mon, 22 Aug 2022)

  Changed paths:
    M clang/include/clang/AST/Type.h
    M clang/include/clang/Basic/DiagnosticSemaKinds.td
    M clang/include/clang/Basic/Specifiers.h
    M clang/include/clang/Basic/TokenKinds.def
    A clang/include/clang/Basic/TransformTypeTraits.def
    M clang/include/clang/Parse/Parser.h
    M clang/include/clang/Sema/DeclSpec.h
    M clang/include/clang/Sema/Sema.h
    M clang/include/clang/module.modulemap
    M clang/lib/AST/ASTContext.cpp
    M clang/lib/AST/ItaniumMangle.cpp
    M clang/lib/AST/JSONNodeDumper.cpp
    M clang/lib/AST/TextNodeDumper.cpp
    M clang/lib/AST/TypePrinter.cpp
    M clang/lib/Format/FormatToken.cpp
    M clang/lib/Format/FormatToken.h
    M clang/lib/Format/TokenAnnotator.cpp
    M clang/lib/Lex/PPMacroExpansion.cpp
    M clang/lib/Parse/ParseDecl.cpp
    M clang/lib/Parse/ParseDeclCXX.cpp
    M clang/lib/Parse/ParseExpr.cpp
    M clang/lib/Parse/ParseExprCXX.cpp
    M clang/lib/Parse/ParseStmt.cpp
    M clang/lib/Parse/ParseTentative.cpp
    M clang/lib/Sema/DeclSpec.cpp
    M clang/lib/Sema/SemaDecl.cpp
    M clang/lib/Sema/SemaTemplateVariadic.cpp
    M clang/lib/Sema/SemaType.cpp
    M clang/test/CodeGenCXX/mangle.cpp
    A clang/test/SemaCXX/libstdcxx_transform_type_traits_hack.cpp
    A clang/test/SemaCXX/remove_pointer.mm
    M clang/test/SemaCXX/type-traits.cpp
    M clang/utils/ClangVisualizers/clang.natvis

  Log Message:
  -----------
  [clang] adds unary type transformations as compiler built-ins

Adds

* `__add_lvalue_reference`
* `__add_pointer`
* `__add_rvalue_reference`
* `__decay`
* `__make_signed`
* `__make_unsigned`
* `__remove_all_extents`
* `__remove_extent`
* `__remove_const`
* `__remove_volatile`
* `__remove_cv`
* `__remove_pointer`
* `__remove_reference`
* `__remove_cvref`

These are all compiler built-in equivalents of the unary type traits
found in [[meta.trans]][1]. The compiler already has all of the
information it needs to answer these transformations, so we can skip
needing to make partial specialisations in standard library
implementations (we already do this for a lot of the query traits). This
will hopefully improve compile times, as we won't need use as much
memory in such a base part of the standard library.

[1]: http://wg21.link/meta.trans

Co-authored-by: zoecarver

Reviewed By: aaron.ballman, rsmith

Differential Revision: https://reviews.llvm.org/D116203


  Commit: 0e7971154ecbd5f2403b0bce20fb1bcd3c275ea3
      https://github.com/llvm/llvm-project/commit/0e7971154ecbd5f2403b0bce20fb1bcd3c275ea3
  Author: Christopher Di Bella <cjdb at google.com>
  Date:   2022-08-22 (Mon, 22 Aug 2022)

  Changed paths:
    M libcxx/include/__type_traits/add_lvalue_reference.h
    M libcxx/include/__type_traits/add_pointer.h
    M libcxx/include/__type_traits/add_rvalue_reference.h
    M libcxx/include/__type_traits/decay.h
    M libcxx/include/__type_traits/is_referenceable.h
    M libcxx/include/__type_traits/is_swappable.h
    M libcxx/include/__type_traits/make_signed.h
    M libcxx/include/__type_traits/make_unsigned.h
    M libcxx/include/__type_traits/remove_all_extents.h
    M libcxx/include/__type_traits/remove_const.h
    M libcxx/include/__type_traits/remove_cv.h
    M libcxx/include/__type_traits/remove_cvref.h
    M libcxx/include/__type_traits/remove_extent.h
    M libcxx/include/__type_traits/remove_pointer.h
    M libcxx/include/__type_traits/remove_reference.h
    M libcxx/include/__type_traits/remove_volatile.h
    M libcxx/test/libcxx/utilities/meta/is_referenceable.pass.cpp

  Log Message:
  -----------
  [libcxx][NFC] utilises compiler builtins for unary transform type-traits

Depends on D116203

Reviewed By: #libc, philnik

Differential Revision: https://reviews.llvm.org/D131732


Compare: https://github.com/llvm/llvm-project/compare/d2d77e050b32...0e7971154ecb


More information about the All-commits mailing list