AAPCS compliance - 32-bit wchar_t should be unsigned for both aapcs and aapcs-linux.
Original behaviour of defining wchar_t as signed int has been kept for apcs-gnu as I don't have any spec for this to validate against. llvm-svn: 145102
This commit is contained in:
parent
0b3e996485
commit
c445be4b4b
|
@ -2404,6 +2404,8 @@ public:
|
|||
{
|
||||
SizeType = UnsignedInt;
|
||||
PtrDiffType = SignedInt;
|
||||
// AAPCS 7.1.1, ARM-Linux ABI 2.4: type of wchar_t is unsigned int.
|
||||
WCharType = UnsignedInt;
|
||||
|
||||
// {} in inline assembly are neon specifiers, not assembly variant
|
||||
// specifiers.
|
||||
|
@ -2442,6 +2444,9 @@ public:
|
|||
DoubleAlign = LongLongAlign = LongDoubleAlign = 32;
|
||||
SizeType = UnsignedLong;
|
||||
|
||||
// Revert to using SignedInt on apcs-gnu to comply with existing behaviour.
|
||||
WCharType = SignedInt;
|
||||
|
||||
// Do not respect the alignment of bit-field types when laying out
|
||||
// structures. This corresponds to PCC_BITFIELD_TYPE_MATTERS in gcc.
|
||||
UseBitFieldTypeAlignment = false;
|
||||
|
|
|
@ -212,8 +212,8 @@
|
|||
// ARM:#define __THUMB_INTERWORK__ 1
|
||||
// ARM:#define __UINTMAX_TYPE__ long long unsigned int
|
||||
// ARM:#define __USER_LABEL_PREFIX__ _
|
||||
// ARM:#define __WCHAR_MAX__ 2147483647
|
||||
// ARM:#define __WCHAR_TYPE__ int
|
||||
// ARM:#define __WCHAR_MAX__ 4294967295U
|
||||
// ARM:#define __WCHAR_TYPE__ unsigned int
|
||||
// ARM:#define __WCHAR_WIDTH__ 32
|
||||
// ARM:#define __WINT_TYPE__ int
|
||||
// ARM:#define __WINT_WIDTH__ 32
|
||||
|
|
|
@ -90,8 +90,8 @@
|
|||
// ARM:WINT_MIN_ (-2147483647 -1)
|
||||
// ARM:WINT_MAX_ 2147483647
|
||||
//
|
||||
// ARM:WCHAR_MAX_ 2147483647
|
||||
// ARM:WCHAR_MIN_ (-2147483647 -1)
|
||||
// ARM:WCHAR_MAX_ 4294967295U
|
||||
// ARM:WCHAR_MIN_ 0U
|
||||
//
|
||||
// ARM:INT8_C_(0) 0
|
||||
// ARM:UINT8_C_(0) 0U
|
||||
|
|
Loading…
Reference in New Issue