[PATCH] D92361: [trivial-abi] Support types without a copy or move constructor.

John McCall via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri Dec 4 12:03:11 PST 2020


rjmccall added a comment.

In D92361#2434376 <https://reviews.llvm.org/D92361#2434376>, @zoecarver wrote:

>> I think perhaps we are talking past each other and have reached the limits of what this sub-thread can hope to achieve.
>
> I agree. I am sure that we (or at least you two) could talk about the semantics of "teleportation" and "destructively moving" objects for many many hours. But I'm not sure it would be productive to do so (at least in this review thread). So, Arthur, why don't you open a mailing list thread to continue discussing if you'd like.
>
> And we can all agree, no matter what we decide to call it, that in the following snippet, `S0` //and// `S1` will be passed directly:
>
>   struct __attribute__((trivial_abi)) S0 {
>     S0();
>     S0(const S0 &) = delete;
>     S0(S0 &&) = delete;
>     int a;
>   };
>   
>   struct S1 {
>     S0 s0;
>   };
>
> (Which lines up with how this currently works if instead of being deleted, the copy/move constructors of `S0` were simply user-provided.)

Yes, I agree that these should be passed directly.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D92361/new/

https://reviews.llvm.org/D92361



More information about the cfe-commits mailing list