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

--- 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:5c0e1879ea639dc527d3928af877d3df985e3f13

commit r15-7084-g5c0e1879ea639dc527d3928af877d3df985e3f13
Author: Nathaniel Shead <nathanielosh...@gmail.com>
Date:   Mon Jan 20 22:09:22 2025 +1100

    c++/modules: Handle mismatching TYPE_CANONICAL when deduping partial specs
[PR118101]

    In r15-4862 we ensured that merging a partial specialisation would
    properly update its TYPE_CANONICAL.  However, this confuses the deduping
    mechanism, since the canonical type has updated out from under it,
    causing is_matching_decl to crash when seeing the equivalent types with
    different TYPE_CANONICAL.

    This patch solves the issue by forcing structural equality checking for
    this case; this way mismatching TYPE_CANONICAL doesn't cause issues, but
    we still can handle the case that the types are legitimately different.

            PR c++/118101

    gcc/cp/ChangeLog:

            * module.cc (trees_in::decl_value): Use structural equality when
            deduping partial specs with mismatching canonical types.

    gcc/testsuite/ChangeLog:

            * g++.dg/modules/partial-7.h: New test.
            * g++.dg/modules/partial-7_a.C: New test.
            * g++.dg/modules/partial-7_b.C: New test.
            * g++.dg/modules/partial-7_c.C: New test.

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

Reply via email to