From: Richard Biener <richard.guenther@gmail.com>
To: Joseph Myers <joseph@codesourcery.com>
Cc: gcc-patches@gcc.gnu.org
Subject: Re: ginclude: C2x header version macros
Date: Sun, 13 Nov 2022 13:22:41 +0100 [thread overview]
Message-ID: <A325F2C7-D5C0-4C78-85AD-05A6B0A70DBB@gmail.com> (raw)
In-Reply-To: <77db8c82-5856-2c9c-7583-8534e0c92ee4@codesourcery.com>
> Am 12.11.2022 um 19:18 schrieb Joseph Myers <joseph@codesourcery.com>:
>
> 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. OK to
> commit?
Ok.
Richard
> 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.
>
> diff --git a/gcc/ginclude/float.h b/gcc/ginclude/float.h
> index bc5439d664f..172b9de477f 100644
> --- a/gcc/ginclude/float.h
> +++ b/gcc/ginclude/float.h
> @@ -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___ */
> diff --git a/gcc/ginclude/stdarg.h b/gcc/ginclude/stdarg.h
> index c704c9ffcf2..5149f7b3f4f 100644
> --- a/gcc/ginclude/stdarg.h
> +++ b/gcc/ginclude/stdarg.h
> @@ -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_ */
> diff --git a/gcc/ginclude/stdatomic.h b/gcc/ginclude/stdatomic.h
> index a56ba5d9639..e16b072ccde 100644
> --- a/gcc/ginclude/stdatomic.h
> +++ b/gcc/ginclude/stdatomic.h
> @@ -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 */
> diff --git a/gcc/ginclude/stddef.h b/gcc/ginclude/stddef.h
> index 2767edf51de..7980045e712 100644
> --- a/gcc/ginclude/stddef.h
> +++ b/gcc/ginclude/stddef.h
> @@ -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 */
> diff --git a/gcc/ginclude/stdint-gcc.h b/gcc/ginclude/stdint-gcc.h
> index 6be01ae28b8..eab651d968a 100644
> --- a/gcc/ginclude/stdint-gcc.h
> +++ b/gcc/ginclude/stdint-gcc.h
> @@ -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 */
> diff --git a/gcc/glimits.h b/gcc/glimits.h
> index 8d74c8b88d6..994f7e33bbe 100644
> --- a/gcc/glimits.h
> +++ b/gcc/glimits.h
> @@ -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
> index 00000000000..7fb1e0a5683
> --- /dev/null
> +++ b/gcc/testsuite/gcc.dg/c11-float-8.c
> @@ -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
> index 00000000000..6dc5737024d
> --- /dev/null
> +++ b/gcc/testsuite/gcc.dg/c11-limits-1.c
> @@ -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
> index 00000000000..06bff1f0445
> --- /dev/null
> +++ b/gcc/testsuite/gcc.dg/c11-stdarg-4.c
> @@ -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
> index 00000000000..1f5a71b6219
> --- /dev/null
> +++ b/gcc/testsuite/gcc.dg/c11-stdatomic-3.c
> @@ -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
> index 00000000000..9918d9478c4
> --- /dev/null
> +++ b/gcc/testsuite/gcc.dg/c11-stddef-1.c
> @@ -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
> index 00000000000..43fe681c7a5
> --- /dev/null
> +++ b/gcc/testsuite/gcc.dg/c11-stdint-1.c
> @@ -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
> index 00000000000..dc54bc734b3
> --- /dev/null
> +++ b/gcc/testsuite/gcc.dg/c2x-float-13.c
> @@ -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
> index 00000000000..4977faf47b4
> --- /dev/null
> +++ b/gcc/testsuite/gcc.dg/c2x-limits-1.c
> @@ -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
> index 00000000000..134244357bb
> --- /dev/null
> +++ b/gcc/testsuite/gcc.dg/c2x-stdarg-5.c
> @@ -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
> index 00000000000..3a9ceb0ea39
> --- /dev/null
> +++ b/gcc/testsuite/gcc.dg/c2x-stdatomic-1.c
> @@ -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
> index 00000000000..1ebdf2037ee
> --- /dev/null
> +++ b/gcc/testsuite/gcc.dg/c2x-stddef-1.c
> @@ -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
> index 00000000000..3ba6ce56a7a
> --- /dev/null
> +++ b/gcc/testsuite/gcc.dg/c2x-stdint-1.c
> @@ -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
>
> --
> Joseph S. Myers
> joseph@codesourcery.com
prev parent reply other threads:[~2022-11-13 12:22 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-11-12 18:18 Joseph Myers
2022-11-13 12:22 ` Richard Biener [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=A325F2C7-D5C0-4C78-85AD-05A6B0A70DBB@gmail.com \
--to=richard.guenther@gmail.com \
--cc=gcc-patches@gcc.gnu.org \
--cc=joseph@codesourcery.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).