ldionne added inline comments.
================ Comment at: libcxx/test/std/utilities/meta/meta.trans/meta.trans.other/aligned_storage.pass.cpp:275 +#if TEST_STD_VER >= 11 + const size_t alignment = TEST_ALIGNOF(std::max_align_t) > 16 ? + 16 : TEST_ALIGNOF(std::max_align_t); ---------------- joerg wrote: > ldionne wrote: > > Can you walk me through why the check for `> 16` is required? > If max_align_t is 256bit, we still only expect 128bit alignment (long > double). This test is still checking more than it should, e.g. in principle a > target could legitimately have no natural type larger than 64bit, but support > 256bit vector types and set max_align_t accordingly. The condition is here > because std::min in C++11 is not constexpr. Naively, I would have expected the test to be: ``` #if TEST_STD_VER >= 11 // we know max_align_t is provided static_assert(std::alignment_of<T1>::value == TEST_ALIGNOF(std::max_align_t), ""); #else static_assert(std::alignment_of<T1>::value >= TEST_ALIGNOF(natural_alignment), ""); #endif ``` To make sure I understand, you're saying we can't do that because the `std::alignment_of<T1>::value == TEST_ALIGNOF(std::max_align_t)` test would sometimes fail if `alignof(std::max_align_t)` is larger than the natural alignment used by `std::aligned_storage`. This also highlights that there's a change in the value of `alignof(std::max_align_t)` with this change. Is that correct? 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