diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/module.cc | 3 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/modules/static-2_a.H | 8 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/modules/static-2_b.C | 9 |
3 files changed, 20 insertions, 0 deletions
diff --git a/gcc/cp/module.cc b/gcc/cp/module.cc index c5eff21..cb1929b 100644 --- a/gcc/cp/module.cc +++ b/gcc/cp/module.cc @@ -5411,6 +5411,9 @@ trees_out::core_bools (tree t) case VAR_DECL: if (TREE_PUBLIC (t) + && !(TREE_STATIC (t) + && DECL_FUNCTION_SCOPE_P (t) + && DECL_DECLARED_INLINE_P (DECL_CONTEXT (t))) && !DECL_VAR_DECLARED_INLINE_P (t)) is_external = true; break; diff --git a/gcc/testsuite/g++.dg/modules/static-2_a.H b/gcc/testsuite/g++.dg/modules/static-2_a.H new file mode 100644 index 0000000..65c7619 --- /dev/null +++ b/gcc/testsuite/g++.dg/modules/static-2_a.H @@ -0,0 +1,8 @@ +// PR c++/104433 +// { dg-additional-options -fmodule-header } +// { dg-module-cmi {} } + +inline int* f() { + static int y; + return &y; +} diff --git a/gcc/testsuite/g++.dg/modules/static-2_b.C b/gcc/testsuite/g++.dg/modules/static-2_b.C new file mode 100644 index 0000000..bfd35b0 --- /dev/null +++ b/gcc/testsuite/g++.dg/modules/static-2_b.C @@ -0,0 +1,9 @@ +// PR c++/104433 +// { dg-additional-options -fmodules-ts } +// { dg-do link } + +import "static-2_a.H"; + +int main() { + f(); +} |