c++: Only emit exported GMF usings [PR114600]
A typo in r14-6978 made us emit too many things. This ensures that we
don't emit using-declarations from the GMF that we don't need to.
PR c++/114600
gcc/cp/ChangeLog:
* module.cc (depset:#️⃣:add_binding_entity): Require both
WMB_Using and WMB_Export for GMF entities.
gcc/testsuite/ChangeLog:
* g++.dg/modules/using-14.C: New test.
Signed-off-by: Nathaniel Shead <nathanieloshead@gmail.com>
Co-authored-by: Patrick Palka <ppalka@redhat.com>
This commit is contained in:
parent
fe99ab1f5e
commit
3878e9aeb3
2 changed files with 15 additions and 1 deletions
|
@ -13090,7 +13090,7 @@ depset::hash::add_binding_entity (tree decl, WMB_Flags flags, void *data_)
|
|||
inner = DECL_TEMPLATE_RESULT (inner);
|
||||
|
||||
if ((!DECL_LANG_SPECIFIC (inner) || !DECL_MODULE_PURVIEW_P (inner))
|
||||
&& !(flags & (WMB_Using | WMB_Export)))
|
||||
&& !((flags & WMB_Using) && (flags & WMB_Export)))
|
||||
/* Ignore global module fragment entities unless explicitly
|
||||
exported with a using declaration. */
|
||||
return false;
|
||||
|
|
14
gcc/testsuite/g++.dg/modules/using-14.C
Normal file
14
gcc/testsuite/g++.dg/modules/using-14.C
Normal file
|
@ -0,0 +1,14 @@
|
|||
// PR c++/114600
|
||||
// { dg-additional-options "-fmodules-ts -Wno-global-module -fdump-lang-module" }
|
||||
// { dg-module-cmi M }
|
||||
|
||||
module;
|
||||
namespace std {
|
||||
template<class T> struct A { int n; };
|
||||
template<class T> A<T> f();
|
||||
namespace __swappable_details { using std::f; }
|
||||
}
|
||||
export module M;
|
||||
|
||||
// The whole GMF should be discarded here
|
||||
// { dg-final { scan-lang-dump "Wrote 0 clusters" module } }
|
Loading…
Add table
Reference in a new issue