From 7babe4f074675a7ba21f1feb1cbfd41193948293 Mon Sep 17 00:00:00 2001 From: Nico Weber Date: Wed, 4 Jun 2014 16:25:58 +0000 Subject: [PATCH] Make meta.trans.other/aligned_storage.pass.cpp pass on arm. The maximum alignment on arm is 8, not 16 like on x86. Use alignof(max_align_t) to make the test work in both cases. llvm-svn: 210195 --- .../meta.trans/meta.trans.other/aligned_storage.pass.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/libcxx/test/utilities/meta/meta.trans/meta.trans.other/aligned_storage.pass.cpp b/libcxx/test/utilities/meta/meta.trans/meta.trans.other/aligned_storage.pass.cpp index d1b7700..c87e99c4 100644 --- a/libcxx/test/utilities/meta/meta.trans/meta.trans.other/aligned_storage.pass.cpp +++ b/libcxx/test/utilities/meta/meta.trans/meta.trans.other/aligned_storage.pass.cpp @@ -159,12 +159,19 @@ int main() static_assert(std::alignment_of::value == 8, ""); static_assert(sizeof(T1) == 16, ""); } + // Use alignof(std::max_align_t) below to find the max alignment instead of + // hardcoding it, because it's different on different platforms. + // (For example 8 on arm and 16 on x86.) +#if __cplusplus < 201103L +#define alignof __alignof__ +#endif { typedef std::aligned_storage<16>::type T1; #if _LIBCPP_STD_VER > 11 static_assert(std::is_same, T1>::value, "" ); #endif - static_assert(std::alignment_of::value == 16, ""); + static_assert(std::alignment_of::value == alignof(std::max_align_t), + ""); static_assert(sizeof(T1) == 16, ""); } { @@ -172,8 +179,9 @@ int main() #if _LIBCPP_STD_VER > 11 static_assert(std::is_same, T1>::value, "" ); #endif - static_assert(std::alignment_of::value == 16, ""); - static_assert(sizeof(T1) == 32, ""); + static_assert(std::alignment_of::value == alignof(std::max_align_t), + ""); + static_assert(sizeof(T1) == 16 + alignof(std::max_align_t), ""); } { typedef std::aligned_storage<10>::type T1; -- 2.7.4