decl.c (pushtag): Don't mangle the name of a TYPE_DECL if it uses template parameters.
authorMark Mitchell <mark@markmitchell.com>
Tue, 4 Aug 1998 11:46:41 +0000 (11:46 +0000)
committerMark Mitchell <mmitchel@gcc.gnu.org>
Tue, 4 Aug 1998 11:46:41 +0000 (11:46 +0000)
commite4a84209743bde2f3de26ed67193708e98224f7f
tree6d41a333fd86ba17254ebabc966afa6b506dd6e0
parentbe5ceb725bcd4a27928d767fa27c8f198f24bca8
decl.c (pushtag): Don't mangle the name of a TYPE_DECL if it uses template parameters.

* decl.c (pushtag): Don't mangle the name of a TYPE_DECL if it
uses template parameters.
* method.c (build_template_parm_names): Use the full set of
template arguments for tsubst'ing.
(build_overload_identifier): Pass the full set of template
arguments to build_template_parm_names, not just the
innermost_args.
* pt.c (TMPL_ARGS_DEPTH): Define using
TMPL_ARGS_HAVE_MULTIPLE_LEVELS, for clarity.
(NUM_TMPL_ARGS): New macro.
(add_outermost_template_args): Deal with the case where the outer
args will be completely discarded.
(coerce_template_parms): Use the full set of template arguments
for tsubst'ing.  Simplify.  Add some asserts.  Improve
error messages.
(lookup_template_class): Pass the full set of template arguments
to coerce_template_parms.
(tsubst): Add assertion.
(do_type_instantiation): Don't instantiate member template
classes.
* init.c (build_offset_ref): Deal with a TEMPLATE_ID_EXPR whose
name is a LOOKUP_EXPR, rather than an IDENTIFIER_NODE.

From-SVN: r21609
gcc/cp/ChangeLog
gcc/cp/decl.c
gcc/cp/init.c
gcc/cp/method.c
gcc/cp/pt.c
gcc/testsuite/g++.old-deja/g++.pt/crash18.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/memclass16.C [new file with mode: 0644]