Index: clang/lib/Headers/stdint.h =================================================================== --- clang/lib/Headers/stdint.h +++ clang/lib/Headers/stdint.h @@ -664,7 +664,7 @@ #define UINTPTR_MAX __UINTN_MAX(__INTPTR_WIDTH__) #define PTRDIFF_MIN __INTN_MIN(__PTRDIFF_WIDTH__) #define PTRDIFF_MAX __INTN_MAX(__PTRDIFF_WIDTH__) -#define SIZE_MAX __UINTN_MAX(__SIZE_WIDTH__) +#define SIZE_MAX ((__SIZE_TYPE__)__UINTN_MAX(__SIZE_WIDTH__)) /* ISO9899:2011 7.20 (C11 Annex K): Define RSIZE_MAX if __STDC_WANT_LIB_EXT1__ * is enabled. */ Index: clang/test/Headers/stdint-type-of-SIZE_MAX.cpp =================================================================== --- /dev/null +++ clang/test/Headers/stdint-type-of-SIZE_MAX.cpp @@ -0,0 +1,6 @@ +// RUN: %clang_cc1 -std=c++11 -fsyntax-only %s +#include +#include + +static_assert(__is_same(__typeof__(SIZE_MAX), size_t), + "SIZE_MAX should be size_t"); Index: clang/test/Preprocessor/stdint.c =================================================================== --- clang/test/Preprocessor/stdint.c +++ clang/test/Preprocessor/stdint.c @@ -79,7 +79,7 @@ // ARM:UINTPTR_MAX_ 4294967295U // ARM:PTRDIFF_MIN_ (-2147483647 -1) // ARM:PTRDIFF_MAX_ 2147483647 -// ARM:SIZE_MAX_ 4294967295U +// ARM:SIZE_MAX_ ((unsigned int)4294967295U) // // ARM:INTMAX_MIN_ (-9223372036854775807LL -1) // ARM:INTMAX_MAX_ 9223372036854775807LL @@ -187,7 +187,7 @@ // I386:UINTPTR_MAX_ 4294967295U // I386:PTRDIFF_MIN_ (-2147483647 -1) // I386:PTRDIFF_MAX_ 2147483647 -// I386:SIZE_MAX_ 4294967295U +// I386:SIZE_MAX_ ((unsigned int)4294967295U) // // I386:INTMAX_MIN_ (-9223372036854775807LL -1) // I386:INTMAX_MAX_ 9223372036854775807LL @@ -294,7 +294,7 @@ // MIPS:UINTPTR_MAX_ 4294967295U // MIPS:PTRDIFF_MIN_ (-2147483647 -1) // MIPS:PTRDIFF_MAX_ 2147483647 -// MIPS:SIZE_MAX_ 4294967295U +// MIPS:SIZE_MAX_ ((unsigned int)4294967295U) // // MIPS:INTMAX_MIN_ (-9223372036854775807LL -1) // MIPS:INTMAX_MAX_ 9223372036854775807LL @@ -401,7 +401,7 @@ // MIPS64:UINTPTR_MAX_ 18446744073709551615UL // MIPS64:PTRDIFF_MIN_ (-9223372036854775807L -1) // MIPS64:PTRDIFF_MAX_ 9223372036854775807L -// MIPS64:SIZE_MAX_ 18446744073709551615UL +// MIPS64:SIZE_MAX_ ((long unsigned int)18446744073709551615UL) // // MIPS64:INTMAX_MIN_ (-9223372036854775807L -1) // MIPS64:INTMAX_MAX_ 9223372036854775807L @@ -501,7 +501,7 @@ // MSP430:UINTPTR_MAX_ 65535 // MSP430:PTRDIFF_MIN_ (-32767 -1) // MSP430:PTRDIFF_MAX_ 32767 -// MSP430:SIZE_MAX_ 65535 +// MSP430:SIZE_MAX_ ((unsigned int)65535U) // // MSP430:INTMAX_MIN_ (-9223372036854775807LL -1) // MSP430:INTMAX_MAX_ 9223372036854775807LL @@ -608,7 +608,7 @@ // PPC64:UINTPTR_MAX_ 18446744073709551615UL // PPC64:PTRDIFF_MIN_ (-9223372036854775807L -1) // PPC64:PTRDIFF_MAX_ 9223372036854775807L -// PPC64:SIZE_MAX_ 18446744073709551615UL +// PPC64:SIZE_MAX_ ((long unsigned int)18446744073709551615UL) // // PPC64:INTMAX_MIN_ (-9223372036854775807L -1) // PPC64:INTMAX_MAX_ 9223372036854775807L @@ -715,7 +715,7 @@ // PPC64-NETBSD:UINTPTR_MAX_ 18446744073709551615ULL // PPC64-NETBSD:PTRDIFF_MIN_ (-9223372036854775807LL -1) // PPC64-NETBSD:PTRDIFF_MAX_ 9223372036854775807LL -// PPC64-NETBSD:SIZE_MAX_ 18446744073709551615ULL +// PPC64-NETBSD:SIZE_MAX_ ((long unsigned int)18446744073709551615ULL) // // PPC64-NETBSD:INTMAX_MIN_ (-9223372036854775807LL -1) // PPC64-NETBSD:INTMAX_MAX_ 9223372036854775807LL @@ -823,7 +823,7 @@ // PPC:UINTPTR_MAX_ 4294967295U // PPC:PTRDIFF_MIN_ (-2147483647 -1) // PPC:PTRDIFF_MAX_ 2147483647 -// PPC:SIZE_MAX_ 4294967295U +// PPC:SIZE_MAX_ ((long unsigned int)4294967295U) // // PPC:INTMAX_MIN_ (-9223372036854775807LL -1) // PPC:INTMAX_MAX_ 9223372036854775807LL @@ -930,7 +930,7 @@ // S390X:UINTPTR_MAX_ 18446744073709551615UL // S390X:PTRDIFF_MIN_ (-9223372036854775807L -1) // S390X:PTRDIFF_MAX_ 9223372036854775807L -// S390X:SIZE_MAX_ 18446744073709551615UL +// S390X:SIZE_MAX_ ((long unsigned int)18446744073709551615UL) // // S390X:INTMAX_MIN_ (-9223372036854775807L -1) // S390X:INTMAX_MAX_ 9223372036854775807L @@ -1037,7 +1037,7 @@ // SPARC:UINTPTR_MAX_ 4294967295U // SPARC:PTRDIFF_MIN_ (-2147483647 -1) // SPARC:PTRDIFF_MAX_ 2147483647 -// SPARC:SIZE_MAX_ 4294967295U +// SPARC:SIZE_MAX_ ((unsigned int)4294967295U) // // SPARC:INTMAX_MIN_ (-9223372036854775807LL -1) // SPARC:INTMAX_MAX_ 9223372036854775807LL @@ -1137,7 +1137,7 @@ // TCE:UINTPTR_MAX_ 4294967295U // TCE:PTRDIFF_MIN_ (-2147483647 -1) // TCE:PTRDIFF_MAX_ 2147483647 -// TCE:SIZE_MAX_ 4294967295U +// TCE:SIZE_MAX_ ((unsigned int)4294967295U) // // TCE:INTMAX_MIN_ (-2147483647 -1) // TCE:INTMAX_MAX_ 2147483647 @@ -1245,7 +1245,7 @@ // X86_64:UINTPTR_MAX_ 18446744073709551615UL // X86_64:PTRDIFF_MIN_ (-9223372036854775807L -1) // X86_64:PTRDIFF_MAX_ 9223372036854775807L -// X86_64:SIZE_MAX_ 18446744073709551615UL +// X86_64:SIZE_MAX_ ((long unsigned int)18446744073709551615UL) // // X86_64:INTMAX_MIN_ (-9223372036854775807L -1) // X86_64:INTMAX_MAX_ 9223372036854775807L @@ -1365,7 +1365,7 @@ // XCORE:UINTPTR_MAX_ 4294967295U // XCORE:PTRDIFF_MIN_ (-2147483647 -1) // XCORE:PTRDIFF_MAX_ 2147483647 -// XCORE:SIZE_MAX_ 4294967295U +// XCORE:SIZE_MAX_ ((unsigned int)4294967295U) // // XCORE:INTMAX_MIN_ (-9223372036854775807LL -1) // XCORE:INTMAX_MAX_ 9223372036854775807LL @@ -1408,7 +1408,7 @@ // JOIN:UINTPTR_MAX_ 4294967295U // JOIN:PTRDIFF_MIN_ (-2147483647 -1) // JOIN:PTRDIFF_MAX_ 2147483647 -// JOIN:SIZE_MAX_ 4294967295U +// JOIN:SIZE_MAX_ ((unsigned a)4294967295U) // JOIN:INTMAX_MIN_ (-9223372036854775807LL -1) // JOIN:INTMAX_MAX_ 9223372036854775807LL // JOIN:UINTMAX_MAX_ 18446744073709551615ULL