From: Jason Merrill Date: Thu, 23 Jun 2022 01:29:16 +0000 (-0400) Subject: c++: tweak deduction with auto template parms X-Git-Tag: basepoints/gcc-14~5996 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=27e9bd911626b6ae336fc62c86da5ff710de39ab;p=thirdparty%2Fgcc.git c++: tweak deduction with auto template parms While looking at PR105964 I noticed that we were unnecessarily repeating the deduction loop because of seeing a non-type parameter with type 'auto'. It is indeed dependent, but not on any other deductions. gcc/cp/ChangeLog: * pt.cc (type_unification_real): An auto tparm can't be affected by other deductions. --- diff --git a/gcc/cp/pt.cc b/gcc/cp/pt.cc index 4d1c325432d..80d2bec2348 100644 --- a/gcc/cp/pt.cc +++ b/gcc/cp/pt.cc @@ -22982,6 +22982,7 @@ type_unification_real (tree tparms, deduced from a later argument than the one from which this parameter can be deduced. */ if (TREE_CODE (tparm) == PARM_DECL + && !is_auto (TREE_TYPE (tparm)) && uses_template_parms (TREE_TYPE (tparm)) && saw_undeduced < 2) { @@ -23042,6 +23043,7 @@ type_unification_real (tree tparms, if (saw_undeduced == 1 && TREE_CODE (parm) == PARM_DECL + && !is_auto (TREE_TYPE (parm)) && uses_template_parms (TREE_TYPE (parm))) { /* The type of this non-type parameter depends on undeduced