[PATCH] D33021: [libcxx] [test] libc++ test changes for CWG 2094
This revision was automatically updated to reflect the committed changes. Closed by commit rL302710: Update is_trivially_copyable tests with CWG 2094 (authored by bion). Changed prior to commit: https://reviews.llvm.org/D33021?vs=98506&id=98508#toc Repository: rL LLVM https://reviews.llvm.org/D33021 Files: libcxx/trunk/test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copyable.pass.cpp Index: libcxx/trunk/test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copyable.pass.cpp === --- libcxx/trunk/test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copyable.pass.cpp +++ libcxx/trunk/test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copyable.pass.cpp @@ -22,13 +22,13 @@ { static_assert( std::is_trivially_copyable::value, ""); static_assert( std::is_trivially_copyable::value, ""); -static_assert(!std::is_trivially_copyable::value, ""); -static_assert(!std::is_trivially_copyable::value, ""); +static_assert( std::is_trivially_copyable::value, ""); +static_assert( std::is_trivially_copyable::value, ""); #if TEST_STD_VER > 14 static_assert( std::is_trivially_copyable_v, ""); static_assert( std::is_trivially_copyable_v, ""); -static_assert(!std::is_trivially_copyable_v, ""); -static_assert(!std::is_trivially_copyable_v, ""); +static_assert( std::is_trivially_copyable_v, ""); +static_assert( std::is_trivially_copyable_v, ""); #endif } Index: libcxx/trunk/test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copyable.pass.cpp === --- libcxx/trunk/test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copyable.pass.cpp +++ libcxx/trunk/test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copyable.pass.cpp @@ -22,13 +22,13 @@ { static_assert( std::is_trivially_copyable::value, ""); static_assert( std::is_trivially_copyable::value, ""); -static_assert(!std::is_trivially_copyable::value, ""); -static_assert(!std::is_trivially_copyable::value, ""); +static_assert( std::is_trivially_copyable::value, ""); +static_assert( std::is_trivially_copyable::value, ""); #if TEST_STD_VER > 14 static_assert( std::is_trivially_copyable_v, ""); static_assert( std::is_trivially_copyable_v, ""); -static_assert(!std::is_trivially_copyable_v, ""); -static_assert(!std::is_trivially_copyable_v, ""); +static_assert( std::is_trivially_copyable_v, ""); +static_assert( std::is_trivially_copyable_v, ""); #endif } ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D33021: [libcxx] [test] libc++ test changes for CWG 2094
BillyONeal updated this revision to Diff 98506. BillyONeal added a comment. Added spaces requested by Marshal. https://reviews.llvm.org/D33021 Files: test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copyable.pass.cpp Index: test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copyable.pass.cpp === --- test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copyable.pass.cpp +++ test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copyable.pass.cpp @@ -22,13 +22,13 @@ { static_assert( std::is_trivially_copyable::value, ""); static_assert( std::is_trivially_copyable::value, ""); -static_assert(!std::is_trivially_copyable::value, ""); -static_assert(!std::is_trivially_copyable::value, ""); +static_assert( std::is_trivially_copyable::value, ""); +static_assert( std::is_trivially_copyable::value, ""); #if TEST_STD_VER > 14 static_assert( std::is_trivially_copyable_v, ""); static_assert( std::is_trivially_copyable_v, ""); -static_assert(!std::is_trivially_copyable_v, ""); -static_assert(!std::is_trivially_copyable_v, ""); +static_assert( std::is_trivially_copyable_v, ""); +static_assert( std::is_trivially_copyable_v, ""); #endif } Index: test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copyable.pass.cpp === --- test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copyable.pass.cpp +++ test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copyable.pass.cpp @@ -22,13 +22,13 @@ { static_assert( std::is_trivially_copyable::value, ""); static_assert( std::is_trivially_copyable::value, ""); -static_assert(!std::is_trivially_copyable::value, ""); -static_assert(!std::is_trivially_copyable::value, ""); +static_assert( std::is_trivially_copyable::value, ""); +static_assert( std::is_trivially_copyable::value, ""); #if TEST_STD_VER > 14 static_assert( std::is_trivially_copyable_v, ""); static_assert( std::is_trivially_copyable_v, ""); -static_assert(!std::is_trivially_copyable_v, ""); -static_assert(!std::is_trivially_copyable_v, ""); +static_assert( std::is_trivially_copyable_v, ""); +static_assert( std::is_trivially_copyable_v, ""); #endif } ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D33021: [libcxx] [test] libc++ test changes for CWG 2094
EricWF accepted this revision. EricWF added a comment. This revision is now accepted and ready to land. LGTM. The bots are already failing because I upgraded their compilers. @BillyONeal Can you commit this soon so I can clean up any fallout? https://reviews.llvm.org/D33021 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D33021: [libcxx] [test] libc++ test changes for CWG 2094
BillyONeal added a comment. In https://reviews.llvm.org/D33021#751145, @BillyONeal wrote: > Hmm we actually took steps to do the opposite in std::copy -- to use > memcpy even in the presence of volatile -- as a result of this change. ;) http://imgur.com/a/PMKPS https://reviews.llvm.org/D33021 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D33021: [libcxx] [test] libc++ test changes for CWG 2094
BillyONeal added a comment. In https://reviews.llvm.org/D33021#750831, @mclow.lists wrote: > FWIW, I think this is a language change that core got wrong, and it has > already come back to bite us. (https://bugs.llvm.org/show_bug.cgi?id=28527) Hmm we actually took steps to do the opposite in std::copy -- to use memcpy even in the presence of volatile -- as a result of this change. It looks like Core wasn't a fan of doing this either, but that the Itanium ABI forced their hand. https://reviews.llvm.org/D33021 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D33021: [libcxx] [test] libc++ test changes for CWG 2094
mclow.lists added a comment. In general, I prefer having the space between `static_assert(` and the condition. That makes it easy (at least for me) to see if there's a `!` there or not. Other than that, this LGTM. FWIW, I think this is a language change that core got wrong, and it has already come back to bite us. (https://bugs.llvm.org/show_bug.cgi?id=28527) https://reviews.llvm.org/D33021 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D33021: [libcxx] [test] libc++ test changes for CWG 2094
BillyONeal updated this revision to Diff 98376. BillyONeal added a comment. Bill got confused. https://reviews.llvm.org/D33021 Files: test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copyable.pass.cpp Index: test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copyable.pass.cpp === --- test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copyable.pass.cpp +++ test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copyable.pass.cpp @@ -20,15 +20,15 @@ template void test_is_trivially_copyable() { -static_assert( std::is_trivially_copyable::value, ""); -static_assert( std::is_trivially_copyable::value, ""); -static_assert(!std::is_trivially_copyable::value, ""); -static_assert(!std::is_trivially_copyable::value, ""); +static_assert(std::is_trivially_copyable::value, ""); +static_assert(std::is_trivially_copyable::value, ""); +static_assert(std::is_trivially_copyable::value, ""); +static_assert(std::is_trivially_copyable::value, ""); #if TEST_STD_VER > 14 -static_assert( std::is_trivially_copyable_v, ""); -static_assert( std::is_trivially_copyable_v, ""); -static_assert(!std::is_trivially_copyable_v, ""); -static_assert(!std::is_trivially_copyable_v, ""); +static_assert(std::is_trivially_copyable_v, ""); +static_assert(std::is_trivially_copyable_v, ""); +static_assert(std::is_trivially_copyable_v, ""); +static_assert(std::is_trivially_copyable_v, ""); #endif } Index: test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copyable.pass.cpp === --- test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copyable.pass.cpp +++ test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copyable.pass.cpp @@ -20,15 +20,15 @@ template void test_is_trivially_copyable() { -static_assert( std::is_trivially_copyable::value, ""); -static_assert( std::is_trivially_copyable::value, ""); -static_assert(!std::is_trivially_copyable::value, ""); -static_assert(!std::is_trivially_copyable::value, ""); +static_assert(std::is_trivially_copyable::value, ""); +static_assert(std::is_trivially_copyable::value, ""); +static_assert(std::is_trivially_copyable::value, ""); +static_assert(std::is_trivially_copyable::value, ""); #if TEST_STD_VER > 14 -static_assert( std::is_trivially_copyable_v, ""); -static_assert( std::is_trivially_copyable_v, ""); -static_assert(!std::is_trivially_copyable_v, ""); -static_assert(!std::is_trivially_copyable_v, ""); +static_assert(std::is_trivially_copyable_v, ""); +static_assert(std::is_trivially_copyable_v, ""); +static_assert(std::is_trivially_copyable_v, ""); +static_assert(std::is_trivially_copyable_v, ""); #endif } ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D33021: [libcxx] [test] libc++ test changes for CWG 2094
BillyONeal updated this revision to Diff 98370. BillyONeal edited the summary of this revision. BillyONeal added a comment. Eric asked to just nuke the offending lines. https://reviews.llvm.org/D33021 Files: test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copyable.pass.cpp Index: test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copyable.pass.cpp === --- test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copyable.pass.cpp +++ test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copyable.pass.cpp @@ -20,15 +20,11 @@ template void test_is_trivially_copyable() { -static_assert( std::is_trivially_copyable::value, ""); -static_assert( std::is_trivially_copyable::value, ""); -static_assert(!std::is_trivially_copyable::value, ""); -static_assert(!std::is_trivially_copyable::value, ""); +static_assert(std::is_trivially_copyable::value, ""); +static_assert(std::is_trivially_copyable::value, ""); #if TEST_STD_VER > 14 -static_assert( std::is_trivially_copyable_v, ""); -static_assert( std::is_trivially_copyable_v, ""); -static_assert(!std::is_trivially_copyable_v, ""); -static_assert(!std::is_trivially_copyable_v, ""); +static_assert(std::is_trivially_copyable_v, ""); +static_assert(std::is_trivially_copyable_v, ""); #endif } Index: test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copyable.pass.cpp === --- test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copyable.pass.cpp +++ test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copyable.pass.cpp @@ -20,15 +20,11 @@ template void test_is_trivially_copyable() { -static_assert( std::is_trivially_copyable::value, ""); -static_assert( std::is_trivially_copyable::value, ""); -static_assert(!std::is_trivially_copyable::value, ""); -static_assert(!std::is_trivially_copyable::value, ""); +static_assert(std::is_trivially_copyable::value, ""); +static_assert(std::is_trivially_copyable::value, ""); #if TEST_STD_VER > 14 -static_assert( std::is_trivially_copyable_v, ""); -static_assert( std::is_trivially_copyable_v, ""); -static_assert(!std::is_trivially_copyable_v, ""); -static_assert(!std::is_trivially_copyable_v, ""); +static_assert(std::is_trivially_copyable_v, ""); +static_assert(std::is_trivially_copyable_v, ""); #endif } ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D33021: [libcxx] [test] libc++ test changes for CWG 2094
BillyONeal added inline comments. Comment at: test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copyable.pass.cpp:25 + #define IMPLEMENTS_CWG_2094 false + #endif /* defined(_MSC_VER) && _MSC_VER >= 1911 */ +#endif Whoops, I fat fingered the closing comment. Will change this to just say "compiler version" https://reviews.llvm.org/D33021 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D33021: [libcxx] [test] libc++ test changes for CWG 2094
BillyONeal created this revision. Update is_trivially_copyable tests with CWG 2094 Clang 5.0 implements this here: https://github.com/llvm-mirror/clang/commit/87cd035326a39523eeb1b295ad36cff337141ef9 MSVC++ will implement it in the first toolset update for VS 2017. https://reviews.llvm.org/D33021 Files: test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copyable.pass.cpp Index: test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copyable.pass.cpp === --- test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copyable.pass.cpp +++ test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copyable.pass.cpp @@ -17,18 +17,26 @@ #include #include "test_macros.h" +#ifndef IMPLEMENTS_CWG_2094 + #if (defined(__clang_major__) && __clang_major__ >= 5) || (defined(_MSC_VER) && _MSC_VER >= 1911) + #define IMPLEMENTS_CWG_2094 true + #else /* ^^^ Clang 5.0 or later, MSVC++ 19.11 or later ^^^ // vvv Others vvv */ + #define IMPLEMENTS_CWG_2094 false + #endif /* defined(_MSC_VER) && _MSC_VER >= 1911 */ +#endif + template void test_is_trivially_copyable() { -static_assert( std::is_trivially_copyable::value, ""); -static_assert( std::is_trivially_copyable::value, ""); -static_assert(!std::is_trivially_copyable::value, ""); -static_assert(!std::is_trivially_copyable::value, ""); +static_assert(std::is_trivially_copyable::value, ""); +static_assert(std::is_trivially_copyable::value, ""); +static_assert(std::is_trivially_copyable::value == IMPLEMENTS_CWG_2094, ""); +static_assert(std::is_trivially_copyable::value == IMPLEMENTS_CWG_2094, ""); #if TEST_STD_VER > 14 -static_assert( std::is_trivially_copyable_v, ""); -static_assert( std::is_trivially_copyable_v, ""); -static_assert(!std::is_trivially_copyable_v, ""); -static_assert(!std::is_trivially_copyable_v, ""); +static_assert(std::is_trivially_copyable_v, ""); +static_assert(std::is_trivially_copyable_v, ""); +static_assert(std::is_trivially_copyable_v == IMPLEMENTS_CWG_2094, ""); +static_assert(std::is_trivially_copyable_v == IMPLEMENTS_CWG_2094, ""); #endif } Index: test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copyable.pass.cpp === --- test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copyable.pass.cpp +++ test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copyable.pass.cpp @@ -17,18 +17,26 @@ #include #include "test_macros.h" +#ifndef IMPLEMENTS_CWG_2094 + #if (defined(__clang_major__) && __clang_major__ >= 5) || (defined(_MSC_VER) && _MSC_VER >= 1911) + #define IMPLEMENTS_CWG_2094 true + #else /* ^^^ Clang 5.0 or later, MSVC++ 19.11 or later ^^^ // vvv Others vvv */ + #define IMPLEMENTS_CWG_2094 false + #endif /* defined(_MSC_VER) && _MSC_VER >= 1911 */ +#endif + template void test_is_trivially_copyable() { -static_assert( std::is_trivially_copyable::value, ""); -static_assert( std::is_trivially_copyable::value, ""); -static_assert(!std::is_trivially_copyable::value, ""); -static_assert(!std::is_trivially_copyable::value, ""); +static_assert(std::is_trivially_copyable::value, ""); +static_assert(std::is_trivially_copyable::value, ""); +static_assert(std::is_trivially_copyable::value == IMPLEMENTS_CWG_2094, ""); +static_assert(std::is_trivially_copyable::value == IMPLEMENTS_CWG_2094, ""); #if TEST_STD_VER > 14 -static_assert( std::is_trivially_copyable_v, ""); -static_assert( std::is_trivially_copyable_v, ""); -static_assert(!std::is_trivially_copyable_v, ""); -static_assert(!std::is_trivially_copyable_v, ""); +static_assert(std::is_trivially_copyable_v, ""); +static_assert(std::is_trivially_copyable_v, ""); +static_assert(std::is_trivially_copyable_v == IMPLEMENTS_CWG_2094, ""); +static_assert(std::is_trivially_copyable_v == IMPLEMENTS_CWG_2094, ""); #endif } ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits