aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/gcc-interface/utils.c
diff options
context:
space:
mode:
authorNathan Sidwell <nathan@acm.org>2021-03-11 05:39:11 -0800
committerNathan Sidwell <nathan@acm.org>2021-03-11 09:49:39 -0800
commitedc61d34eb4212d5547e9f628b5f7f4d15ee0060 (patch)
tree645163bb20843b306d0580f3f92a692b057ce381 /gcc/ada/gcc-interface/utils.c
parent52db241345a81207681733c5316b6fbf44596ac0 (diff)
downloadgcc-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