[libcxx] [test] Fix the aligned storage test to work on Windows
authorMartin Storsjö <martin@martin.st>
Tue, 11 Jan 2022 09:31:14 +0000 (09:31 +0000)
committerMartin Storsjö <martin@martin.st>
Thu, 10 Feb 2022 08:59:52 +0000 (10:59 +0200)
Don't test alignment over 8 KB, which isn't supported on that
platform.

Differential Revision: https://reviews.llvm.org/D119348

libcxx/test/std/utilities/meta/meta.trans/meta.trans.other/aligned_storage.pass.cpp

index 592a34a..890d0d6 100644 (file)
@@ -6,8 +6,6 @@
 //
 //===----------------------------------------------------------------------===//
 
-// XFAIL: LIBCXX-WINDOWS-FIXME
-
 // type_traits
 
 // aligned_storage
@@ -314,6 +312,16 @@ int main(int, char**)
     static_assert(sizeof(T1) == 16, "");
     }
   {
+    const int Align = 8192;
+    typedef typename std::aligned_storage<1, Align>::type T1;
+    static_assert(std::is_trivial<T1>::value, "");
+    static_assert(std::is_standard_layout<T1>::value, "");
+    static_assert(std::alignment_of<T1>::value == Align, "");
+    static_assert(sizeof(T1) == Align, "");
+  }
+#ifndef _WIN32
+  // Windows only supports alignment up to 8192 bytes.
+  {
     const int Align = 65536;
     typedef typename std::aligned_storage<1, Align>::type T1;
     static_assert(std::is_trivial<T1>::value, "");
@@ -321,6 +329,7 @@ int main(int, char**)
     static_assert(std::alignment_of<T1>::value == Align, "");
     static_assert(sizeof(T1) == Align, "");
   }
+#endif
 
   return 0;
 }