https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89744

--- Comment #4 from Jason Merrill <jason at gcc dot gnu.org> ---
Author: jason
Date: Sat Mar 30 15:23:37 2019
New Revision: 270036

URL: https://gcc.gnu.org/viewcvs?rev=270036&root=gcc&view=rev
Log:
        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.

Added:
    trunk/gcc/testsuite/g++.dg/template/mem-spec1.C
Modified:
    trunk/gcc/cp/ChangeLog
    trunk/gcc/cp/cp-tree.h
    trunk/gcc/cp/pt.c

Reply via email to