[libc++] Revert 03dd205c151 "Adjust max_align_t handling"
authorLouis Dionne <ldionne@apple.com>
Tue, 25 Feb 2020 16:42:08 +0000 (11:42 -0500)
committerLouis Dionne <ldionne@apple.com>
Tue, 25 Feb 2020 16:42:08 +0000 (11:42 -0500)
That commit was made without approval from a libc++ reviewer, and it
also broke the build in C++03 mode.

libcxx/include/cstddef
libcxx/include/new
libcxx/include/stddef.h

index 2a0bfeb..87eee4b 100644 (file)
@@ -25,7 +25,7 @@ Types:
 
     ptrdiff_t
     size_t
-    max_align_t // C++11
+    max_align_t
     nullptr_t
     byte // C++17
 
@@ -49,8 +49,12 @@ _LIBCPP_BEGIN_NAMESPACE_STD
 using ::ptrdiff_t;
 using ::size_t;
 
-#if !defined(_LIBCPP_CXX03_LANG)
+#if defined(__CLANG_MAX_ALIGN_T_DEFINED) || defined(_GCC_MAX_ALIGN_T) || \
+    defined(__DEFINED_max_align_t) || defined(__NetBSD__)
+// Re-use the compiler's <stddef.h> max_align_t where possible.
 using ::max_align_t;
+#else
+typedef long double max_align_t;
 #endif
 
 template <class _Tp> struct __libcpp_is_integral                     { enum { value = 0 }; };
index b64057a..40d351e 100644 (file)
@@ -226,19 +226,9 @@ inline _LIBCPP_INLINE_VISIBILITY void  operator delete[](void*, void*) _NOEXCEPT
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
-#if defined(_LIBCPP_CXX03_LANG)
-union __libcpp_max_align_t {
-  void * __f1;
-  long long int __f2;
-  long double __f3;
-};
-#endif
-
 _LIBCPP_CONSTEXPR inline _LIBCPP_INLINE_VISIBILITY bool __is_overaligned_for_new(size_t __align) _NOEXCEPT {
 #ifdef __STDCPP_DEFAULT_NEW_ALIGNMENT__
   return __align > __STDCPP_DEFAULT_NEW_ALIGNMENT__;
-#elif defined(_LIBCPP_CXX03_LANG)
-  return __align > alignment_of<__libcpp_max_align_t>::value;
 #else
   return __align > alignment_of<max_align_t>::value;
 #endif
index ba28b29..6497dcd 100644 (file)
@@ -51,6 +51,12 @@ extern "C++" {
 using std::nullptr_t;
 }
 
+// Re-use the compiler's <stddef.h> max_align_t where possible.
+#if !defined(__CLANG_MAX_ALIGN_T_DEFINED) && !defined(_GCC_MAX_ALIGN_T) && \
+    !defined(__DEFINED_max_align_t) && !defined(__NetBSD__)
+typedef long double max_align_t;
+#endif
+
 #endif
 
 #endif  // _LIBCPP_STDDEF_H