https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105064
--- Comment #13 from CVS Commits <cvs-commit at gcc dot gnu.org> --- The releases/gcc-11 branch has been updated by Patrick Palka <ppa...@gcc.gnu.org>: https://gcc.gnu.org/g:214330a15cd7fd52e574023152f1321c6d329e82 commit r11-9796-g214330a15cd7fd52e574023152f1321c6d329e82 Author: Patrick Palka <ppa...@redhat.com> Date: Mon Mar 28 14:15:16 2022 -0400 c++: constrained template friend matching ICE [PR105064] Here during declaration matching for the two constrained template friends, we crash from maybe_substitute_reqs_for because the second friend doesn't yet have DECL_TEMPLATE_INFO set (we're being called indirectly from push_template_decl). As far as I can tell, this situation happens only when declaring a constrained template friend within a non-template class (as in the testcase), in which case the substitution would be a no-op anyway. So this patch rearranges maybe_substitute_reqs_for to gracefully handle missing DECL_TEMPLATE_INFO by just skipping the substitution. PR c++/105064 gcc/cp/ChangeLog: * constraint.cc (maybe_substitute_reqs_for): Don't assume DECL_TEMPLATE_INFO is available. gcc/testsuite/ChangeLog: * g++.dg/cpp2a/concepts-friend9.C: New test. (cherry picked from commit ecb4882e362e80a1bf172453ac9b366edbb4e89c)