From: Jason Merrill Date: Thu, 4 May 2023 14:26:25 +0000 (-0400) Subject: Revert "c++: DMI in template with virtual base [PR106890]" X-Git-Tag: releases/gcc-12.3.0~5 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=13a269a015f888a0001af7b9ab564fadbee4a808;p=thirdparty%2Fgcc.git Revert "c++: DMI in template with virtual base [PR106890]" The PR106890 patch caused PR109666; for 12.3 let's just revert it. PR c++/109666 This reverts commit 94569d91bd4c604da755b4aae84256e7fe21196a. --- diff --git a/gcc/cp/init.cc b/gcc/cp/init.cc index 92969857ea88..75dbfe112b58 100644 --- a/gcc/cp/init.cc +++ b/gcc/cp/init.cc @@ -613,18 +613,6 @@ maybe_instantiate_nsdmi_init (tree member, tsubst_flags_t complain) pushed = true; } - /* If we didn't push_to_top_level, still step out of constructor - scope so build_base_path doesn't try to use its __in_chrg. */ - tree cfd = current_function_decl; - auto cbl = current_binding_level; - if (at_function_scope_p ()) - { - current_function_decl - = decl_function_context (current_function_decl); - while (current_binding_level->kind != sk_class) - current_binding_level = current_binding_level->level_chain; - } - inject_this_parameter (ctx, TYPE_UNQUALIFIED); start_lambda_scope (member); @@ -643,8 +631,6 @@ maybe_instantiate_nsdmi_init (tree member, tsubst_flags_t complain) if (init != error_mark_node) hash_map_safe_put (nsdmi_inst, member, init); - current_function_decl = cfd; - current_binding_level = cbl; if (pushed) { pop_deferring_access_checks (); diff --git a/gcc/testsuite/g++.dg/cpp0x/nsdmi-template25.C b/gcc/testsuite/g++.dg/cpp0x/nsdmi-template25.C deleted file mode 100644 index 368e745540ef..000000000000 --- a/gcc/testsuite/g++.dg/cpp0x/nsdmi-template25.C +++ /dev/null @@ -1,18 +0,0 @@ -// PR c++/106890 -// { dg-do compile { target c++11 } } - -struct A -{ - int p; -}; - -template -struct B : virtual public A -{ - B() { } - B(int) { } - - int k = this->p; -}; - -template struct B;