diff options
author | Stephan T. Lavavej <stl@nuwen.net> | 2024-03-09 02:31:58 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-09 02:31:58 -0800 |
commit | 1c7607e8ee6ec4ca3abce1561dd39a98d4efac96 (patch) | |
tree | 1333e6332b9056b129d2b234bea9ea1886847fe3 /libcxx | |
parent | 10aed27e9c8966cd11d98a61982b95607ab6e08c (diff) | |
download | llvm-1c7607e8ee6ec4ca3abce1561dd39a98d4efac96.zip llvm-1c7607e8ee6ec4ca3abce1561dd39a98d4efac96.tar.gz llvm-1c7607e8ee6ec4ca3abce1561dd39a98d4efac96.tar.bz2 |
[libc++][test] Fix MSVC warning C4127 in `array.cons/initialization.pass.cpp` (#79793)
This fixes MSVC warning C4127: conditional expression is constant.
Testing `TEST_STD_AT_LEAST_20_OR_RUNTIME_EVALUATED` by itself doesn't
emit this warning, but the condition here is more complicated. I'm
expanding the macro and mechanically simplifying the resulting code.
(Yeah, this warning is often annoying, and I introduced
`TEST_STD_AT_LEAST_20_OR_RUNTIME_EVALUATED` to avoid this warning
elsewhere, so it's disappointing that it doesn't make the compiler happy
here. If this change is undesirable, I can replace it with
`ADDITIONAL_COMPILE_FLAGS(cl-style-warnings)`, but ideally I'd like to
avoid having to suppress it.)
---------
Co-authored-by: Louis Dionne <ldionne.2@gmail.com>
Diffstat (limited to 'libcxx')
-rw-r--r-- | libcxx/test/std/containers/sequences/array/array.cons/initialization.pass.cpp | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/libcxx/test/std/containers/sequences/array/array.cons/initialization.pass.cpp b/libcxx/test/std/containers/sequences/array/array.cons/initialization.pass.cpp index 7991d47..a23211f 100644 --- a/libcxx/test/std/containers/sequences/array/array.cons/initialization.pass.cpp +++ b/libcxx/test/std/containers/sequences/array/array.cons/initialization.pass.cpp @@ -28,10 +28,16 @@ struct test_initialization { // Before C++20, default initialization doesn't work inside constexpr for // trivially default constructible types. This only apply to non-empty arrays, // since empty arrays don't hold an element of type T. - if (TEST_STD_AT_LEAST_20_OR_RUNTIME_EVALUATED || !std::is_trivially_default_constructible<T>::value) { - std::array<T, 1> a1; (void)a1; - std::array<T, 2> a2; (void)a2; - std::array<T, 3> a3; (void)a3; +#if TEST_STD_VER < 20 + if (!(TEST_IS_CONSTANT_EVALUATED && std::is_trivially_default_constructible<T>::value)) +#endif + { + std::array<T, 1> a1; + (void)a1; + std::array<T, 2> a2; + (void)a2; + std::array<T, 3> a3; + (void)a3; } std::array<NoDefault, 0> nodefault; (void)nodefault; |