c++: array DMI and member fn [PR109666]
commit07c52d1eec9671af92b7ce977b469f13a87887ad
authorJason Merrill <jason@redhat.com>
Mon, 1 May 2023 14:57:20 +0000 (1 10:57 -0400)
committerJason Merrill <jason@redhat.com>
Mon, 1 May 2023 20:55:07 +0000 (1 16:55 -0400)
tree285dc6de4e8d715b2fb25139eff2f289a30cbf00
parentd89b152436a14cae3715af06cd52ed2d0eaafb8e
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++/109666

gcc/cp/ChangeLog:

* name-lookup.cc (maybe_push_to_top_level)
(maybe_pop_from_top_level): Split out...
* pt.cc (instantiate_body): ...from here.
* init.cc (maybe_instantiate_nsdmi_init): Use them.
* name-lookup.h: Declare them..

gcc/testsuite/ChangeLog:

* g++.dg/cpp0x/nsdmi-array2.C: New test.
gcc/cp/init.cc
gcc/cp/name-lookup.cc
gcc/cp/name-lookup.h
gcc/cp/pt.cc
gcc/testsuite/g++.dg/cpp0x/nsdmi-array2.C [new file with mode: 0644]