[Bug c++/110566] [13/14 Regression] ICE when instantiating function template with template template parameter with 2 or more auto parameters with a dependent member template, ICE in tsubst, at cp/pt.c
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110566 --- Comment #4 from CVS Commits --- The master branch has been updated by Patrick Palka : https://gcc.gnu.org/g:b8218eb2266811991b8163f36d5c1d974cb50b93 commit r14-2810-gb8218eb2266811991b8163f36d5c1d974cb50b93 Author: Patrick Palka Date: Wed Jul 26 17:21:43 2023 -0400 c++: passing partially inst ttp as ttp [PR110566] The previous fix doesn't work for partially instantiated ttps mainly because most_general_template is a no-op for them. This patch fixes this by giving such ttps a DECL_TEMPLATE_INFO (extending the r11-734-g2fb595f8348e16 fix) with which most_general_template can obtain the original, unlowered ttp. This patch additionally makes coerce_template_template_parms use the correct amount of levels from the scope of a ttp argument. PR c++/110566 PR c++/108179 gcc/cp/ChangeLog: * pt.cc (reduce_template_parm_level): Set DECL_TEMPLATE_INFO on the DECL_TEMPLATE_RESULT of the new ttp. (add_defaults_to_ttp): Make a copy of the original ttp's DECL_TEMPLATE_RESULT, and update this copy's DECL_TEMPLATE_INFO as well. (coerce_template_template_parms): Make sure 'scope_args' has the right amount of levels for the ttp argument. (most_general_template): Handle template template parameters. (rewrite_template_parm): Set DECL_TEMPLATE_RESULT on the DECL_TEMPLATE_RESULT of the new ttp. gcc/testsuite/ChangeLog: * g++.dg/cpp1z/class-deduction115.C: New test. * g++.dg/template/ttp39.C: New test.
[Bug c++/110566] [13/14 Regression] ICE when instantiating function template with template template parameter with 2 or more auto parameters with a dependent member template, ICE in tsubst, at cp/pt.c
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110566 --- Comment #3 from CVS Commits --- The master branch has been updated by Patrick Palka : https://gcc.gnu.org/g:b3adcc60dcf3314f47f5409aecef40607f82b80b commit r14-2809-gb3adcc60dcf3314f47f5409aecef40607f82b80b Author: Patrick Palka Date: Wed Jul 26 17:21:26 2023 -0400 c++: passing partially inst tmpl as ttp [PR110566] Since the template arguments 'pargs' we pass to coerce_template_parms from coerce_template_template_parms are always a full set, we need to make sure we always pass the parameters of the most general template because if the template is partially instantiated then the levels won't match up. In the testcase below during said call to coerce_template_parms the parameters are {X, Y}, both level 1 rather than 2, and the arguments are {{int}, {N, M}}, which results in a crash during auto deduction for parameters' types. PR c++/110566 PR c++/108179 gcc/cp/ChangeLog: * pt.cc (coerce_template_template_parms): Simplify by using DECL_INNERMOST_TEMPLATE_PARMS and removing redundant asserts. Always pass the parameters of the most general template to coerce_template_parms. gcc/testsuite/ChangeLog: * g++.dg/template/ttp38.C: New test.
[Bug c++/110566] [13/14 Regression] ICE when instantiating function template with template template parameter with 2 or more auto parameters with a dependent member template, ICE in tsubst, at cp/pt.c
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110566 Marek Polacek changed: What|Removed |Added Keywords||patch --- Comment #2 from Marek Polacek --- Patch posted: https://gcc.gnu.org/pipermail/gcc-patches/2023-July/624952.html
[Bug c++/110566] [13/14 Regression] ICE when instantiating function template with template template parameter with 2 or more auto parameters with a dependent member template, ICE in tsubst, at cp/pt.c
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110566 Richard Biener changed: What|Removed |Added Priority|P3 |P2
[Bug c++/110566] [13/14 Regression] ICE when instantiating function template with template template parameter with 2 or more auto parameters with a dependent member template, ICE in tsubst, at cp/pt.c
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110566 Marek Polacek changed: What|Removed |Added CC||jason at gcc dot gnu.org, ||mpolacek at gcc dot gnu.org Status|UNCONFIRMED |NEW Target Milestone|--- |13.2 Ever confirmed|0 |1 Last reconfirmed||2023-07-05 --- Comment #1 from Marek Polacek --- Started with r13-6693: commit 3ea64aad06a2b32739028bae03b9b9a5691d2d30 Author: Jason Merrill Date: Fri Mar 10 14:55:27 2023 -0500 c++: passing one ttp to another [PR108179]