[all-commits] [llvm/llvm-project] d5922c: [clang] Implement `__is_layout_compatible` (#81506)

Vlad Serebrennikov via All-commits all-commits at lists.llvm.org
Tue Feb 20 04:55:03 PST 2024


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: d5922cf72cc18a7ac9f7afd1941ee2f7773d8469
      https://github.com/llvm/llvm-project/commit/d5922cf72cc18a7ac9f7afd1941ee2f7773d8469
  Author: Vlad Serebrennikov <serebrennikov.vladislav at gmail.com>
  Date:   2024-02-20 (Tue, 20 Feb 2024)

  Changed paths:
    M clang/docs/LanguageExtensions.rst
    M clang/docs/ReleaseNotes.rst
    M clang/include/clang/Basic/TokenKinds.def
    M clang/include/clang/Sema/Sema.h
    M clang/lib/Parse/ParseExpr.cpp
    M clang/lib/Sema/SemaChecking.cpp
    M clang/lib/Sema/SemaExprCXX.cpp
    M clang/test/CXX/drs/dr13xx.cpp
    M clang/test/CXX/drs/dr17xx.cpp
    M clang/test/SemaCXX/type-traits.cpp

  Log Message:
  -----------
  [clang] Implement `__is_layout_compatible` (#81506)

This patch implements `__is_layout_compatible` intrinsic, which supports
`std::is_layout_compatible` type trait introduced in C++20
([P0466R5](https://wg21.link/p0466r5) "Layout-compatibility and
Pointer-interconvertibility Traits"). Name matches GCC and MSVC
intrinsic.

Basically, this patch exposes our existing machinery for checking for
layout compatibility and figuring out common initial sequences. Said
machinery is a bit outdated, as it doesn't implement
[CWG1719](https://cplusplus.github.io/CWG/issues/1719.html) "Layout
compatibility and cv-qualification revisited" and
[CWG2759](https://cplusplus.github.io/CWG/issues/2759.html)
"`[[no_unique_address]` and common initial sequence". Those defect
reports are considered out of scope of of this PR, but will be
implemented in subsequent PRs.

Partially addresses #48204



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list