@@ -1257,7 +1257,9 @@ static void predefined_macros(void)
predefined_sizeof("INT128", "", 128);
predefined_ctype("SIZE", size_t_ctype, PTYPE_ALL|PTYPE_T|PTYPE_TYPE);
- predefined_ctype("PTRDIFF", &ptr_ctype, PTYPE_ALL|PTYPE_T);
+ predefined_ctype("UINTPTR", size_t_ctype, PTYPE_TYPE|PTYPE_MAX);
+ predefined_ctype("INTPTR", ssize_t_ctype, PTYPE_TYPE|PTYPE_MAX|PTYPE_WIDTH);
+ predefined_ctype("PTRDIFF", ssize_t_ctype, PTYPE_ALL|PTYPE_T);
predefined_sizeof("POINTER", "", bits_in_pointer);
predefined_sizeof("FLOAT", "", bits_in_float);
@@ -13,6 +13,10 @@ int test(void)
TEST_MAX(INT, int);
TEST_MAX(LONG, long);
TEST_MAX(LONG_LONG, long long);
+ TEST_MAX(SIZE, __SIZE_TYPE__);
+ TEST_MAX(PTRDIFF, __PTRDIFF_TYPE__);
+ TEST_MAX(INTPTR, __INTPTR_TYPE__);
+ TEST_MAX(UINTPTR, __UINTPTR_TYPE__);
#define TEST_SIZEOF(X, T) if (__SIZEOF_ ## X ## __ != sizeof(T)) return 1
TEST_SIZEOF(SHORT, short);
@@ -21,6 +25,7 @@ int test(void)
TEST_SIZEOF(LONG_LONG, long long);
TEST_SIZEOF(INT128, __int128);
TEST_SIZEOF(SIZE_T, __SIZE_TYPE__);
+ TEST_SIZEOF(PTRDIFF_T, __PTRDIFF_TYPE__);
TEST_SIZEOF(POINTER, void*);
TEST_SIZEOF(FLOAT, float);
TEST_SIZEOF(DOUBLE, double);