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

--- Comment #11 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-14 branch has been updated by Patrick Palka
<ppa...@gcc.gnu.org>:

https://gcc.gnu.org/g:ff5fdb3cad1a76768406e0fcec2010cdd72f49fc

commit r14-11577-gff5fdb3cad1a76768406e0fcec2010cdd72f49fc
Author: Patrick Palka <ppa...@redhat.com>
Date:   Wed Apr 9 17:55:36 2025 -0400

    c++: ICE with nested default targ lambdas [PR119574]

    In GCC 14 we fixed PR116567 in a more conservative way that doesn't
    distinguish between the two kinds of deferred substitutions, and so
    for PR119574 we instead ICE from get_innermost_template_args due to
    TMPL_PARMS_DEPTH of the lambda, 2, being greater than the depth of the
    augmented args, 1.

    This patch works around the ICE in a best effort kind of way by guarding
    the get_innermost_template_args call appropriately; I don't think it's
    possible to get this completely right in GCC 14 without backporting the
    proper fix for PR116567.

    Note that lambda-targ13b.C present in the GCC 15 version of this patch[1]
    never worked in GCC 14, and still doesn't work, which is why it's not
    present in this patch.

    [1]: r15-9350-gf3862ab07943d1

            PR c++/119574

    gcc/cp/ChangeLog:

            * pt.cc (tsubst_lambda_expr): Don't call
            get_innermost_template_args if we're requesting too many
            levels.

    gcc/testsuite/ChangeLog:

            * g++.dg/cpp2a/lambda-targ13.C: New test.
            * g++.dg/cpp2a/lambda-targ13a.C: New test.

Reply via email to