diff options
author | Nathan Sidwell <nathan@acm.org> | 2021-03-18 05:12:59 -0700 |
---|---|---|
committer | Nathan Sidwell <nathan@acm.org> | 2021-03-22 08:26:57 -0700 |
commit | 87e3c2ef682e2ba7692ee56142a4eb5b6441c4d3 (patch) | |
tree | 81c3b97add2b26466f93f5a2fa226b30258d91aa /gcc/recog.c | |
parent | 150a829accd76ddd73c20628774cb0781f6e8bfe (diff) | |
download | gcc-87e3c2ef682e2ba7692ee56142a4eb5b6441c4d3.zip gcc-87e3c2ef682e2ba7692ee56142a4eb5b6441c4d3.tar.gz gcc-87e3c2ef682e2ba7692ee56142a4eb5b6441c4d3.tar.bz2 |
c++: duplicate alias templates with decltype [PR 99425]
This failure was ultimately from incorrect handling of alias
templates, but required a specific set of occurrences to happen in the
specialization hash table. This cleans up the specialization
streaming to add alias instantiations at the same point as other
instantiations. I also removed some unneeded global variables dealing
with mapping of duplicate decl contexts.
PR c++/99425
gcc/cp/
* cp-tree.h (map_context_from, map_context_to): Delete.
(add_mergeable_specialization): Add is_alias parm.
* pt.c (add_mergeable_specialization): Add is_alias parm, add them.
* module.cc (map_context_from, map_context_to): Delete.
(trees_in::decl_value): Add specializations later, adjust call.
Drop useless alias lookup. Set duplicate fn parm context.
(check_mergeable_decl): Drop context mapping.
(trees_in::is_matching_decl): Likewise.
(trees_in::read_function_def): Drop parameter context adjustment
here.
gcc/testsuite/
* g++.dg/modules/pr99425-1.h: New.
* g++.dg/modules/pr99425-1_a.H: New.
* g++.dg/modules/pr99425-1_b.H: New.
* g++.dg/modules/pr99425-1_c.C: New.
* g++.dg/modules/pr99425-2_a.X: New.
* g++.dg/modules/pr99425-2_b.X: New.
* g++.dg/template/pr99425.C: New.
Diffstat (limited to 'gcc/recog.c')
0 files changed, 0 insertions, 0 deletions