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

Reply via email to