[clang] [Clang] Implement the core language parts of P2786 - Trivial relocation (PR #127636)
Nikolas Klauser via cfe-commits
cfe-commits at lists.llvm.org
Tue Feb 25 09:27:36 PST 2025
================
@@ -1826,6 +1827,12 @@ The following type trait primitives are supported by Clang. Those traits marked
functionally equivalent to copying the underlying bytes and then dropping the
source object on the floor. This is true of trivial types and types which
were made trivially relocatable via the ``clang::trivial_abi`` attribute.
+* ``__builtin_is_cpp_trivially_relocatable`` (C++): Returns true if an object
+ is trivially relocatable, as defined by the C++26 standard [meta.unary.prop].
+ Note that the caller code should ensure that if the object is polymorphic,
+ the dynamic type is of the most derived type.
----------------
philnik777 wrote:
> `std::is_trivially_relocatable` should _not_ return true for a type that is not relocatable per the standard.
Why? It's our extension to define. Am I missing something that makes annotating a type `[[clang::trivial_abi]]` instead of `trivially_relocatable_if_eligible [[clang::trivial_abi]]` significantly different? AFAIK having a type marked `[[clang::trivial_abi]]` requires it to be trivially relocatable.
https://github.com/llvm/llvm-project/pull/127636
More information about the cfe-commits
mailing list