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

Jonathan Wakely <redi at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
      Known to work|                            |9.4.0
             Status|WAITING                     |NEW
      Known to fail|                            |10.3.1, 11.2.1, 12.0
                 CC|                            |jason at gcc dot gnu.org
            Summary|requires crashes gcc        |[10/11/12 Regression]
                   |                            |requires crashes gcc
           Keywords|                            |ice-on-valid-code

--- Comment #10 from Jonathan Wakely <redi at gcc dot gnu.org> ---
Thank you. Confirmed as a regression, starting with r10-6220

    c++: Fix ICE with constrained friend (PR93400).

    Here, the problem was that tsubst_friend_function was modifying the
    CONSTRAINT_INFO for the friend template to have the constraints for one
    instantiation, which fell down when we went to adjust it for another
    instantiation.  Fixed by deferring substitution of trailing requirements
    until we try to check declaration matching.

            PR c++/93400 - ICE with constrained friend.
            * constraint.cc (maybe_substitute_reqs_for): New.
            * decl.c (function_requirements_equivalent_p): Call it.
            * pt.c (tsubst_friend_function): Only substitute
            TEMPLATE_PARMS_CONSTRAINTS.
            (tsubst_template_parms): Copy constraints.

Reply via email to