]> git.ipfire.org Git - thirdparty/gcc.git/commit
c++: Handle partial specialisations in GMF [PR113405]
authorNathaniel Shead <nathanieloshead@gmail.com>
Fri, 19 Jan 2024 11:24:18 +0000 (22:24 +1100)
committerNathaniel Shead <nathanieloshead@gmail.com>
Thu, 25 Jan 2024 03:19:01 +0000 (14:19 +1100)
commit6ff54cc0be8dfa9d9bd5922ec65e86c9eb644711
treeac35cf261caa39675f3b19c8b69069ba5bcc35c0
parentb433a6f5a0617dcbb28f2462b31198f86aadecaa
c++: Handle partial specialisations in GMF [PR113405]

Currently, when exporting names from the GMF, or within header modules,
for a set of constrained partial specialisations we only emit the first
one. This is because the 'type_specialization' list only includes a
single specialization per template+argument list; constraints are not
considered here.

The existing code uses a separate 'partial_specializations' list to
track this instead, but currently it's only used for declarations in the
module purview. This patch makes use of this list for all declarations.

PR c++/113405

gcc/cp/ChangeLog:

* module.cc (set_defining_module): Track partial specialisations
for all declarations.

gcc/testsuite/ChangeLog:

* g++.dg/modules/concept-9.h: New test.
* g++.dg/modules/concept-9_a.C: New test.
* g++.dg/modules/concept-9_b.C: New test.
* g++.dg/modules/concept-10_a.H: New test.
* g++.dg/modules/concept-10_b.C: New test.

Signed-off-by: Nathaniel Shead <nathanieloshead@gmail.com>
gcc/cp/module.cc
gcc/testsuite/g++.dg/modules/concept-10_a.H [new file with mode: 0644]
gcc/testsuite/g++.dg/modules/concept-10_b.C [new file with mode: 0644]
gcc/testsuite/g++.dg/modules/concept-9.h [new file with mode: 0644]
gcc/testsuite/g++.dg/modules/concept-9_a.C [new file with mode: 0644]
gcc/testsuite/g++.dg/modules/concept-9_b.C [new file with mode: 0644]