]> granicus.if.org Git - clang/commitdiff
Avoid unwanted expansion in macros that paste together INT<n>_MIN, INT<n>_MAX,
authorKen Dyck <ken.dyck@onsemi.com>
Fri, 20 Nov 2009 16:44:38 +0000 (16:44 +0000)
committerKen Dyck <ken.dyck@onsemi.com>
Fri, 20 Nov 2009 16:44:38 +0000 (16:44 +0000)
and UINT<n>_MAX defintions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89460 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Headers/stdint.h
test/Preprocessor/stdint.c

index 61afe0d45d9f0f4d037a9f8650964cc52f2c30e2..fee7d3c1b822d1ea9fe5e558744c78bc61256f06 100644 (file)
@@ -605,33 +605,36 @@ typedef __uintn_t(__INTMAX_WIDTH__) uintmax_t;
 
 /* C99 7.18.2.4 Limits of integer types capable of holding object pointers. */
 /* C99 7.18.3 Limits of other integer types. */
+#define  __INTN_MIN(n) __stdint_join3( INT, n, _MIN)
+#define  __INTN_MAX(n) __stdint_join3( INT, n, _MAX)
+#define __UINTN_MAX(n) __stdint_join3(UINT, n, _MAX)
 
-#define  INTPTR_MIN __stdint_exjoin3( INT, __INTPTR_WIDTH__, _MIN)
-#define  INTPTR_MAX __stdint_exjoin3( INT, __INTPTR_WIDTH__, _MAX)
-#define UINTPTR_MAX __stdint_exjoin3(UINT, __INTPTR_WIDTH__, _MAX)
-#define PTRDIFF_MIN __stdint_exjoin3( INT, __PTRDIFF_WIDTH__, _MIN)
-#define PTRDIFF_MAX __stdint_exjoin3( INT, __PTRDIFF_WIDTH__, _MAX)
-#define    SIZE_MAX __stdint_exjoin3(UINT, __SIZE_WIDTH__, _MAX)
+#define  INTPTR_MIN  __INTN_MIN(__INTPTR_WIDTH__)
+#define  INTPTR_MAX  __INTN_MAX(__INTPTR_WIDTH__)
+#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__)
 
 /* C99 7.18.2.5 Limits of greatest-width integer types. */
-#define INTMAX_MIN  __stdint_exjoin3( INT, __INTMAX_WIDTH__, _MIN)
-#define INTMAX_MAX  __stdint_exjoin3( INT, __INTMAX_WIDTH__, _MAX)
-#define UINTMAX_MAX __stdint_exjoin3(UINT, __INTMAX_WIDTH__, _MAX)
+#define INTMAX_MIN   __INTN_MIN(__INTMAX_WIDTH__)
+#define INTMAX_MAX   __INTN_MAX(__INTMAX_WIDTH__)
+#define UINTMAX_MAX __UINTN_MAX(__INTMAX_WIDTH__)
 
 /* C99 7.18.3 Limits of other integer types. */
 #define SIG_ATOMIC_MIN INT32_MIN
 #define SIG_ATOMIC_MAX INT32_MAX
-#define WINT_MIN       __stdint_exjoin3(INT, __WINT_WIDTH__, _MIN)
-#define WINT_MAX       __stdint_exjoin3(INT, __WINT_WIDTH__, _MAX)
+#define WINT_MIN       __INTN_MIN(__WINT_WIDTH__)
+#define WINT_MAX       __INTN_MAX(__WINT_WIDTH__)
 
 /* FIXME: if we ever support a target with unsigned wchar_t, this should be
  * 0 .. Max.
  */
 #ifndef WCHAR_MAX
-#define WCHAR_MAX __stdint_exjoin3(INT, __WCHAR_WIDTH__, _MAX)
+#define WCHAR_MAX __INTN_MAX(__WCHAR_WIDTH__)
 #endif
 #ifndef WCHAR_MIN
-#define WCHAR_MIN __stdint_exjoin3(INT, __WCHAR_WIDTH__, _MIN)
+#define WCHAR_MIN __INTN_MIN(__WCHAR_WIDTH__)
 #endif
 
 /* 7.18.4.2 Macros for greatest-width integer constants. */
index 3c5fc76c208f52f3f26a64003904e8f6d4371bf0..05b3165d39b4793b72aaedc588a85adb209c8db5 100644 (file)
 // JOIN:typedef uint32_t uintptr_t;
 // JOIN:typedef int64_t intmax_t;
 // JOIN:typedef uint64_t uintmax_t;
-// TODO:INTPTR_MIN_ (-2147483647 -1)
-// TODO:INTPTR_MAX_ 2147483647
-// TODO:UINTPTR_MAX_ 4294967295U
-// TODO:PTRDIFF_MIN_ (-2147483647 -1)
-// TODO:PTRDIFF_MAX_ 2147483647
-// TODO:SIZE_MAX_ 4294967295U
-// TODO:INTMAX_MIN_ (-9223372036854775807LL -1)
-// TODO:INTMAX_MAX_ 9223372036854775807LL
-// TODO:UINTMAX_MAX_ 18446744073709551615ULL
-// TODO:SIG_ATOMIC_MIN_ (-2147483647 -1)
-// TODO:SIG_ATOMIC_MAX_ 2147483647
-// TODO:WINT_MIN_ (-2147483647 -1)
-// TODO:WINT_MAX_ 2147483647
-// TODO:WCHAR_MAX_ 2147483647
-// TODO:WCHAR_MIN_ (-2147483647 -1)
+// JOIN:INTPTR_MIN_ (-2147483647 -1)
+// JOIN:INTPTR_MAX_ 2147483647
+// JOIN:UINTPTR_MAX_ 4294967295U
+// JOIN:PTRDIFF_MIN_ (-2147483647 -1)
+// JOIN:PTRDIFF_MAX_ 2147483647
+// JOIN:SIZE_MAX_ 4294967295U
+// JOIN:INTMAX_MIN_ (-9223372036854775807LL -1)
+// JOIN:INTMAX_MAX_ 9223372036854775807LL
+// JOIN:UINTMAX_MAX_ 18446744073709551615ULL
+// JOIN:SIG_ATOMIC_MIN_ (-2147483647 -1)
+// JOIN:SIG_ATOMIC_MAX_ 2147483647
+// JOIN:WINT_MIN_ (-2147483647 -1)
+// JOIN:WINT_MAX_ 2147483647
+// JOIN:WCHAR_MAX_ 2147483647
+// JOIN:WCHAR_MIN_ (-2147483647 -1)
 // TODO:INTMAX_C_(0) 0LL
 // TODO:UINTMAX_C_(0) 0ULL