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

--- Comment #3 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Nathaniel Shead <nsh...@gcc.gnu.org>:

https://gcc.gnu.org/g:685c458fb4775cbd1a3b3d3585d1e5615d7eaee9

commit r15-7147-g685c458fb4775cbd1a3b3d3585d1e5615d7eaee9
Author: Nathaniel Shead <nathanielosh...@gmail.com>
Date:   Mon Dec 16 16:06:05 2024 +1100

    c++: Fix mangling of lambdas in static data member initializers [PR107741]

    This fixes an issue where lambdas declared in the initializer of a
    static data member within the class body do not get a mangling scope of
    that variable; this results in mangled names that do not conform to the
    ABI spec.

    To do this, the patch splits up grokfield for this case specifically,
    allowing a declaration to be build and used in start_lambda_scope before
    parsing the initializer, so that record_lambda_scope works correctly.

    As a drive-by, this also fixes the issue of a static member not being
    visible within its own initializer.

            PR c++/107741

    gcc/c-family/ChangeLog:

            * c-opts.cc (c_common_post_options): Bump ABI version.

    gcc/ChangeLog:

            * common.opt: Add -fabi-version=20.
            * doc/invoke.texi: Likewise.

    gcc/cp/ChangeLog:

            * cp-tree.h (start_initialized_static_member): Declare.
            (finish_initialized_static_member): Declare.
            * decl2.cc (start_initialized_static_member): New function.
            (finish_initialized_static_member): New function.
            * lambda.cc (record_lambda_scope): Support falling back to old
            ABI (maybe with warning).
            * parser.cc (cp_parser_member_declaration): Build decl early
            when parsing an initialized static data member.

    gcc/testsuite/ChangeLog:

            * g++.dg/abi/macro0.C: Bump ABI version.
            * g++.dg/abi/mangle74.C: Remove XFAILs.
            * g++.dg/other/fold1.C: Restore originally raised error.
            * g++.dg/abi/lambda-ctx2-19.C: New test.
            * g++.dg/abi/lambda-ctx2-19vs20.C: New test.
            * g++.dg/abi/lambda-ctx2-20.C: New test.
            * g++.dg/abi/lambda-ctx2.h: New test.
            * g++.dg/cpp0x/static-member-init-1.C: New test.

    Signed-off-by: Nathaniel Shead <nathanielosh...@gmail.com>
  • [Bug c++/107741] Missed member ... cvs-commit at gcc dot gnu.org via Gcc-bugs

Reply via email to