[PATCH] D99834: Don't check that std::pair is trivially copyable on FreeBSD
Dimitry Andric via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Apr 6 12:28:01 PDT 2021
dim added inline comments.
================
Comment at: llvm/unittests/Support/TypeTraitsTest.cpp:113
TrivialityTester<std::function<int()>, false, false>();
+#if !defined(_LIBCPP_DEPRECATED_ABI_DISABLE_PAIR_TRIVIAL_COPY_CTOR)
TrivialityTester<std::pair<int, bool>, true, true>();
----------------
ldionne wrote:
> dim wrote:
> > ldionne wrote:
> > > I'm really not fond of using a libc++ internal macro here. I think we should instead detect that we're on FreeBSD.
> > At the moment in `__config` the part where this macro gets defined is indeed only when `__FreeBSD__` is defined:
> >
> > ```
> > // Feature macros for disabling pre ABI v1 features. All of these options
> > // are deprecated.
> > # if defined(__FreeBSD__)
> > # define _LIBCPP_DEPRECATED_ABI_DISABLE_PAIR_TRIVIAL_COPY_CTOR
> > # endif
> > #endif
> > ```
> >
> > So this could as well be `#if !defined(__FreeBSD__)`, yes. At some point though we'll have to migrate to libc++ ABI v2 (whenever that comes), so then this check would have to be adjusted too...
> >
> Then it can be adjusted if you want to move to a different ABI based on some other detection. I'm very very uncomfortable with letting people use implementation details of libc++, that is the source of huge headache for us.
Even though this is all within the llvm project, I get your point. It becomes hard to rename that macro once this gets duplicated somehow. So let's change this test to `#if !defined(__FreeBSD__)` for now.
(That said, it's still an annoying wart in FreeBSD that we have the sort-of-pre-v1 ABI that has the non-trivial pair constructor. However we'd have to keep a compat lib in place if we ever want to change the ABI, so I'd rather wait until the libc++ v2 ABI is mostly finalized. Users of the old ABI can then install a compat libc++.so.1 binary.)
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D99834/new/
https://reviews.llvm.org/D99834
More information about the llvm-commits
mailing list