krytarowski added inline comments.

================
Comment at: libcxx/include/new:240
   return __align > __STDCPP_DEFAULT_NEW_ALIGNMENT__;
+#elif defined(_LIBCPP_CXX03_LANG)
+  return __align > alignment_of<__libcpp_max_align_t>::value;
----------------
ldionne wrote:
> joerg wrote:
> > ldionne wrote:
> > > So, IIUC what you're saying, `__STDCPP_DEFAULT_NEW_ALIGNMENT__` is 
> > > provided by recent Clangs in C++03 mode? I tested it and it does seem to 
> > > be correct. (side note: I tend to think we should be more aggressive to 
> > > remove old compiler support, since most people don't upgrade their stdlib 
> > > without upgrading their compiler anyway).
> > > 
> > > So if we don't care about supporting old compilers that don't provide 
> > > that macro, we could just get rid of this `#elif`, and such compilers 
> > > would error out when trying to use `max_align_t` in the `#else` below. 
> > > That appears reasonable to me.
> > > 
> > > We'd still leave the `#if TEST_STD_VER >= 11` in the tests below, since 
> > > in C++03 we wouldn't provide `std::max_align_t`, however testing that we 
> > > use overaligned new in the same conditions in C++03 and C++11 becomes 
> > > trivial, because it's the same code path.
> > > 
> > > Did I get what you meant correctly? If so, that sounds like a viable path 
> > > forward to me, since we're simplifying the code. We're also improving on 
> > > our C++03 conformance, which isn't considered good but is certainly not 
> > > considered bad either.
> > Correct, it has been provided since clang 4.0 at least it seems. For 
> > testing, we have two cases, some that specifically check properties of 
> > max_align_t and those should be restricted to C++11 and newer. I think we 
> > should grow a new check that max_align_t <= 
> > __STDCPP_DEFAULT_NEW_ALIGNMENT__ as sanity check, but that's slightly OT. 
> > Most of the existing cases to check for overalignment already use 
> > __STDCPP_DEFAULT_NEW_ALIGNMENT__ anyway, so it would be a case-by-case 
> > check for those.
> I'm fine with that direction if you're willing to update the patch. I'll 
> review it.
Do I understand it correctly that instead of `__libcpp_max_align_t` (or 
(over)exposed `max_align_t`) we can rely entirely on 
`__STDCPP_DEFAULT_NEW_ALIGNMENT__`?


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

https://reviews.llvm.org/D73245



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to