diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_internal_defs.h b/compiler-rt/lib/sanitizer_common/sanitizer_internal_defs.h index fefe28e811767..f8f03454ea169 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_internal_defs.h +++ b/compiler-rt/lib/sanitizer_common/sanitizer_internal_defs.h @@ -138,19 +138,19 @@ // in a portable way by the language itself. namespace __sanitizer { -#if defined(_WIN64) +#if defined(__UINTPTR_TYPE__) +typedef __UINTPTR_TYPE__ uptr; +typedef __INTPTR_TYPE__ sptr; +#elif defined(_WIN64) // 64-bit Windows uses LLP64 data model. typedef unsigned long long uptr; typedef signed long long sptr; -#else -# if (SANITIZER_WORDSIZE == 64) || SANITIZER_APPLE -typedef unsigned long uptr; -typedef signed long sptr; -# else +#elif defined(_WIN32) typedef unsigned int uptr; typedef signed int sptr; -# endif -#endif // defined(_WIN64) +#else +# error Unsupported compiler, missing __UINTPTR_TYPE__ +#endif // defined(__UINTPTR_TYPE__) #if defined(__x86_64__) // Since x32 uses ILP32 data model in 64-bit hardware mode, we must use // 64-bit pointer to unwind stack frame.