diff --git a/gcc/cp/module.cc b/gcc/cp/module.cc index 350ad15dc62..8db662c0267 100644 --- a/gcc/cp/module.cc +++ b/gcc/cp/module.cc @@ -11703,8 +11703,6 @@ trees_in::read_function_def (tree decl, tree maybe_template) DECL_RESULT (decl) = result; DECL_INITIAL (decl) = initial; DECL_SAVED_TREE (decl) = saved; - if (maybe_dup) - DECL_ARGUMENTS (decl) = DECL_ARGUMENTS (maybe_dup); if (context) SET_DECL_FRIEND_CONTEXT (decl, context); diff --git a/gcc/testsuite/g++.dg/modules/merge-16.h b/gcc/testsuite/g++.dg/modules/merge-16.h new file mode 100644 index 00000000000..fdb38551103 --- /dev/null +++ b/gcc/testsuite/g++.dg/modules/merge-16.h @@ -0,0 +1,10 @@ +// PR c++/112588 + +void f(int*); + +template +struct S { + void g(int n) { f(&n); } +}; + +template struct S; diff --git a/gcc/testsuite/g++.dg/modules/merge-16_a.C b/gcc/testsuite/g++.dg/modules/merge-16_a.C new file mode 100644 index 00000000000..c243224c875 --- /dev/null +++ b/gcc/testsuite/g++.dg/modules/merge-16_a.C @@ -0,0 +1,7 @@ +// PR c++/112588 +// { dg-additional-options "-fmodules-ts" } +// { dg-module-cmi merge16 } + +module; +#include "merge-16.h" +export module merge16; diff --git a/gcc/testsuite/g++.dg/modules/merge-16_b.C b/gcc/testsuite/g++.dg/modules/merge-16_b.C new file mode 100644 index 00000000000..8c7b1f0511f --- /dev/null +++ b/gcc/testsuite/g++.dg/modules/merge-16_b.C @@ -0,0 +1,5 @@ +// PR c++/112588 +// { dg-additional-options "-fmodules-ts" } + +#include "merge-16.h" +import merge16;