Message ID | alpine.DEB.2.22.394.2209092040400.2862759@digraph.polyomino.org.uk |
---|---|
State | New |
Headers | show |
Series | stdatomic.h: Do not define ATOMIC_VAR_INIT for C2x | expand |
On Fri, Sep 9, 2022 at 10:41 PM Joseph Myers <joseph@codesourcery.com> wrote: > > The <stdatomic.h> macro ATOMIC_VAR_INIT, previously declared obsolete, > is removed completely in C2x; disable it for C2x in GCC's > implementation. (Although ATOMIC_* are reserved names for this > header, disabling the macro for C2x still seems appropriate.) > > Bootstrapped with no regressions for x86_64-pc-linux-gnu. OK to commit? OK > gcc/ > * ginclude/stdatomic.h [defined __STDC_VERSION__ && > __STDC_VERSION__ > 201710L] (ATOMIC_VAR_INIT): Do not define. > > gcc/testsuite/ > * gcc.dg/atomic/c2x-stdatomic-var-init-1.c: New test. > > diff --git a/gcc/ginclude/stdatomic.h b/gcc/ginclude/stdatomic.h > index 9f2475b739d..a56ba5d9639 100644 > --- a/gcc/ginclude/stdatomic.h > +++ b/gcc/ginclude/stdatomic.h > @@ -79,7 +79,9 @@ typedef _Atomic __INTMAX_TYPE__ atomic_intmax_t; > typedef _Atomic __UINTMAX_TYPE__ atomic_uintmax_t; > > > +#if !(defined __STDC_VERSION__ && __STDC_VERSION__ > 201710L) > #define ATOMIC_VAR_INIT(VALUE) (VALUE) > +#endif > > /* Initialize an atomic object pointed to by PTR with VAL. */ > #define atomic_init(PTR, VAL) \ > diff --git a/gcc/testsuite/gcc.dg/atomic/c2x-stdatomic-var-init-1.c b/gcc/testsuite/gcc.dg/atomic/c2x-stdatomic-var-init-1.c > new file mode 100644 > index 00000000000..1978a410350 > --- /dev/null > +++ b/gcc/testsuite/gcc.dg/atomic/c2x-stdatomic-var-init-1.c > @@ -0,0 +1,9 @@ > +/* Test ATOMIC_VAR_INIT not in C2x. */ > +/* { dg-do compile } */ > +/* { dg-options "-std=c2x -pedantic-errors" } */ > + > +#include <stdatomic.h> > + > +#ifdef ATOMIC_VAR_INIT > +#error "ATOMIC_VAR_INIT defined" > +#endif > > -- > Joseph S. Myers > joseph@codesourcery.com
diff --git a/gcc/ginclude/stdatomic.h b/gcc/ginclude/stdatomic.h index 9f2475b739d..a56ba5d9639 100644 --- a/gcc/ginclude/stdatomic.h +++ b/gcc/ginclude/stdatomic.h @@ -79,7 +79,9 @@ typedef _Atomic __INTMAX_TYPE__ atomic_intmax_t; typedef _Atomic __UINTMAX_TYPE__ atomic_uintmax_t; +#if !(defined __STDC_VERSION__ && __STDC_VERSION__ > 201710L) #define ATOMIC_VAR_INIT(VALUE) (VALUE) +#endif /* Initialize an atomic object pointed to by PTR with VAL. */ #define atomic_init(PTR, VAL) \ diff --git a/gcc/testsuite/gcc.dg/atomic/c2x-stdatomic-var-init-1.c b/gcc/testsuite/gcc.dg/atomic/c2x-stdatomic-var-init-1.c new file mode 100644 index 00000000000..1978a410350 --- /dev/null +++ b/gcc/testsuite/gcc.dg/atomic/c2x-stdatomic-var-init-1.c @@ -0,0 +1,9 @@ +/* Test ATOMIC_VAR_INIT not in C2x. */ +/* { dg-do compile } */ +/* { dg-options "-std=c2x -pedantic-errors" } */ + +#include <stdatomic.h> + +#ifdef ATOMIC_VAR_INIT +#error "ATOMIC_VAR_INIT defined" +#endif