Refactor _LIBCPP_<LITTLE|BIG>_ENDIAN

Previously this macro used 0/1 to indicate if it was set.
This is unlike all other libc++ configuration macros which
use ifdef/ifndef.

This patch makes this macro consistent with everything else.

llvm-svn: 315995
This commit is contained in:
Eric Fiselier 2017-10-17 13:16:01 +00:00
parent 1c0cedccb6
commit da0183947f
2 changed files with 22 additions and 35 deletions

View File

@ -184,36 +184,30 @@
#ifdef __LITTLE_ENDIAN__ #ifdef __LITTLE_ENDIAN__
#if __LITTLE_ENDIAN__ #if __LITTLE_ENDIAN__
#define _LIBCPP_LITTLE_ENDIAN 1 #define _LIBCPP_LITTLE_ENDIAN
#define _LIBCPP_BIG_ENDIAN 0
#endif // __LITTLE_ENDIAN__ #endif // __LITTLE_ENDIAN__
#endif // __LITTLE_ENDIAN__ #endif // __LITTLE_ENDIAN__
#ifdef __BIG_ENDIAN__ #ifdef __BIG_ENDIAN__
#if __BIG_ENDIAN__ #if __BIG_ENDIAN__
#define _LIBCPP_LITTLE_ENDIAN 0 #define _LIBCPP_BIG_ENDIAN
#define _LIBCPP_BIG_ENDIAN 1
#endif // __BIG_ENDIAN__ #endif // __BIG_ENDIAN__
#endif // __BIG_ENDIAN__ #endif // __BIG_ENDIAN__
#ifdef __BYTE_ORDER__ #ifdef __BYTE_ORDER__
#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
#define _LIBCPP_LITTLE_ENDIAN 1 #define _LIBCPP_LITTLE_ENDIAN
#define _LIBCPP_BIG_ENDIAN 0
#elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ #elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
#define _LIBCPP_LITTLE_ENDIAN 0 #define _LIBCPP_BIG_ENDIAN
#define _LIBCPP_BIG_ENDIAN 1
#endif // __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ #endif // __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
#endif // __BYTE_ORDER__ #endif // __BYTE_ORDER__
#ifdef __FreeBSD__ #ifdef __FreeBSD__
# include <sys/endian.h> # include <sys/endian.h>
# if _BYTE_ORDER == _LITTLE_ENDIAN # if _BYTE_ORDER == _LITTLE_ENDIAN
# define _LIBCPP_LITTLE_ENDIAN 1 # define _LIBCPP_LITTLE_ENDIAN
# define _LIBCPP_BIG_ENDIAN 0
# else // _BYTE_ORDER == _LITTLE_ENDIAN # else // _BYTE_ORDER == _LITTLE_ENDIAN
# define _LIBCPP_LITTLE_ENDIAN 0 # define _LIBCPP_BIG_ENDIAN
# define _LIBCPP_BIG_ENDIAN 1
# endif // _BYTE_ORDER == _LITTLE_ENDIAN # endif // _BYTE_ORDER == _LITTLE_ENDIAN
# ifndef __LONG_LONG_SUPPORTED # ifndef __LONG_LONG_SUPPORTED
# define _LIBCPP_HAS_NO_LONG_LONG # define _LIBCPP_HAS_NO_LONG_LONG
@ -223,19 +217,16 @@
#ifdef __NetBSD__ #ifdef __NetBSD__
# include <sys/endian.h> # include <sys/endian.h>
# if _BYTE_ORDER == _LITTLE_ENDIAN # if _BYTE_ORDER == _LITTLE_ENDIAN
# define _LIBCPP_LITTLE_ENDIAN 1 # define _LIBCPP_LITTLE_ENDIAN
# define _LIBCPP_BIG_ENDIAN 0
# else // _BYTE_ORDER == _LITTLE_ENDIAN # else // _BYTE_ORDER == _LITTLE_ENDIAN
# define _LIBCPP_LITTLE_ENDIAN 0 # define _LIBCPP_BIG_ENDIAN
# define _LIBCPP_BIG_ENDIAN 1
# endif // _BYTE_ORDER == _LITTLE_ENDIAN # endif // _BYTE_ORDER == _LITTLE_ENDIAN
# define _LIBCPP_HAS_QUICK_EXIT # define _LIBCPP_HAS_QUICK_EXIT
#endif // __NetBSD__ #endif // __NetBSD__
#if defined(_WIN32) #if defined(_WIN32)
# define _LIBCPP_WIN32API # define _LIBCPP_WIN32API
# define _LIBCPP_LITTLE_ENDIAN 1 # define _LIBCPP_LITTLE_ENDIAN
# define _LIBCPP_BIG_ENDIAN 0
# define _LIBCPP_SHORT_WCHAR 1 # define _LIBCPP_SHORT_WCHAR 1
// Both MinGW and native MSVC provide a "MSVC"-like enviroment // Both MinGW and native MSVC provide a "MSVC"-like enviroment
# define _LIBCPP_MSVCRT_LIKE # define _LIBCPP_MSVCRT_LIKE
@ -265,11 +256,9 @@
#ifdef __sun__ #ifdef __sun__
# include <sys/isa_defs.h> # include <sys/isa_defs.h>
# ifdef _LITTLE_ENDIAN # ifdef _LITTLE_ENDIAN
# define _LIBCPP_LITTLE_ENDIAN 1 # define _LIBCPP_LITTLE_ENDIAN
# define _LIBCPP_BIG_ENDIAN 0
# else # else
# define _LIBCPP_LITTLE_ENDIAN 0 # define _LIBCPP_BIG_ENDIAN
# define _LIBCPP_BIG_ENDIAN 1
# endif # endif
#endif // __sun__ #endif // __sun__
@ -290,18 +279,16 @@
# define _LIBCPP_USING_DEV_RANDOM # define _LIBCPP_USING_DEV_RANDOM
#endif #endif
#if !defined(_LIBCPP_LITTLE_ENDIAN) || !defined(_LIBCPP_BIG_ENDIAN) #if !defined(_LIBCPP_LITTLE_ENDIAN) && !defined(_LIBCPP_BIG_ENDIAN)
# include <endian.h> # include <endian.h>
# if __BYTE_ORDER == __LITTLE_ENDIAN # if __BYTE_ORDER == __LITTLE_ENDIAN
# define _LIBCPP_LITTLE_ENDIAN 1 # define _LIBCPP_LITTLE_ENDIAN
# define _LIBCPP_BIG_ENDIAN 0
# elif __BYTE_ORDER == __BIG_ENDIAN # elif __BYTE_ORDER == __BIG_ENDIAN
# define _LIBCPP_LITTLE_ENDIAN 0 # define _LIBCPP_BIG_ENDIAN
# define _LIBCPP_BIG_ENDIAN 1
# else // __BYTE_ORDER == __BIG_ENDIAN # else // __BYTE_ORDER == __BIG_ENDIAN
# error unable to determine endian # error unable to determine endian
# endif # endif
#endif // !defined(_LIBCPP_LITTLE_ENDIAN) || !defined(_LIBCPP_BIG_ENDIAN) #endif // !defined(_LIBCPP_LITTLE_ENDIAN) && !defined(_LIBCPP_BIG_ENDIAN)
#if __has_attribute(__no_sanitize__) && !defined(_LIBCPP_COMPILER_GCC) #if __has_attribute(__no_sanitize__) && !defined(_LIBCPP_COMPILER_GCC)
#define _LIBCPP_NO_CFI __attribute__((__no_sanitize__("cfi"))) #define _LIBCPP_NO_CFI __attribute__((__no_sanitize__("cfi")))

View File

@ -670,7 +670,7 @@ private:
size_type __cap_; size_type __cap_;
}; };
#if _LIBCPP_BIG_ENDIAN #ifdef _LIBCPP_BIG_ENDIAN
static const size_type __short_mask = 0x01; static const size_type __short_mask = 0x01;
static const size_type __long_mask = 0x1ul; static const size_type __long_mask = 0x1ul;
#else // _LIBCPP_BIG_ENDIAN #else // _LIBCPP_BIG_ENDIAN
@ -700,7 +700,7 @@ private:
pointer __data_; pointer __data_;
}; };
#if _LIBCPP_BIG_ENDIAN #ifdef _LIBCPP_BIG_ENDIAN
static const size_type __short_mask = 0x80; static const size_type __short_mask = 0x80;
static const size_type __long_mask = ~(size_type(~0) >> 1); static const size_type __long_mask = ~(size_type(~0) >> 1);
#else // _LIBCPP_BIG_ENDIAN #else // _LIBCPP_BIG_ENDIAN
@ -1241,7 +1241,7 @@ private:
_LIBCPP_INLINE_VISIBILITY _LIBCPP_INLINE_VISIBILITY
void __set_short_size(size_type __s) _NOEXCEPT void __set_short_size(size_type __s) _NOEXCEPT
# if _LIBCPP_BIG_ENDIAN # ifdef _LIBCPP_BIG_ENDIAN
{__r_.first().__s.__size_ = (unsigned char)(__s << 1);} {__r_.first().__s.__size_ = (unsigned char)(__s << 1);}
# else # else
{__r_.first().__s.__size_ = (unsigned char)(__s);} {__r_.first().__s.__size_ = (unsigned char)(__s);}
@ -1249,7 +1249,7 @@ private:
_LIBCPP_INLINE_VISIBILITY _LIBCPP_INLINE_VISIBILITY
size_type __get_short_size() const _NOEXCEPT size_type __get_short_size() const _NOEXCEPT
# if _LIBCPP_BIG_ENDIAN # ifdef _LIBCPP_BIG_ENDIAN
{return __r_.first().__s.__size_ >> 1;} {return __r_.first().__s.__size_ >> 1;}
# else # else
{return __r_.first().__s.__size_;} {return __r_.first().__s.__size_;}
@ -1259,7 +1259,7 @@ private:
_LIBCPP_INLINE_VISIBILITY _LIBCPP_INLINE_VISIBILITY
void __set_short_size(size_type __s) _NOEXCEPT void __set_short_size(size_type __s) _NOEXCEPT
# if _LIBCPP_BIG_ENDIAN # ifdef _LIBCPP_BIG_ENDIAN
{__r_.first().__s.__size_ = (unsigned char)(__s);} {__r_.first().__s.__size_ = (unsigned char)(__s);}
# else # else
{__r_.first().__s.__size_ = (unsigned char)(__s << 1);} {__r_.first().__s.__size_ = (unsigned char)(__s << 1);}
@ -1267,7 +1267,7 @@ private:
_LIBCPP_INLINE_VISIBILITY _LIBCPP_INLINE_VISIBILITY
size_type __get_short_size() const _NOEXCEPT size_type __get_short_size() const _NOEXCEPT
# if _LIBCPP_BIG_ENDIAN # ifdef _LIBCPP_BIG_ENDIAN
{return __r_.first().__s.__size_;} {return __r_.first().__s.__size_;}
# else # else
{return __r_.first().__s.__size_ >> 1;} {return __r_.first().__s.__size_ >> 1;}
@ -2870,7 +2870,7 @@ typename basic_string<_CharT, _Traits, _Allocator>::size_type
basic_string<_CharT, _Traits, _Allocator>::max_size() const _NOEXCEPT basic_string<_CharT, _Traits, _Allocator>::max_size() const _NOEXCEPT
{ {
size_type __m = __alloc_traits::max_size(__alloc()); size_type __m = __alloc_traits::max_size(__alloc());
#if _LIBCPP_BIG_ENDIAN #ifdef _LIBCPP_BIG_ENDIAN
return (__m <= ~__long_mask ? __m : __m/2) - __alignment; return (__m <= ~__long_mask ? __m : __m/2) - __alignment;
#else #else
return __m - __alignment; return __m - __alignment;