diff --git a/clang/lib/Headers/float.h b/clang/lib/Headers/float.h --- a/clang/lib/Headers/float.h +++ b/clang/lib/Headers/float.h @@ -38,9 +38,10 @@ # undef FLT_MANT_DIG # undef DBL_MANT_DIG # undef LDBL_MANT_DIG -# if __STDC_VERSION__ >= 199901L || !defined(__STRICT_ANSI__) || \ - __cplusplus >= 201103L || \ - (__STDC_HOSTED__ && defined(_AIX) && defined(_ALL_SOURCE)) +#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || \ + !defined(__STRICT_ANSI__) || \ + (defined(__cplusplus) && __cplusplus >= 201103L) || \ + (__STDC_HOSTED__ && defined(_AIX) && defined(_ALL_SOURCE)) # undef DECIMAL_DIG # endif # undef FLT_DIG @@ -67,9 +68,10 @@ # undef FLT_MIN # undef DBL_MIN # undef LDBL_MIN -# if __STDC_VERSION__ >= 201112L || !defined(__STRICT_ANSI__) || \ - __cplusplus >= 201703L || \ - (__STDC_HOSTED__ && defined(_AIX) && defined(_ALL_SOURCE)) +#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) || \ + !defined(__STRICT_ANSI__) || \ + (defined(__cplusplus) && __cplusplus >= 201703L) || \ + (__STDC_HOSTED__ && defined(_AIX) && defined(_ALL_SOURCE)) # undef FLT_TRUE_MIN # undef DBL_TRUE_MIN # undef LDBL_TRUE_MIN @@ -92,8 +94,9 @@ #define DBL_MANT_DIG __DBL_MANT_DIG__ #define LDBL_MANT_DIG __LDBL_MANT_DIG__ -#if __STDC_VERSION__ >= 199901L || !defined(__STRICT_ANSI__) || \ - __cplusplus >= 201103L || \ +#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || \ + !defined(__STRICT_ANSI__) || \ + (defined(__cplusplus) && __cplusplus >= 201103L) || \ (__STDC_HOSTED__ && defined(_AIX) && defined(_ALL_SOURCE)) # define DECIMAL_DIG __DECIMAL_DIG__ #endif @@ -130,8 +133,9 @@ #define DBL_MIN __DBL_MIN__ #define LDBL_MIN __LDBL_MIN__ -#if __STDC_VERSION__ >= 201112L || !defined(__STRICT_ANSI__) || \ - __cplusplus >= 201703L || \ +#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) || \ + !defined(__STRICT_ANSI__) || \ + (defined(__cplusplus) && __cplusplus >= 201703L) || \ (__STDC_HOSTED__ && defined(_AIX) && defined(_ALL_SOURCE)) # define FLT_TRUE_MIN __FLT_DENORM_MIN__ # define DBL_TRUE_MIN __DBL_DENORM_MIN__ diff --git a/clang/lib/Headers/limits.h b/clang/lib/Headers/limits.h --- a/clang/lib/Headers/limits.h +++ b/clang/lib/Headers/limits.h @@ -65,7 +65,7 @@ /* C2x 5.2.4.2.1 */ /* FIXME: This is using the placeholder dates Clang produces for these macros in C2x mode; switch to the correct values once they've been published. */ -#if __STDC_VERSION__ >= 202000L +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202000L #define BOOL_WIDTH __BOOL_WIDTH__ #define CHAR_WIDTH CHAR_BIT #define SCHAR_WIDTH CHAR_BIT @@ -93,7 +93,8 @@ /* C99 5.2.4.2.1: Added long long. C++11 18.3.3.2: same contents as the Standard C Library header . */ -#if __STDC_VERSION__ >= 199901L || __cplusplus >= 201103L +#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || \ + (defined(__cplusplus) && __cplusplus >= 201103L) #undef LLONG_MIN #undef LLONG_MAX diff --git a/clang/lib/Headers/stdarg.h b/clang/lib/Headers/stdarg.h --- a/clang/lib/Headers/stdarg.h +++ b/clang/lib/Headers/stdarg.h @@ -23,7 +23,9 @@ */ #define __va_copy(d,s) __builtin_va_copy(d,s) -#if __STDC_VERSION__ >= 199901L || __cplusplus >= 201103L || !defined(__STRICT_ANSI__) +#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || \ + (defined(__cplusplus) && __cplusplus >= 201103L) || \ + !defined(__STRICT_ANSI__) #define va_copy(dest, src) __builtin_va_copy(dest, src) #endif diff --git a/clang/lib/Headers/stdatomic.h b/clang/lib/Headers/stdatomic.h --- a/clang/lib/Headers/stdatomic.h +++ b/clang/lib/Headers/stdatomic.h @@ -45,7 +45,8 @@ /* 7.17.2 Initialization */ #define ATOMIC_VAR_INIT(value) (value) -#if (__STDC_VERSION__ >= 201710L || __cplusplus >= 202002L) && \ +#if ((defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201710L) || \ + (defined(__cplusplus) && __cplusplus >= 202002L)) && \ !defined(_CLANG_DISABLE_CRT_DEPRECATION_WARNINGS) /* ATOMIC_VAR_INIT was deprecated in C17 and C++20. */ #pragma clang deprecated(ATOMIC_VAR_INIT) diff --git a/clang/lib/Headers/stdbool.h b/clang/lib/Headers/stdbool.h --- a/clang/lib/Headers/stdbool.h +++ b/clang/lib/Headers/stdbool.h @@ -12,7 +12,7 @@ #define __bool_true_false_are_defined 1 -#if __STDC_VERSION__ > 201710L +#if defined(__STDC_VERSION__) && __STDC_VERSION__ > 201710L /* FIXME: We should be issuing a deprecation warning here, but cannot yet due * to system headers which include this header file unconditionally. */ @@ -23,7 +23,7 @@ #elif defined(__GNUC__) && !defined(__STRICT_ANSI__) /* Define _Bool as a GNU extension. */ #define _Bool bool -#if __cplusplus < 201103L +#if defined(__cplusplus) && __cplusplus < 201103L /* For C++98, define bool, false, true as a GNU extension. */ #define bool bool #define false false diff --git a/clang/lib/Headers/stddef.h b/clang/lib/Headers/stddef.h --- a/clang/lib/Headers/stddef.h +++ b/clang/lib/Headers/stddef.h @@ -98,7 +98,8 @@ #endif /* defined(__need_NULL) */ #if defined(__need_STDDEF_H_misc) -#if __STDC_VERSION__ >= 201112L || __cplusplus >= 201103L +#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) || \ + (defined(__cplusplus) && __cplusplus >= 201103L) #include "__stddef_max_align_t.h" #endif #define offsetof(t, d) __builtin_offsetof(t, d) diff --git a/clang/lib/Headers/stdint.h b/clang/lib/Headers/stdint.h --- a/clang/lib/Headers/stdint.h +++ b/clang/lib/Headers/stdint.h @@ -96,13 +96,21 @@ typedef __INT64_TYPE__ int64_t; # endif /* __int8_t_defined */ typedef __UINT64_TYPE__ uint64_t; +# undef __int_least64_t # define __int_least64_t int64_t +# undef __uint_least64_t # define __uint_least64_t uint64_t +# undef __int_least32_t # define __int_least32_t int64_t +# undef __uint_least32_t # define __uint_least32_t uint64_t +# undef __int_least16_t # define __int_least16_t int64_t +# undef __uint_least16_t # define __uint_least16_t uint64_t +# undef __int_least8_t # define __int_least8_t int64_t +# undef __uint_least8_t # define __uint_least8_t uint64_t #endif /* __INT64_TYPE__ */ @@ -120,11 +128,17 @@ typedef uint56_t uint_least56_t; typedef int56_t int_fast56_t; typedef uint56_t uint_fast56_t; +# undef __int_least32_t # define __int_least32_t int56_t +# undef __uint_least32_t # define __uint_least32_t uint56_t +# undef __int_least16_t # define __int_least16_t int56_t +# undef __uint_least16_t # define __uint_least16_t uint56_t +# undef __int_least8_t # define __int_least8_t int56_t +# undef __uint_least8_t # define __uint_least8_t uint56_t #endif /* __INT56_TYPE__ */ @@ -136,11 +150,17 @@ typedef uint48_t uint_least48_t; typedef int48_t int_fast48_t; typedef uint48_t uint_fast48_t; +# undef __int_least32_t # define __int_least32_t int48_t +# undef __uint_least32_t # define __uint_least32_t uint48_t +# undef __int_least16_t # define __int_least16_t int48_t +# undef __uint_least16_t # define __uint_least16_t uint48_t +# undef __int_least8_t # define __int_least8_t int48_t +# undef __uint_least8_t # define __uint_least8_t uint48_t #endif /* __INT48_TYPE__ */ @@ -152,11 +172,17 @@ typedef uint40_t uint_least40_t; typedef int40_t int_fast40_t; typedef uint40_t uint_fast40_t; +# undef __int_least32_t # define __int_least32_t int40_t +# undef __uint_least32_t # define __uint_least32_t uint40_t +# undef __int_least16_t # define __int_least16_t int40_t +# undef __uint_least16_t # define __uint_least16_t uint40_t +# undef __int_least8_t # define __int_least8_t int40_t +# undef __uint_least8_t # define __uint_least8_t uint40_t #endif /* __INT40_TYPE__ */ @@ -172,11 +198,17 @@ typedef __UINT32_TYPE__ uint32_t; # endif /* __uint32_t_defined */ +# undef __int_least32_t # define __int_least32_t int32_t +# undef __uint_least32_t # define __uint_least32_t uint32_t +# undef __int_least16_t # define __int_least16_t int32_t +# undef __uint_least16_t # define __uint_least16_t uint32_t +# undef __int_least8_t # define __int_least8_t int32_t +# undef __uint_least8_t # define __uint_least8_t uint32_t #endif /* __INT32_TYPE__ */ @@ -194,9 +226,13 @@ typedef uint24_t uint_least24_t; typedef int24_t int_fast24_t; typedef uint24_t uint_fast24_t; +# undef __int_least16_t # define __int_least16_t int24_t +# undef __uint_least16_t # define __uint_least16_t uint24_t +# undef __int_least8_t # define __int_least8_t int24_t +# undef __uint_least8_t # define __uint_least8_t uint24_t #endif /* __INT24_TYPE__ */ @@ -205,9 +241,13 @@ typedef __INT16_TYPE__ int16_t; #endif /* __int8_t_defined */ typedef __UINT16_TYPE__ uint16_t; +# undef __int_least16_t # define __int_least16_t int16_t +# undef __uint_least16_t # define __uint_least16_t uint16_t +# undef __int_least8_t # define __int_least8_t int16_t +# undef __uint_least8_t # define __uint_least8_t uint16_t #endif /* __INT16_TYPE__ */ @@ -224,7 +264,9 @@ typedef __INT8_TYPE__ int8_t; #endif /* __int8_t_defined */ typedef __UINT8_TYPE__ uint8_t; +# undef __int_least8_t # define __int_least8_t int8_t +# undef __uint_least8_t # define __uint_least8_t uint8_t #endif /* __INT8_TYPE__ */ @@ -285,16 +327,15 @@ #ifdef __INT64_TYPE__ +# undef __int64_c_suffix +# undef __int32_c_suffix +# undef __int16_c_suffix +# undef __int8_c_suffix # ifdef __INT64_C_SUFFIX__ # define __int64_c_suffix __INT64_C_SUFFIX__ # define __int32_c_suffix __INT64_C_SUFFIX__ # define __int16_c_suffix __INT64_C_SUFFIX__ # define __int8_c_suffix __INT64_C_SUFFIX__ -# else -# undef __int64_c_suffix -# undef __int32_c_suffix -# undef __int16_c_suffix -# undef __int8_c_suffix # endif /* __INT64_C_SUFFIX__ */ #endif /* __INT64_TYPE__ */ @@ -310,6 +351,9 @@ #ifdef __INT56_TYPE__ +# undef __int32_c_suffix +# undef __int16_c_suffix +# undef __int8_c_suffix # ifdef __INT56_C_SUFFIX__ # define INT56_C(v) __int_c(v, __INT56_C_SUFFIX__) # define UINT56_C(v) __uint_c(v, __INT56_C_SUFFIX__) @@ -319,14 +363,14 @@ # else # define INT56_C(v) v # define UINT56_C(v) v ## U -# undef __int32_c_suffix -# undef __int16_c_suffix -# undef __int8_c_suffix # endif /* __INT56_C_SUFFIX__ */ #endif /* __INT56_TYPE__ */ #ifdef __INT48_TYPE__ +# undef __int32_c_suffix +# undef __int16_c_suffix +# undef __int8_c_suffix # ifdef __INT48_C_SUFFIX__ # define INT48_C(v) __int_c(v, __INT48_C_SUFFIX__) # define UINT48_C(v) __uint_c(v, __INT48_C_SUFFIX__) @@ -336,14 +380,14 @@ # else # define INT48_C(v) v # define UINT48_C(v) v ## U -# undef __int32_c_suffix -# undef __int16_c_suffix -# undef __int8_c_suffix # endif /* __INT48_C_SUFFIX__ */ #endif /* __INT48_TYPE__ */ #ifdef __INT40_TYPE__ +# undef __int32_c_suffix +# undef __int16_c_suffix +# undef __int8_c_suffix # ifdef __INT40_C_SUFFIX__ # define INT40_C(v) __int_c(v, __INT40_C_SUFFIX__) # define UINT40_C(v) __uint_c(v, __INT40_C_SUFFIX__) @@ -353,22 +397,18 @@ # else # define INT40_C(v) v # define UINT40_C(v) v ## U -# undef __int32_c_suffix -# undef __int16_c_suffix -# undef __int8_c_suffix # endif /* __INT40_C_SUFFIX__ */ #endif /* __INT40_TYPE__ */ #ifdef __INT32_TYPE__ +# undef __int32_c_suffix +# undef __int16_c_suffix +# undef __int8_c_suffix # ifdef __INT32_C_SUFFIX__ # define __int32_c_suffix __INT32_C_SUFFIX__ # define __int16_c_suffix __INT32_C_SUFFIX__ # define __int8_c_suffix __INT32_C_SUFFIX__ -#else -# undef __int32_c_suffix -# undef __int16_c_suffix -# undef __int8_c_suffix # endif /* __INT32_C_SUFFIX__ */ #endif /* __INT32_TYPE__ */ @@ -384,6 +424,8 @@ #ifdef __INT24_TYPE__ +# undef __int16_c_suffix +# undef __int8_c_suffix # ifdef __INT24_C_SUFFIX__ # define INT24_C(v) __int_c(v, __INT24_C_SUFFIX__) # define UINT24_C(v) __uint_c(v, __INT24_C_SUFFIX__) @@ -392,19 +434,16 @@ # else # define INT24_C(v) v # define UINT24_C(v) v ## U -# undef __int16_c_suffix -# undef __int8_c_suffix # endif /* __INT24_C_SUFFIX__ */ #endif /* __INT24_TYPE__ */ #ifdef __INT16_TYPE__ +# undef __int16_c_suffix +# undef __int8_c_suffix # ifdef __INT16_C_SUFFIX__ # define __int16_c_suffix __INT16_C_SUFFIX__ # define __int8_c_suffix __INT16_C_SUFFIX__ -#else -# undef __int16_c_suffix -# undef __int8_c_suffix # endif /* __INT16_C_SUFFIX__ */ #endif /* __INT16_TYPE__ */ @@ -463,27 +502,39 @@ # define UINT64_MAX UINT64_C(18446744073709551615) /* FIXME: This is using the placeholder dates Clang produces for these macros in C2x mode; switch to the correct values once they've been published. */ -#if __STDC_VERSION__ >= 202000L +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202000L # define UINT64_WIDTH 64 # define INT64_WIDTH UINT64_WIDTH # define __UINT_LEAST64_WIDTH UINT64_WIDTH +# undef __UINT_LEAST32_WIDTH # define __UINT_LEAST32_WIDTH UINT64_WIDTH +# undef __UINT_LEAST16_WIDTH # define __UINT_LEAST16_WIDTH UINT64_WIDTH +# undef __UINT_LEAST8_MAX # define __UINT_LEAST8_MAX UINT64_MAX #endif /* __STDC_VERSION__ */ # define __INT_LEAST64_MIN INT64_MIN # define __INT_LEAST64_MAX INT64_MAX # define __UINT_LEAST64_MAX UINT64_MAX +# undef __INT_LEAST32_MIN # define __INT_LEAST32_MIN INT64_MIN +# undef __INT_LEAST32_MAX # define __INT_LEAST32_MAX INT64_MAX +# undef __UINT_LEAST32_MAX # define __UINT_LEAST32_MAX UINT64_MAX +# undef __INT_LEAST16_MIN # define __INT_LEAST16_MIN INT64_MIN +# undef __INT_LEAST16_MAX # define __INT_LEAST16_MAX INT64_MAX +# undef __UINT_LEAST16_MAX # define __UINT_LEAST16_MAX UINT64_MAX +# undef __INT_LEAST8_MIN # define __INT_LEAST8_MIN INT64_MIN +# undef __INT_LEAST8_MAX # define __INT_LEAST8_MAX INT64_MAX +# undef __UINT_LEAST8_MAX # define __UINT_LEAST8_MAX UINT64_MAX #endif /* __INT64_TYPE__ */ @@ -497,7 +548,7 @@ /* FIXME: This is using the placeholder dates Clang produces for these macros in C2x mode; switch to the correct values once they've been published. */ -#if __STDC_VERSION__ >= 202000L +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202000L # define UINT_LEAST64_WIDTH __UINT_LEAST64_WIDTH # define INT_LEAST64_WIDTH UINT_LEAST64_WIDTH # define UINT_FAST64_WIDTH __UINT_LEAST64_WIDTH @@ -517,27 +568,39 @@ # define INT_FAST56_MAX INT56_MAX # define UINT_FAST56_MAX UINT56_MAX +# undef __INT_LEAST32_MIN # define __INT_LEAST32_MIN INT56_MIN +# undef __INT_LEAST32_MAX # define __INT_LEAST32_MAX INT56_MAX +# undef __UINT_LEAST32_MAX # define __UINT_LEAST32_MAX UINT56_MAX +# undef __INT_LEAST16_MIN # define __INT_LEAST16_MIN INT56_MIN +# undef __INT_LEAST16_MAX # define __INT_LEAST16_MAX INT56_MAX +# undef __UINT_LEAST16_MAX # define __UINT_LEAST16_MAX UINT56_MAX +# undef __INT_LEAST8_MIN # define __INT_LEAST8_MIN INT56_MIN +# undef __INT_LEAST8_MAX # define __INT_LEAST8_MAX INT56_MAX +# undef __UINT_LEAST8_MAX # define __UINT_LEAST8_MAX UINT56_MAX /* FIXME: This is using the placeholder dates Clang produces for these macros in C2x mode; switch to the correct values once they've been published. */ -#if __STDC_VERSION__ >= 202000L +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202000L # define UINT56_WIDTH 56 # define INT56_WIDTH UINT56_WIDTH # define UINT_LEAST56_WIDTH UINT56_WIDTH # define INT_LEAST56_WIDTH UINT_LEAST56_WIDTH # define UINT_FAST56_WIDTH UINT56_WIDTH # define INT_FAST56_WIDTH UINT_FAST56_WIDTH +# undef __UINT_LEAST32_WIDTH # define __UINT_LEAST32_WIDTH UINT56_WIDTH +# undef __UINT_LEAST16_WIDTH # define __UINT_LEAST16_WIDTH UINT56_WIDTH +# undef __UINT_LEAST8_WIDTH # define __UINT_LEAST8_WIDTH UINT56_WIDTH #endif /* __STDC_VERSION__ */ #endif /* __INT56_TYPE__ */ @@ -554,27 +617,39 @@ # define INT_FAST48_MAX INT48_MAX # define UINT_FAST48_MAX UINT48_MAX +# undef __INT_LEAST32_MIN # define __INT_LEAST32_MIN INT48_MIN +# undef __INT_LEAST32_MAX # define __INT_LEAST32_MAX INT48_MAX +# undef __UINT_LEAST32_MAX # define __UINT_LEAST32_MAX UINT48_MAX +# undef __INT_LEAST16_MIN # define __INT_LEAST16_MIN INT48_MIN +# undef __INT_LEAST16_MAX # define __INT_LEAST16_MAX INT48_MAX +# undef __UINT_LEAST16_MAX # define __UINT_LEAST16_MAX UINT48_MAX +# undef __INT_LEAST8_MIN # define __INT_LEAST8_MIN INT48_MIN +# undef __INT_LEAST8_MAX # define __INT_LEAST8_MAX INT48_MAX +# undef __UINT_LEAST8_MAX # define __UINT_LEAST8_MAX UINT48_MAX /* FIXME: This is using the placeholder dates Clang produces for these macros in C2x mode; switch to the correct values once they've been published. */ -#if __STDC_VERSION__ >= 202000L +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202000L #define UINT48_WIDTH 48 #define INT48_WIDTH UINT48_WIDTH #define UINT_LEAST48_WIDTH UINT48_WIDTH #define INT_LEAST48_WIDTH UINT_LEAST48_WIDTH #define UINT_FAST48_WIDTH UINT48_WIDTH #define INT_FAST48_WIDTH UINT_FAST48_WIDTH +#undef __UINT_LEAST32_WIDTH #define __UINT_LEAST32_WIDTH UINT48_WIDTH +# undef __UINT_LEAST16_WIDTH #define __UINT_LEAST16_WIDTH UINT48_WIDTH +# undef __UINT_LEAST8_WIDTH #define __UINT_LEAST8_WIDTH UINT48_WIDTH #endif /* __STDC_VERSION__ */ #endif /* __INT48_TYPE__ */ @@ -591,27 +666,39 @@ # define INT_FAST40_MAX INT40_MAX # define UINT_FAST40_MAX UINT40_MAX +# undef __INT_LEAST32_MIN # define __INT_LEAST32_MIN INT40_MIN +# undef __INT_LEAST32_MAX # define __INT_LEAST32_MAX INT40_MAX +# undef __UINT_LEAST32_MAX # define __UINT_LEAST32_MAX UINT40_MAX +# undef __INT_LEAST16_MIN # define __INT_LEAST16_MIN INT40_MIN +# undef __INT_LEAST16_MAX # define __INT_LEAST16_MAX INT40_MAX +# undef __UINT_LEAST16_MAX # define __UINT_LEAST16_MAX UINT40_MAX +# undef __INT_LEAST8_MIN # define __INT_LEAST8_MIN INT40_MIN +# undef __INT_LEAST8_MAX # define __INT_LEAST8_MAX INT40_MAX +# undef __UINT_LEAST8_MAX # define __UINT_LEAST8_MAX UINT40_MAX /* FIXME: This is using the placeholder dates Clang produces for these macros in C2x mode; switch to the correct values once they've been published. */ -#if __STDC_VERSION__ >= 202000L +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202000L # define UINT40_WIDTH 40 # define INT40_WIDTH UINT40_WIDTH # define UINT_LEAST40_WIDTH UINT40_WIDTH # define INT_LEAST40_WIDTH UINT_LEAST40_WIDTH # define UINT_FAST40_WIDTH UINT40_WIDTH # define INT_FAST40_WIDTH UINT_FAST40_WIDTH +# undef __UINT_LEAST32_WIDTH # define __UINT_LEAST32_WIDTH UINT40_WIDTH +# undef __UINT_LEAST16_WIDTH # define __UINT_LEAST16_WIDTH UINT40_WIDTH +# undef __UINT_LEAST8_WIDTH # define __UINT_LEAST8_WIDTH UINT40_WIDTH #endif /* __STDC_VERSION__ */ #endif /* __INT40_TYPE__ */ @@ -622,23 +709,35 @@ # define INT32_MIN (-INT32_C(2147483647)-1) # define UINT32_MAX UINT32_C(4294967295) +# undef __INT_LEAST32_MIN # define __INT_LEAST32_MIN INT32_MIN +# undef __INT_LEAST32_MAX # define __INT_LEAST32_MAX INT32_MAX +# undef __UINT_LEAST32_MAX # define __UINT_LEAST32_MAX UINT32_MAX +# undef __INT_LEAST16_MIN # define __INT_LEAST16_MIN INT32_MIN +# undef __INT_LEAST16_MAX # define __INT_LEAST16_MAX INT32_MAX +# undef __UINT_LEAST16_MAX # define __UINT_LEAST16_MAX UINT32_MAX +# undef __INT_LEAST8_MIN # define __INT_LEAST8_MIN INT32_MIN +# undef __INT_LEAST8_MAX # define __INT_LEAST8_MAX INT32_MAX +# undef __UINT_LEAST8_MAX # define __UINT_LEAST8_MAX UINT32_MAX /* FIXME: This is using the placeholder dates Clang produces for these macros in C2x mode; switch to the correct values once they've been published. */ -#if __STDC_VERSION__ >= 202000L +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202000L # define UINT32_WIDTH 32 # define INT32_WIDTH UINT32_WIDTH +# undef __UINT_LEAST32_WIDTH # define __UINT_LEAST32_WIDTH UINT32_WIDTH +# undef __UINT_LEAST16_WIDTH # define __UINT_LEAST16_WIDTH UINT32_WIDTH +# undef __UINT_LEAST8_WIDTH # define __UINT_LEAST8_WIDTH UINT32_WIDTH #endif /* __STDC_VERSION__ */ #endif /* __INT32_TYPE__ */ @@ -653,7 +752,7 @@ /* FIXME: This is using the placeholder dates Clang produces for these macros in C2x mode; switch to the correct values once they've been published. */ -#if __STDC_VERSION__ >= 202000L +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202000L # define UINT_LEAST32_WIDTH __UINT_LEAST32_WIDTH # define INT_LEAST32_WIDTH UINT_LEAST32_WIDTH # define UINT_FAST32_WIDTH __UINT_LEAST32_WIDTH @@ -673,23 +772,31 @@ # define INT_FAST24_MAX INT24_MAX # define UINT_FAST24_MAX UINT24_MAX +# undef __INT_LEAST16_MIN # define __INT_LEAST16_MIN INT24_MIN +# undef __INT_LEAST16_MAX # define __INT_LEAST16_MAX INT24_MAX +# undef __UINT_LEAST16_MAX # define __UINT_LEAST16_MAX UINT24_MAX +# undef __INT_LEAST8_MIN # define __INT_LEAST8_MIN INT24_MIN +# undef __INT_LEAST8_MAX # define __INT_LEAST8_MAX INT24_MAX +# undef __UINT_LEAST8_MAX # define __UINT_LEAST8_MAX UINT24_MAX /* FIXME: This is using the placeholder dates Clang produces for these macros in C2x mode; switch to the correct values once they've been published. */ -#if __STDC_VERSION__ >= 202000L +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202000L # define UINT24_WIDTH 24 # define INT24_WIDTH UINT24_WIDTH # define UINT_LEAST24_WIDTH UINT24_WIDTH # define INT_LEAST24_WIDTH UINT_LEAST24_WIDTH # define UINT_FAST24_WIDTH UINT24_WIDTH # define INT_FAST24_WIDTH UINT_FAST24_WIDTH +# undef __UINT_LEAST16_WIDTH # define __UINT_LEAST16_WIDTH UINT24_WIDTH +# undef __UINT_LEAST8_WIDTH # define __UINT_LEAST8_WIDTH UINT24_WIDTH #endif /* __STDC_VERSION__ */ #endif /* __INT24_TYPE__ */ @@ -700,19 +807,27 @@ #define INT16_MIN (-INT16_C(32767)-1) #define UINT16_MAX UINT16_C(65535) +# undef __INT_LEAST16_MIN # define __INT_LEAST16_MIN INT16_MIN +# undef __INT_LEAST16_MAX # define __INT_LEAST16_MAX INT16_MAX +# undef __UINT_LEAST16_MAX # define __UINT_LEAST16_MAX UINT16_MAX +# undef __INT_LEAST8_MIN # define __INT_LEAST8_MIN INT16_MIN +# undef __INT_LEAST8_MAX # define __INT_LEAST8_MAX INT16_MAX +# undef __UINT_LEAST8_MAX # define __UINT_LEAST8_MAX UINT16_MAX /* FIXME: This is using the placeholder dates Clang produces for these macros in C2x mode; switch to the correct values once they've been published. */ -#if __STDC_VERSION__ >= 202000L +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202000L # define UINT16_WIDTH 16 # define INT16_WIDTH UINT16_WIDTH +# undef __UINT_LEAST16_WIDTH # define __UINT_LEAST16_WIDTH UINT16_WIDTH +# undef __UINT_LEAST8_WIDTH # define __UINT_LEAST8_WIDTH UINT16_WIDTH #endif /* __STDC_VERSION__ */ #endif /* __INT16_TYPE__ */ @@ -727,7 +842,7 @@ /* FIXME: This is using the placeholder dates Clang produces for these macros in C2x mode; switch to the correct values once they've been published. */ -#if __STDC_VERSION__ >= 202000L +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202000L # define UINT_LEAST16_WIDTH __UINT_LEAST16_WIDTH # define INT_LEAST16_WIDTH UINT_LEAST16_WIDTH # define UINT_FAST16_WIDTH __UINT_LEAST16_WIDTH @@ -741,15 +856,19 @@ # define INT8_MIN (-INT8_C(127)-1) # define UINT8_MAX UINT8_C(255) +# undef __INT_LEAST8_MIN # define __INT_LEAST8_MIN INT8_MIN +# undef __INT_LEAST8_MAX # define __INT_LEAST8_MAX INT8_MAX +# undef __UINT_LEAST8_MAX # define __UINT_LEAST8_MAX UINT8_MAX /* FIXME: This is using the placeholder dates Clang produces for these macros in C2x mode; switch to the correct values once they've been published. */ -#if __STDC_VERSION__ >= 202000L +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202000L # define UINT8_WIDTH 8 # define INT8_WIDTH UINT8_WIDTH +# undef __UINT_LEAST8_WIDTH # define __UINT_LEAST8_WIDTH UINT8_WIDTH #endif /* __STDC_VERSION__ */ #endif /* __INT8_TYPE__ */ @@ -764,7 +883,7 @@ /* FIXME: This is using the placeholder dates Clang produces for these macros in C2x mode; switch to the correct values once they've been published. */ -#if __STDC_VERSION__ >= 202000L +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202000L # define UINT_LEAST8_WIDTH __UINT_LEAST8_WIDTH # define INT_LEAST8_WIDTH UINT_LEAST8_WIDTH # define UINT_FAST8_WIDTH __UINT_LEAST8_WIDTH @@ -792,7 +911,7 @@ /* C2x 7.20.2.4 Width of integer types capable of holding object pointers. */ /* FIXME: This is using the placeholder dates Clang produces for these macros in C2x mode; switch to the correct values once they've been published. */ -#if __STDC_VERSION__ >= 202000L +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202000L /* NB: The C standard requires that these be the same value, but the compiler exposes separate internal width macros. */ #define INTPTR_WIDTH __INTPTR_WIDTH__ @@ -813,7 +932,7 @@ /* C2x 7.20.2.5 Width of greatest-width integer types. */ /* FIXME: This is using the placeholder dates Clang produces for these macros in C2x mode; switch to the correct values once they've been published. */ -#if __STDC_VERSION__ >= 202000L +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202000L /* NB: The C standard requires that these be the same value, but the compiler exposes separate internal width macros. */ #define INTMAX_WIDTH __INTMAX_WIDTH__ @@ -849,7 +968,7 @@ /* C2x 7.20.3.x Width of other integer types. */ /* FIXME: This is using the placeholder dates Clang produces for these macros in C2x mode; switch to the correct values once they've been published. */ -#if __STDC_VERSION__ >= 202000L +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202000L #define PTRDIFF_WIDTH __PTRDIFF_WIDTH__ #define SIG_ATOMIC_WIDTH __SIG_ATOMIC_WIDTH__ #define SIZE_WIDTH __SIZE_WIDTH__ diff --git a/clang/lib/Headers/stdnoreturn.h b/clang/lib/Headers/stdnoreturn.h --- a/clang/lib/Headers/stdnoreturn.h +++ b/clang/lib/Headers/stdnoreturn.h @@ -13,7 +13,7 @@ #define noreturn _Noreturn #define __noreturn_is_defined 1 -#if __STDC_VERSION__ > 201710L && \ +#if (defined(__STDC_VERSION__) && __STDC_VERSION__ > 201710L) && \ !defined(_CLANG_DISABLE_CRT_DEPRECATION_WARNINGS) /* The noreturn macro is deprecated in C2x. We do not mark it as such because including the header file in C2x is also deprecated and we do not want to diff --git a/clang/lib/Headers/velintrin.h b/clang/lib/Headers/velintrin.h --- a/clang/lib/Headers/velintrin.h +++ b/clang/lib/Headers/velintrin.h @@ -13,7 +13,7 @@ typedef double __vr __attribute__((__vector_size__(2048))); // Vector mask registers -#if __STDC_VERSION__ >= 199901L +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L // For C99 typedef _Bool __vm __attribute__((ext_vector_type(256))); typedef _Bool __vm256 __attribute__((ext_vector_type(256)));