From: Marek Polacek Date: Tue, 12 Dec 2017 10:38:09 +0000 (+0000) Subject: re PR c/82679 (Uses of typedefs of arrays of _Atomic-qualified types are rejected) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=49e6a6c023d1b91c90d3fbdf16adf20dff246156;p=gcc.git re PR c/82679 (Uses of typedefs of arrays of _Atomic-qualified types are rejected) PR c/82679 * c-decl.c (grokdeclarator): Check declspecs insted of atomicp. * gcc.dg/c11-atomic-5.c: New test. From-SVN: r255577 --- diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog index f9812665069..6516e5d5982 100644 --- a/gcc/c/ChangeLog +++ b/gcc/c/ChangeLog @@ -1,3 +1,8 @@ +2017-12-12 Marek Polacek + + PR c/82679 + * c-decl.c (grokdeclarator): Check declspecs insted of atomicp. + 2017-12-12 Alexandre Oliva * c-objc-common.h (LANG_HOOKS_EMITS_BEGIN_STMT): Redefine as true. diff --git a/gcc/c/c-decl.c b/gcc/c/c-decl.c index 4a36c54d21e..7ade2d6436e 100644 --- a/gcc/c/c-decl.c +++ b/gcc/c/c-decl.c @@ -5813,7 +5813,7 @@ grokdeclarator (const struct c_declarator *declarator, of typedefs or typeof) must be detected here. If the qualifier is introduced later, any appearance of applying it to an array is actually applying it to an element of that array. */ - if (atomicp && TREE_CODE (type) == ARRAY_TYPE) + if (declspecs->atomic_p && TREE_CODE (type) == ARRAY_TYPE) error_at (loc, "%<_Atomic%>-qualified array type"); /* Warn about storage classes that are invalid for certain diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 079fd96fee5..6f0ea7c5727 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2017-12-12 Marek Polacek + + PR c/82679 + * gcc.dg/c11-atomic-5.c: New test. + 2017-12-12 Jakub Jelinek PR rtl-optimization/83363 diff --git a/gcc/testsuite/gcc.dg/c11-atomic-5.c b/gcc/testsuite/gcc.dg/c11-atomic-5.c new file mode 100644 index 00000000000..090ffdfa69b --- /dev/null +++ b/gcc/testsuite/gcc.dg/c11-atomic-5.c @@ -0,0 +1,10 @@ +/* PR c/82679 */ +/* { dg-do compile } */ +/* { dg-options "-std=gnu11" } */ + +typedef _Atomic int A[10]; +A a; + +typedef _Atomic int I; +typedef I T[10]; +T t;