[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