aboutsummaryrefslogtreecommitdiff
path: root/gcc/recog.c
diff options
context:
space:
mode:
authorNathan Sidwell <nathan@acm.org>2021-03-18 05:12:59 -0700
committerNathan Sidwell <nathan@acm.org>2021-03-22 08:26:57 -0700
commit87e3c2ef682e2ba7692ee56142a4eb5b6441c4d3 (patch)
tree81c3b97add2b26466f93f5a2fa226b30258d91aa /gcc/recog.c
parent150a829accd76ddd73c20628774cb0781f6e8bfe (diff)
downloadgcc-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