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");