[Bug c++/60364] [[noreturn]] specified for second declaration but not first doesn't result in a diagnostic

mpolacek at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Wed Jun 19 21:28:00 GMT 2019


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60364

--- Comment #6 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
Author: mpolacek
Date: Wed Jun 19 21:27:45 2019
New Revision: 272486

URL: https://gcc.gnu.org/viewcvs?rev=272486&root=gcc&view=rev
Log:
        PR c++/60364 - noreturn after first decl not diagnosed.
        * attribs.c (get_attribute_namespace): No longer static.
        (decl_attributes): Avoid shadowing.  Preserve the C++11 form for C++11
        attributes.
        (attr_noreturn_exclusions): Make it extern.
        * attribs.h (get_attribute_namespace): Declare.
        * tree-inline.c (function_attribute_inlinable_p): Use
        get_attribute_name.

        * c-attribs.c (handle_noreturn_attribute): No longer static.
        * c-common.h (handle_noreturn_attribute, attr_noreturn_exclusions):
        Declare.
        * c-format.c (check_function_format): Use get_attribute_name.

        * decl.c (duplicate_decls): Give an error when a function is
        declared [[noreturn]] after its first declaration.
        * parser.c (cp_parser_std_attribute): Don't treat C++11 noreturn
        attribute as equivalent to GNU's.
        * tree.c (std_attribute_table): Add noreturn.

        * g++.dg/warn/noreturn-8.C: New test.
        * g++.dg/warn/noreturn-9.C: New test.
        * g++.dg/warn/noreturn-10.C: New test.
        * g++.dg/warn/noreturn-11.C: New test.

Added:
    trunk/gcc/testsuite/g++.dg/warn/noreturn-10.C
    trunk/gcc/testsuite/g++.dg/warn/noreturn-11.C
    trunk/gcc/testsuite/g++.dg/warn/noreturn-8.C
    trunk/gcc/testsuite/g++.dg/warn/noreturn-9.C
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/attribs.c
    trunk/gcc/attribs.h
    trunk/gcc/c-family/ChangeLog
    trunk/gcc/c-family/c-attribs.c
    trunk/gcc/c-family/c-common.h
    trunk/gcc/c-family/c-format.c
    trunk/gcc/cp/ChangeLog
    trunk/gcc/cp/decl.c
    trunk/gcc/cp/parser.c
    trunk/gcc/cp/tree.c
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/tree-inline.c


More information about the Gcc-bugs mailing list