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

--- Comment #5 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Iain Buclaw <ibuc...@gcc.gnu.org>:

https://gcc.gnu.org/g:013fca64fc17ba646c3564eab52fac50f0751188

commit r10-7487-g013fca64fc17ba646c3564eab52fac50f0751188
Author: Iain Buclaw <ibuc...@gdcproject.org>
Date:   Thu Apr 18 09:50:56 2019 +0200

    d: Merge UDAs between function prototype and definitions (PR90136)

    This change fixes the symbol merging in get_symbol_decl to also consider
    prototypes.  This allows the ability to set user defined attributes on
    the prototype of a function, which then get applied to the definition,
    if found later in the compilation.

    The lowering of UDAs to GCC attributes has been commonized into a single
    function called apply_user_attributes.

    gcc/d/ChangeLog:

            PR d/90136
            * d-attribs.cc: Include dmd/attrib.h.
            (build_attributes): Redeclare as static.
            (apply_user_attributes): New function.
            * d-tree.h (class UserAttributeDeclaration): Remove.
            (build_attributes): Remove.
            (apply_user_attributes): Declare.
            (finish_aggregate_type): Remove attrs argument.
            * decl.cc (get_symbol_decl): Merge declaration prototypes with
            definitions.  Use apply_user_attributes.
            * modules.cc (layout_moduleinfo_fields): Remove last argument to
            finish_aggregate_type.
            * typeinfo.cc (layout_classinfo_interfaces): Likewise.
            * types.cc (layout_aggregate_members): Likewise.
            (finish_aggregate_type): Remove attrs argument.
            (TypeVisitor::visit (TypeEnum *)): Use apply_user_attributes.
            (TypeVisitor::visit (TypeStruct *)): Remove last argument to
            finish_aggregate_type.  Use apply_user_attributes.
            (TypeVisitor::visit (TypeClass *)): Likewise.

    gcc/testsuite/ChangeLog:

            PR d/90136
            * gdc.dg/pr90136a.d: New test.
            * gdc.dg/pr90136b.d: New test.
            * gdc.dg/pr90136c.d: New test.

Reply via email to