PR c++/89744 - ICE with specialization of member class template.
authorJason Merrill <jason@redhat.com>
Sat, 30 Mar 2019 15:23:37 +0000 (11:23 -0400)
committerJason Merrill <jason@gcc.gnu.org>
Sat, 30 Mar 2019 15:23:37 +0000 (11:23 -0400)
commit26b81a446f6e333bb5e80d40eb467260948ee79e
treecc213e86d10404931ff5de25e16bc3f1e5268a10
parent5c95b82b6172424908142c65a9c5c6d619e9579a
PR c++/89744 - ICE with specialization of member class template.

My fix five years ago for PR 60241 was incomplete: when we reassign implicit
instances of a partial instantiation of a member template to the explicit
specialization of that partial instantiation, we also need to adjust the
CLASSTYPE_TI_ARGS to match what we'd get when looking up that instance after
the explicit specialization.  We also need to do this when we later look up
the instance in a way that only finds the explicit specialization halfway
through lookup_template_class_1.

* pt.c (lookup_template_class_1): If the partial instantiation is
explicitly specialized, adjust.
(maybe_process_partial_specialization): Also adjust
CLASSTYPE_TI_ARGS.

From-SVN: r270036
gcc/cp/ChangeLog
gcc/cp/cp-tree.h
gcc/cp/pt.c
gcc/testsuite/g++.dg/template/mem-spec1.C [new file with mode: 0644]