On 16 Jan 2019, at 9:13, Aaron Ballman wrote:
On Wed, Jan 16, 2019 at 1:57 AM Akira Hatanaka <ahatan...@apple.com>
wrote:
Yes, the behavior of the compiler doesn’t match what’s explained
in the documentation anymore.
Please take a look at the attached patch, which updates the
documentation.
Patch mostly LGTM, but I did have one wording suggestion.
diff --git a/include/clang/Basic/AttrDocs.td
b/include/clang/Basic/AttrDocs.td
index 5773a92c9c..ca3cfcf9b2 100644
--- a/include/clang/Basic/AttrDocs.td
+++ b/include/clang/Basic/AttrDocs.td
@@ -2478,15 +2478,20 @@ def TrivialABIDocs : Documentation {
let Category = DocCatVariable;
let Content = [{
The ``trivial_abi`` attribute can be applied to a C++ class, struct,
or union.
-It instructs the compiler to pass and return the type using the C
ABI for the
+``trivial_abi`` has the following effects:
+
+- It instructs the compiler to pass and return the type using the C
ABI for the
underlying type when the type would otherwise be considered
non-trivial for the
purpose of calls.
-A class annotated with `trivial_abi` can have non-trivial
destructors or copy/move constructors without automatically becoming
non-trivial for the purposes of calls. For example:
+- It makes the destructor and copy and move constructors of the
class trivial
+that would otherwise be considered non-trivial under the C++ ABI
rules.
How about: It makes the destructor, copy constructors, and move
constructors of the class trivial even if they would otherwise be
non-trivial under the C++ ABI rules.
Let's not say that it makes them trivial, because it doesn't. It causes
their immediate non-triviality to be ignored for the purposes of
deciding
whether the type can be passed in registers.
John.
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits