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

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

https://gcc.gnu.org/g:2861eb34e30973cb991a7964af7cfeae014a98b0

commit r15-2230-g2861eb34e30973cb991a7964af7cfeae014a98b0
Author: Patrick Palka <ppa...@redhat.com>
Date:   Tue Jul 23 13:16:14 2024 -0400

    c++: normalizing ttp constraints [PR115656]

    Here we normalize the constraint same_as<T, bool> for the first
    time during ttp coercion of B / UU, specifically constraint subsumption
    checking.  During this normalization the set of in-scope template
    parameters i.e. current_template_parms is empty, which we rely on
    during normalization of the ttp constraints since we pass in_decl=NULL_TREE
    to norm_info.  And this tricks the satisfaction cache into thinking that
    the satisfaction value of same_as<T, bool> is independent of its template
    parameters, and we incorrectly conflate the satisfaction value with
    T = bool vs T = long and accept the specialization A<long, B>.

    Since is_compatible_template_arg rewrites the ttp's constraints to
    be in terms of the argument template's parameters, and since it's
    the only caller of weakly_subsumes, the latter funcion can instead
    pass in_decl=tmpl to avoid relying on current_template_parms.  This
    patch implements this, and in turns renames weakly_subsumes to
    ttp_subsumes to reflect that this predicate is now hardcoded for this
    one caller.

            PR c++/115656

    gcc/cp/ChangeLog:

            * constraint.cc (weakly_subsumes): Pass in_decl=tmpl to
            get_normalized_constraints_from_info.  Rename to ...
            (ttp_subsumes): ... this.
            * cp-tree.h (weakly_subsumes): Rename to ...
            (ttp_subsumes): ... this.
            * pt.cc (is_compatible_template_arg): Adjust after renaming.

    gcc/testsuite/ChangeLog:

            * g++.dg/cpp2a/concepts-ttp7.C: New test.

    Reviewed-by: Jason Merrill <ja...@redhat.com>

Reply via email to