r278324 - in /trunk/gcc: c/ChangeLog c/c-parser...

jsm28@gcc.gnu.org jsm28@gcc.gnu.org
Fri Nov 15 23:22:00 GMT 2019


Author: jsm28
Date: Fri Nov 15 23:22:41 2019
New Revision: 278324

URL: https://gcc.gnu.org/viewcvs?rev=278324&root=gcc&view=rev
Log:
Diagnose duplicate C2x standard attributes.

For each of the attributes currently included in C2x, it has a
constraint that the attribute shall appear at most once in each
attribute list (attribute-list being what appear between a single [[
and ]]).

This patch implements that check.  As the corresponding check in the
C++ front end (cp_parser_check_std_attribute) makes violations into
errors, I made them into errors, with the same wording, for C as well.

There is an existing check in the case of the fallthrough attribute,
with a warning rather than an error, in attribute_fallthrough_p.  That
is more general, as it also covers __attribute__ ((fallthrough)) and
the case of [[fallthrough]] [[fallthrough]] (multiple attribute-lists
in a single attribute-specifier-sequence), which is not a constraint
violation.  To avoid some [[fallthrough, fallthrough]] being diagnosed
twice, the check I added avoids adding duplicate attributes to the
list.

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

gcc/c:
	* c-parser.c (c_parser_std_attribute_specifier): Diagnose
	duplicate standard attributes.

gcc/testsuite:
	* gcc.dg/c2x-attr-deprecated-4.c, gcc.dg/c2x-attr-fallthrough-4.c,
	gcc.dg/c2x-attr-maybe_unused-4.c: New tests.

Added:
    trunk/gcc/testsuite/gcc.dg/c2x-attr-deprecated-4.c
    trunk/gcc/testsuite/gcc.dg/c2x-attr-fallthrough-4.c
    trunk/gcc/testsuite/gcc.dg/c2x-attr-maybe_unused-4.c
Modified:
    trunk/gcc/c/ChangeLog
    trunk/gcc/c/c-parser.c
    trunk/gcc/testsuite/ChangeLog



More information about the Gcc-cvs mailing list