Give TargetInfo a new IntPtrType to hold the intptr_t type for
a target.
Make Preprocessor.cpp define a new __INTPTR_TYPE__ macro based on this.
On linux/32, set intptr_t to int, instead of long. This fixes PR3563.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64495 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Headers/stdint.h b/lib/Headers/stdint.h
index 3eb72bb..9e5bfd7 100644
--- a/lib/Headers/stdint.h
+++ b/lib/Headers/stdint.h
@@ -70,25 +70,8 @@
/* C99 7.18.1.4 Integer types capable of holding object pointers.
*/
-#if (1LL << (__POINTER_WIDTH__-1))-1 == __LONG_MAX__
-/* If the pointer size is equal to long, use long. This is for compatibility
- * with many systems which just use long and expect it to work in 32-bit and
- * 64-bit mode. If long is not suitable, we use a fixed size type below.
- */
-typedef long intptr_t;
-typedef unsigned long uintptr_t;
-#elif __POINTER_WIDTH__ == 64
-typedef int64_t intptr_t;
-typedef uint64_t uintptr_t;
-#elif __POINTER_WIDTH__ == 32
-typedef int32_t intptr_t;
-typedef uint32_t uintptr_t;
-#elif __POINTER_WIDTH__ == 16
-typedef int16_t intptr_t;
-typedef uint16_t uintptr_t;
-#else
-#error "unknown or unset pointer width!"
-#endif
+typedef __INTPTR_TYPE__ intptr_t;
+typedef unsigned __INTPTR_TYPE__ uintptr_t;
/* C99 7.18.1.5 Greatest-width integer types.
*/