diff options
author | Nathan Sidwell <nathan@acm.org> | 2021-03-11 05:39:11 -0800 |
---|---|---|
committer | Nathan Sidwell <nathan@acm.org> | 2021-03-11 09:49:39 -0800 |
commit | edc61d34eb4212d5547e9f628b5f7f4d15ee0060 (patch) | |
tree | 645163bb20843b306d0580f3f92a692b057ce381 /gcc/ada/gcc-interface/utils.c | |
parent | 52db241345a81207681733c5316b6fbf44596ac0 (diff) | |
download | gcc-edc61d34eb4212d5547e9f628b5f7f4d15ee0060.zip gcc-edc61d34eb4212d5547e9f628b5f7f4d15ee0060.tar.gz gcc-edc61d34eb4212d5547e9f628b5f7f4d15ee0060.tar.bz2 |
c++: template partial instantiation mismatch [PR 99528]
This turned out to be an existing problem, which had been hidden by
other bugs. Templated members of templated classes can end up
instantiating the template itself, and we were not handling the
mergeableness of that correctly.
PR c++/99528
gcc/cp/
* module.cc (enum merge_kind): Delete MK_type_tmpl_spec,
MK_decl_tmpl_spec.
(trees_in::decl_value): Adjust add_mergeable_specialization call.
(trees_out::get_merge_kind): Adjust detecting a partial template
instantiation.
(trees_out::key_mergeable): Adjust handling same.
(trees_in::key_mergeabvle): Likewise.
gcc/testsuite/
* g++.dg/modules/pr99528.h: New.
* g++.dg/modules/pr99528_a.H: New.
* g++.dg/modules/pr99528_b.H: New.
* g++.dg/modules/pr99528_c.C: New.
Diffstat (limited to 'gcc/ada/gcc-interface/utils.c')
0 files changed, 0 insertions, 0 deletions