]> granicus.if.org Git - clang/commitdiff
Headers: Add support for ISO9899:2011 rsize_t.
authorDaniel Dunbar <daniel@zuster.org>
Fri, 12 Apr 2013 23:24:56 +0000 (23:24 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Fri, 12 Apr 2013 23:24:56 +0000 (23:24 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179427 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Headers/stddef.h
lib/Headers/stdint.h
test/Headers/c11.c

index 52962248f67f5810f5ae49fd007a8e1bd53e0332..c4861551dac215ff62feb2c13f9c2b238568ae9f 100644 (file)
@@ -42,6 +42,17 @@ typedef __PTRDIFF_TYPE__ ptrdiff_t;
 typedef __SIZE_TYPE__ size_t;
 #endif
 
+/* ISO9899:2011 7.20 (C11 Annex K): Define risze_t if __STDC_WANT_LIB_EXT1__ is
+ * enabled. */
+#if (defined(__STDC_WANT_LIB_EXT1__) && __STDC_WANT_LIB_EXT1__ >= 1 && \
+     !defined(_RSIZE_T)) || __has_feature(modules)
+/* Always define rsize_t when modules are available. */
+#if !__has_feature(modules)
+#define _RSIZE_T
+#endif
+typedef __SIZE_TYPE__ rsize_t;
+#endif
+
 #ifndef __cplusplus
 /* Always define wchar_t when modules are available. */
 #if !defined(_WCHAR_T) || __has_feature(modules)
index 051047f7d20c9a424b792f3ddc224b91f70a78ca..11529c0c674b39307f3526e97519c30ad832d4f4 100644 (file)
@@ -667,6 +667,12 @@ typedef __UINTMAX_TYPE__ uintmax_t;
 #define PTRDIFF_MAX  __INTN_MAX(__PTRDIFF_WIDTH__)
 #define    SIZE_MAX __UINTN_MAX(__SIZE_WIDTH__)
 
+/* ISO9899:2011 7.20 (C11 Annex K): Define RSIZE_MAX if __STDC_WANT_LIB_EXT1__
+ * is enabled. */
+#if defined(__STDC_WANT_LIB_EXT1__) && __STDC_WANT_LIB_EXT1__ >= 1
+#define   RSIZE_MAX            (SIZE_MAX >> 1)
+#endif
+
 /* C99 7.18.2.5 Limits of greatest-width integer types. */
 #define INTMAX_MIN   __INTN_MIN(__INTMAX_WIDTH__)
 #define INTMAX_MAX   __INTN_MAX(__INTMAX_WIDTH__)
index f65164d15c22c689e08032b116e9559856b81b13..7d859fc5f0c70cd3320c29a110efe518f9d2f29c 100644 (file)
@@ -17,3 +17,8 @@ _Static_assert(__alignas_is_defined, "");
 _Static_assert(__alignof_is_defined, "");
 alignas(alignof(int)) char c[4];
 _Static_assert(__alignof(c) == 4, "");
+
+#define __STDC_WANT_LIB_EXT1__ 1
+#include <stddef.h>
+#include <stdint.h>
+rsize_t x = RSIZE_MAX;