From 13a269a015f888a0001af7b9ab564fadbee4a808 Mon Sep 17 00:00:00 2001 From: Jason Merrill Date: Thu, 4 May 2023 10:26:25 -0400 Subject: [PATCH] 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. --- gcc/cp/init.cc | 14 -------------- gcc/testsuite/g++.dg/cpp0x/nsdmi-template25.C | 18 ------------------ 2 files changed, 32 deletions(-) delete mode 100644 gcc/testsuite/g++.dg/cpp0x/nsdmi-template25.C 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; -- 2.47.3