https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106890
--- Comment #6 from CVS Commits <cvs-commit at gcc dot gnu.org> --- The releases/gcc-11 branch has been updated by Jason Merrill <ja...@gcc.gnu.org>: https://gcc.gnu.org/g:0d7e5f90597167c36c7816f5bcf689472e8b1940 commit r11-10982-g0d7e5f90597167c36c7816f5bcf689472e8b1940 Author: Jason Merrill <ja...@redhat.com> Date: Mon May 1 10:57:20 2023 -0400 c++: array DMI and member fn [PR109666] Here it turns out I also needed to adjust cfun when stepping out of the member function to instantiate the DMI. But instead of adding that tweak, let's unify with instantiate_body and just push_to_top_level instead of trying to do the minimum subset of it. There was no measurable change in compile time on stdc++.h. This should also resolve 109506 without yet another tweak. PR c++/106890 PR c++/109666 gcc/cp/ChangeLog: * name-lookup.c (maybe_push_to_top_level) (maybe_pop_from_top_level): Split out... * pt.c (instantiate_body): ...from here. * init.c (maybe_instantiate_nsdmi_init): Use them. * name-lookup.h: Declare them.. gcc/testsuite/ChangeLog: * g++.dg/cpp0x/nsdmi-array2.C: New test. * g++.dg/cpp0x/nsdmi-template25.C: New test.