]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
ginclude: C2x header version macros
authorJoseph Myers <joseph@codesourcery.com>
Sun, 13 Nov 2022 12:58:49 +0000 (12:58 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Sun, 13 Nov 2022 12:58:49 +0000 (12:58 +0000)
C2x adds __STDC_VERSION_*_H__ macros to individual headers with
interface changes compared to C17.  All the new header features in
headers provided by GCC have now been implemented, so define those
macros to the value given in the current working draft.

Bootstrapped with no regressions for x86_64-pc-linux-gnu.

gcc/
* ginclude/float.h [__STDC_VERSION__ > 201710L]
(__STDC_VERSION_FLOAT_H__): New macro.
* ginclude/stdarg.h [__STDC_VERSION__ > 201710L]
(__STDC_VERSION_STDARG_H__): New macro.
* ginclude/stdatomic.h [__STDC_VERSION__ > 201710L]
(__STDC_VERSION_STDATOMIC_H__): New macro.
* ginclude/stddef.h [__STDC_VERSION__ > 201710L]
(__STDC_VERSION_STDDEF_H__): New macro.
* ginclude/stdint-gcc.h [__STDC_VERSION__ > 201710L]
(__STDC_VERSION_STDINT_H__): New macro.
* glimits.h [__STDC_VERSION__ > 201710L]
(__STDC_VERSION_LIMITS_H__): New macro.

gcc/testsuite/
* gcc.dg/c11-float-8.c, gcc.dg/c11-limits-1.c,
gcc.dg/c11-stdarg-4.c, gcc.dg/c11-stdatomic-3.c,
gcc.dg/c11-stddef-1.c, gcc.dg/c11-stdint-1.c,
gcc.dg/c2x-float-13.c, gcc.dg/c2x-limits-1.c,
gcc.dg/c2x-stdarg-5.c, gcc.dg/c2x-stdatomic-1.c,
gcc.dg/c2x-stddef-1.c, gcc.dg/c2x-stdint-1.c: New tests.

18 files changed:
gcc/ginclude/float.h
gcc/ginclude/stdarg.h
gcc/ginclude/stdatomic.h
gcc/ginclude/stddef.h
gcc/ginclude/stdint-gcc.h
gcc/glimits.h
gcc/testsuite/gcc.dg/c11-float-8.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/c11-limits-1.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/c11-stdarg-4.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/c11-stdatomic-3.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/c11-stddef-1.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/c11-stdint-1.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/c2x-float-13.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/c2x-limits-1.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/c2x-stdarg-5.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/c2x-stdatomic-1.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/c2x-stddef-1.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/c2x-stdint-1.c [new file with mode: 0644]

index bc5439d664faa5f0f6783ebd37c65fb9243e673d..172b9de477f2066499ca8fce427d63859396f8ea 100644 (file)
@@ -624,4 +624,8 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 
 #endif /* __DEC32_MANT_DIG__ */
 
+#if defined __STDC_VERSION__ && __STDC_VERSION__ > 201710L
+#define __STDC_VERSION_FLOAT_H__       202311L
+#endif
+
 #endif /* _FLOAT_H___ */
index c704c9ffcf212a83ca2f6765cf88440620649080..5149f7b3f4f65e39679780ecaf87054d69168c08 100644 (file)
@@ -125,6 +125,10 @@ typedef __gnuc_va_list va_list;
 
 #endif /* not __svr4__ */
 
+#if defined __STDC_VERSION__ && __STDC_VERSION__ > 201710L
+#define __STDC_VERSION_STDARG_H__      202311L
+#endif
+
 #endif /* _STDARG_H */
 
 #endif /* not _ANSI_STDARG_H_ */
index a56ba5d963997de59085f8a4e6803ca7a88e7c1a..e16b072ccdef0d05fdc10a0f3454b6567305c2a3 100644 (file)
@@ -248,4 +248,8 @@ extern void atomic_flag_clear (volatile atomic_flag *);
 extern void atomic_flag_clear_explicit (volatile atomic_flag *, memory_order);
 #define atomic_flag_clear_explicit(PTR, MO)   __atomic_clear ((PTR), (MO))
 
+#if defined __STDC_VERSION__ && __STDC_VERSION__ > 201710L
+#define __STDC_VERSION_STDATOMIC_H__   202311L
+#endif
+
 #endif  /* _STDATOMIC_H */
index 2767edf51def4a6121a3c162aac1208b9afbaec1..7980045e712d8bb2af9fbaf0d3883bc034f21ba5 100644 (file)
@@ -454,6 +454,7 @@ typedef struct {
 
 #if defined __STDC_VERSION__ && __STDC_VERSION__ > 201710L
 #define unreachable() (__builtin_unreachable ())
+#define __STDC_VERSION_STDDEF_H__      202311L
 #endif
 
 #endif /* _STDDEF_H was defined this time */
index 6be01ae28b8eb77d3fd545ad31c6575fe0049c48..eab651d968a36994a0c2bd6b4da975e852d937fb 100644 (file)
@@ -362,4 +362,8 @@ typedef __UINTMAX_TYPE__ uintmax_t;
 
 #endif
 
+#if defined __STDC_VERSION__ && __STDC_VERSION__ > 201710L
+#define __STDC_VERSION_STDINT_H__      202311L
+#endif
+
 #endif /* _GCC_STDINT_H */
index 8d74c8b88d6ba191a4a5dc377642bc6a7a0de0ee..994f7e33bbea8bb8b00068335f49d0979dc0e771 100644 (file)
@@ -156,6 +156,8 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 # define BOOL_MAX 1
 # undef BOOL_WIDTH
 # define BOOL_WIDTH 1
+
+# define __STDC_VERSION_LIMITS_H__     202311L
 #endif
 
 #endif /* _LIMITS_H___ */
diff --git a/gcc/testsuite/gcc.dg/c11-float-8.c b/gcc/testsuite/gcc.dg/c11-float-8.c
new file mode 100644 (file)
index 0000000..7fb1e0a
--- /dev/null
@@ -0,0 +1,9 @@
+/* Test __STDC_VERSION_FLOAT_H__ not in C11.  */
+/* { dg-do preprocess } */
+/* { dg-options "-std=c11 -pedantic-errors" } */
+
+#include <float.h>
+
+#ifdef __STDC_VERSION_FLOAT_H__
+#error "__STDC_VERSION_FLOAT_H__ defined"
+#endif
diff --git a/gcc/testsuite/gcc.dg/c11-limits-1.c b/gcc/testsuite/gcc.dg/c11-limits-1.c
new file mode 100644 (file)
index 0000000..6dc5737
--- /dev/null
@@ -0,0 +1,9 @@
+/* Test __STDC_VERSION_LIMITS_H__ not in C11.  */
+/* { dg-do preprocess } */
+/* { dg-options "-std=c11 -pedantic-errors" } */
+
+#include <limits.h>
+
+#ifdef __STDC_VERSION_LIMITS_H__
+#error "__STDC_VERSION_LIMITS_H__ defined"
+#endif
diff --git a/gcc/testsuite/gcc.dg/c11-stdarg-4.c b/gcc/testsuite/gcc.dg/c11-stdarg-4.c
new file mode 100644 (file)
index 0000000..06bff1f
--- /dev/null
@@ -0,0 +1,9 @@
+/* Test __STDC_VERSION_STDARG_H__ not in C11.  */
+/* { dg-do preprocess } */
+/* { dg-options "-std=c11 -pedantic-errors" } */
+
+#include <stdarg.h>
+
+#ifdef __STDC_VERSION_STDARG_H__
+#error "__STDC_VERSION_STDARG_H__ defined"
+#endif
diff --git a/gcc/testsuite/gcc.dg/c11-stdatomic-3.c b/gcc/testsuite/gcc.dg/c11-stdatomic-3.c
new file mode 100644 (file)
index 0000000..1f5a71b
--- /dev/null
@@ -0,0 +1,9 @@
+/* Test __STDC_VERSION_STDATOMIC_H__ not in C11.  */
+/* { dg-do preprocess } */
+/* { dg-options "-std=c11 -pedantic-errors" } */
+
+#include <stdatomic.h>
+
+#ifdef __STDC_VERSION_STDATOMIC_H__
+#error "__STDC_VERSION_STDATOMIC_H__ defined"
+#endif
diff --git a/gcc/testsuite/gcc.dg/c11-stddef-1.c b/gcc/testsuite/gcc.dg/c11-stddef-1.c
new file mode 100644 (file)
index 0000000..9918d94
--- /dev/null
@@ -0,0 +1,9 @@
+/* Test __STDC_VERSION_STDDEF_H__ not in C11.  */
+/* { dg-do preprocess } */
+/* { dg-options "-std=c11 -pedantic-errors" } */
+
+#include <stddef.h>
+
+#ifdef __STDC_VERSION_STDDEF_H__
+#error "__STDC_VERSION_STDDEF_H__ defined"
+#endif
diff --git a/gcc/testsuite/gcc.dg/c11-stdint-1.c b/gcc/testsuite/gcc.dg/c11-stdint-1.c
new file mode 100644 (file)
index 0000000..43fe681
--- /dev/null
@@ -0,0 +1,9 @@
+/* Test __STDC_VERSION_STDINT_H__ not in C11.  */
+/* { dg-do preprocess } */
+/* { dg-options "-std=c11 -pedantic-errors -ffreestanding" } */
+
+#include <stdint.h>
+
+#ifdef __STDC_VERSION_STDINT_H__
+#error "__STDC_VERSION_STDINT_H__ defined"
+#endif
diff --git a/gcc/testsuite/gcc.dg/c2x-float-13.c b/gcc/testsuite/gcc.dg/c2x-float-13.c
new file mode 100644 (file)
index 0000000..dc54bc7
--- /dev/null
@@ -0,0 +1,13 @@
+/* Test __STDC_VERSION_FLOAT_H__ in C2x.  */
+/* { dg-do preprocess } */
+/* { dg-options "-std=c2x -pedantic-errors" } */
+
+#include <float.h>
+
+#ifndef __STDC_VERSION_FLOAT_H__
+#error "__STDC_VERSION_FLOAT_H__ not defined"
+#endif
+
+#if __STDC_VERSION_FLOAT_H__ != 202311L
+#error "bad value of __STDC_VERSION_FLOAT_H__"
+#endif
diff --git a/gcc/testsuite/gcc.dg/c2x-limits-1.c b/gcc/testsuite/gcc.dg/c2x-limits-1.c
new file mode 100644 (file)
index 0000000..4977faf
--- /dev/null
@@ -0,0 +1,13 @@
+/* Test __STDC_VERSION_LIMITS_H__ in C2x.  */
+/* { dg-do preprocess } */
+/* { dg-options "-std=c2x -pedantic-errors" } */
+
+#include <limits.h>
+
+#ifndef __STDC_VERSION_LIMITS_H__
+#error "__STDC_VERSION_LIMITS_H__ not defined"
+#endif
+
+#if __STDC_VERSION_LIMITS_H__ != 202311L
+#error "bad value of __STDC_VERSION_LIMITS_H__"
+#endif
diff --git a/gcc/testsuite/gcc.dg/c2x-stdarg-5.c b/gcc/testsuite/gcc.dg/c2x-stdarg-5.c
new file mode 100644 (file)
index 0000000..1342443
--- /dev/null
@@ -0,0 +1,13 @@
+/* Test __STDC_VERSION_STDARG_H__ in C2x.  */
+/* { dg-do preprocess } */
+/* { dg-options "-std=c2x -pedantic-errors" } */
+
+#include <stdarg.h>
+
+#ifndef __STDC_VERSION_STDARG_H__
+#error "__STDC_VERSION_STDARG_H__ not defined"
+#endif
+
+#if __STDC_VERSION_STDARG_H__ != 202311L
+#error "bad value of __STDC_VERSION_STDARG_H__"
+#endif
diff --git a/gcc/testsuite/gcc.dg/c2x-stdatomic-1.c b/gcc/testsuite/gcc.dg/c2x-stdatomic-1.c
new file mode 100644 (file)
index 0000000..3a9ceb0
--- /dev/null
@@ -0,0 +1,13 @@
+/* Test __STDC_VERSION_STDATOMIC_H__ in C2x.  */
+/* { dg-do preprocess } */
+/* { dg-options "-std=c2x -pedantic-errors" } */
+
+#include <stdatomic.h>
+
+#ifndef __STDC_VERSION_STDATOMIC_H__
+#error "__STDC_VERSION_STDATOMIC_H__ not defined"
+#endif
+
+#if __STDC_VERSION_STDATOMIC_H__ != 202311L
+#error "bad value of __STDC_VERSION_STDATOMIC_H__"
+#endif
diff --git a/gcc/testsuite/gcc.dg/c2x-stddef-1.c b/gcc/testsuite/gcc.dg/c2x-stddef-1.c
new file mode 100644 (file)
index 0000000..1ebdf20
--- /dev/null
@@ -0,0 +1,13 @@
+/* Test __STDC_VERSION_STDDEF_H__ in C2x.  */
+/* { dg-do preprocess } */
+/* { dg-options "-std=c2x -pedantic-errors" } */
+
+#include <stddef.h>
+
+#ifndef __STDC_VERSION_STDDEF_H__
+#error "__STDC_VERSION_STDDEF_H__ not defined"
+#endif
+
+#if __STDC_VERSION_STDDEF_H__ != 202311L
+#error "bad value of __STDC_VERSION_STDDEF_H__"
+#endif
diff --git a/gcc/testsuite/gcc.dg/c2x-stdint-1.c b/gcc/testsuite/gcc.dg/c2x-stdint-1.c
new file mode 100644 (file)
index 0000000..3ba6ce5
--- /dev/null
@@ -0,0 +1,13 @@
+/* Test __STDC_VERSION_STDINT_H__ in C2x.  */
+/* { dg-do preprocess } */
+/* { dg-options "-std=c2x -pedantic-errors -ffreestanding" } */
+
+#include <stdint.h>
+
+#ifndef __STDC_VERSION_STDINT_H__
+#error "__STDC_VERSION_STDINT_H__ not defined"
+#endif
+
+#if __STDC_VERSION_STDINT_H__ != 202311L
+#error "bad value of __STDC_VERSION_STDINT_H__"
+#endif