From 49e6a6c023d1b91c90d3fbdf16adf20dff246156 Mon Sep 17 00:00:00 2001 From: Marek Polacek Date: Tue, 12 Dec 2017 10:38:09 +0000 Subject: [PATCH] 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 --- gcc/c/ChangeLog | 5 +++++ gcc/c/c-decl.c | 2 +- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/c11-atomic-5.c | 10 ++++++++++ 4 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.dg/c11-atomic-5.c diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog index f981266..6516e5d 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 4a36c54..7ade2d6 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 079fd96..6f0ea7c 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 0000000..090ffdf --- /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; -- 2.7.4