[libcxx-commits] [PATCH] D82490: [libcxx] Put clang::trivial_abi on std::unique_ptr

Vy Nguyen via Phabricator via libcxx-commits libcxx-commits at lists.llvm.org
Thu Jun 25 14:11:57 PDT 2020

oontvoo added inline comments.

Comment at: libcxx/docs/DesignDocs/UniquePtrTrivialAbi.rst:132
+ - Lifetime of local `returned` ``std::unique_ptr<>`` ends earlier.
ldionne wrote:
> Are you missing backticks around `returned`?
 wrong quotes. (meant to be emphasis, not code)

Comment at: libcxx/include/__config:109
+// Enable clang::trivial_abi on std::unique_ptr.
+#    define _LIBCPP_ABI_UNIQUE_PTR_TRIVIAL __attribute__((trivial_abi))
ldionne wrote:
> I would prefer if that `#define` was just a straight macro definition without any expansion. That would be more consistent with how we deal with other ABI macros.
> What you could then do is say in `unique_ptr`:
> ```
> template <class _Tp, class _Dp = default_delete<_Tp> >
> class 
>     __attribute__((trivial_abi))
> #endif
> _LIBCPP_TEMPLATE_VIS unique_ptr {
> ...
> ```
> Or something equivalent. But ideally, the knob for turning on that optimization should just be to `#define` a macro to nothing.
I'd put this here because I thought we might need to add a check for availability of the attribute. probably easier to read than repeating the same logic in a few places

Re : knob on this, we can still just undef the `*ENABLE*` flag, yes? (Or re-write it to be bool)

But having no familiarity with how these macros are handled, I've no preference. 
Happy to change it, unless someone wants to chime in

  rG LLVM Github Monorepo



More information about the libcxx-commits mailing list