From 726723c476800285cfbdfce612cedde4a9a7ad58 Mon Sep 17 00:00:00 2001 From: Nathaniel Shead Date: Wed, 15 Nov 2023 20:50:53 +1100 Subject: c++: Allow exporting const-qualified namespace-scope variables [PR99232] By [basic.link] p3.2.1, a non-template non-volatile const-qualified variable is not necessarily internal linkage in a module declaration, and rather may have module linkage (or external linkage if it is exported, see p4.8). PR c++/99232 gcc/cp/ChangeLog: * decl.cc (grokvardecl): Don't mark variables attached to modules as internal. gcc/testsuite/ChangeLog: * g++.dg/modules/pr99232_a.C: New test. * g++.dg/modules/pr99232_b.C: New test. Signed-off-by: Nathaniel Shead --- gcc/cp/decl.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'gcc/cp') diff --git a/gcc/cp/decl.cc b/gcc/cp/decl.cc index 16b04eb..ed14015 100644 --- a/gcc/cp/decl.cc +++ b/gcc/cp/decl.cc @@ -11006,7 +11006,8 @@ grokvardecl (tree type, && (DECL_THIS_EXTERN (decl) || ! constp || volatilep - || inlinep)); + || inlinep + || module_attach_p ())); TREE_STATIC (decl) = ! DECL_EXTERNAL (decl); } /* Not at top level, only `static' makes a static definition. */ -- cgit v1.1