Summary: Libcxx will define its own max_align_t when it is not available. However, the availability checks today only check for Clang's definition and GCC's definition. In particular, it does not check for musl's definition, which is the same as GCC's but guarded with a different macro. Reviewers: mclow.lists, EricWF Reviewed By: EricWF Subscribers: chandlerc, cfe-commits Differential Revision: https://reviews.llvm.org/D28478 git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@294683 91177308-0d34-0410-b5e6-96231b3b80d8
62 lines
1.2 KiB
C++
62 lines
1.2 KiB
C++
// -*- C++ -*-
|
|
//===--------------------------- cstddef ----------------------------------===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is dual licensed under the MIT and the University of Illinois Open
|
|
// Source Licenses. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef _LIBCPP_CSTDDEF
|
|
#define _LIBCPP_CSTDDEF
|
|
|
|
/*
|
|
cstddef synopsis
|
|
|
|
Macros:
|
|
|
|
offsetof(type,member-designator)
|
|
NULL
|
|
|
|
namespace std
|
|
{
|
|
|
|
Types:
|
|
|
|
ptrdiff_t
|
|
size_t
|
|
max_align_t
|
|
nullptr_t
|
|
|
|
} // std
|
|
|
|
*/
|
|
|
|
#include <__config>
|
|
|
|
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
|
|
#pragma GCC system_header
|
|
#endif
|
|
|
|
// Don't include our own <stddef.h>; we don't want to declare ::nullptr_t.
|
|
#include_next <stddef.h>
|
|
#include <__nullptr>
|
|
|
|
_LIBCPP_BEGIN_NAMESPACE_STD
|
|
|
|
using ::ptrdiff_t;
|
|
using ::size_t;
|
|
|
|
#if defined(__CLANG_MAX_ALIGN_T_DEFINED) || defined(_GCC_MAX_ALIGN_T) || \
|
|
defined(__DEFINED_max_align_t)
|
|
// Re-use the compiler's <stddef.h> max_align_t where possible.
|
|
using ::max_align_t;
|
|
#else
|
|
typedef long double max_align_t;
|
|
#endif
|
|
|
|
_LIBCPP_END_NAMESPACE_STD
|
|
|
|
#endif // _LIBCPP_CSTDDEF
|