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

Reply via email to