[clang] 9c52b3c - [Clang] Clarify the `[[trivial_abi]]` documentation. (#143243)
via cfe-commits
cfe-commits at lists.llvm.org
Mon Jun 9 08:32:51 PDT 2025
Author: Corentin Jabot
Date: 2025-06-09T17:32:48+02:00
New Revision: 9c52b3c52eb760a52826aad1368a4b0b46d924d3
URL: https://github.com/llvm/llvm-project/commit/9c52b3c52eb760a52826aad1368a4b0b46d924d3
DIFF: https://github.com/llvm/llvm-project/commit/9c52b3c52eb760a52826aad1368a4b0b46d924d3.diff
LOG: [Clang] Clarify the `[[trivial_abi]]` documentation. (#143243)
Fixes #36667
Added:
Modified:
clang/include/clang/Basic/AttrDocs.td
Removed:
################################################################################
diff --git a/clang/include/clang/Basic/AttrDocs.td b/clang/include/clang/Basic/AttrDocs.td
index 0a9919fca2520..ea3c43f38d9fe 100644
--- a/clang/include/clang/Basic/AttrDocs.td
+++ b/clang/include/clang/Basic/AttrDocs.td
@@ -4433,7 +4433,14 @@ destroy the object before returning. The lifetime of the copy of the parameter
in the caller ends without a destructor call when the call begins.
If a type is trivial for the purpose of calls, it is assumed to be trivially
-relocatable for the purpose of ``__is_trivially_relocatable``.
+relocatable for the purpose of ``__is_trivially_relocatable`` and
+``__builtin_is_cpp_trivially_relocatable``.
+When a type marked with ``[[trivial_abi]]`` is used as a function argument,
+the compiler may omit the call to the copy constructor.
+Thus, side effects of the copy constructor are potentially not performed.
+For example, objects that contain pointers to themselves or otherwise depend
+on their address (or the address or their subobjects) should not be declared
+``[[trivial_abi]]``.
Attribute ``trivial_abi`` has no effect in the following cases:
More information about the cfe-commits
mailing list