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

--- Comment #11 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The trunk branch has been updated by Jason Merrill <[email protected]>:

https://gcc.gnu.org/g:61eb73a6396fd63b02f208e4288f694c849e9428

commit r16-6365-g61eb73a6396fd63b02f208e4288f694c849e9428
Author: Egas Ribeiro <[email protected]>
Date:   Mon Dec 22 22:30:12 2025 +0000

    c++: Fix ICE on partial specialization redeclaration with mismatched
parameters [PR122958]

    When a partial specialization was redeclared with different template
    parameters, maybe_new_partial_specialization was incorrectly treating it
    as the same specialization by only comparing template argument lists
    without comparing template-heads. This caused an ICE when the
    redeclaration had different template parameters.

    Per [temp.spec.partial.general]/2, two partial specializations declare
    the same entity only if they have equivalent template-heads and
    template argument lists.
    Fix by comparing template parameter lists (template-heads) in addition
    to template argument lists when checking for existing specializations,
    and removing flag_concepts to provide diagnostics before c++20 for the
    testcase.

            PR c++/122958

    gcc/cp/ChangeLog:

            * pt.cc (maybe_new_partial_specialization): Compare template
            parameter lists when checking for existing specializations and
            remove flag_concepts check.

    gcc/testsuite/ChangeLog:

            * g++.dg/cpp2a/partial-spec-redecl.C: New test.

    Signed-off-by: Egas Ribeiro <[email protected]>
    Reviewed-by: Jason Merrill <[email protected]>

Reply via email to