https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93400
--- Comment #1 from CVS Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Jason Merrill <ja...@gcc.gnu.org>: https://gcc.gnu.org/g:9c1179c339e050e2ce7c545f648b684d38dec69d commit r10-6220-g9c1179c339e050e2ce7c545f648b684d38dec69d Author: Jason Merrill <ja...@redhat.com> Date: Fri Jan 24 14:58:56 2020 -0500 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.