[PATCH] D33021: [libcxx] [test] libc++ test changes for CWG 2094

2017-05-10 Thread Phabricator via Phabricator via cfe-commits
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

2017-05-10 Thread Billy Robert O'Neal III via Phabricator via cfe-commits
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

2017-05-10 Thread Eric Fiselier via Phabricator via cfe-commits
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

2017-05-10 Thread Billy Robert O'Neal III via Phabricator via cfe-commits
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

2017-05-10 Thread Billy Robert O'Neal III via Phabricator via cfe-commits
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

2017-05-10 Thread Marshall Clow via Phabricator via cfe-commits
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

2017-05-09 Thread Billy Robert O'Neal III via Phabricator via cfe-commits
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

2017-05-09 Thread Billy Robert O'Neal III via Phabricator via cfe-commits
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

2017-05-09 Thread Billy Robert O'Neal III via Phabricator via cfe-commits
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

2017-05-09 Thread Billy Robert O'Neal III via Phabricator via cfe-commits
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