mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-15 18:01:31 +08:00
* pt.c (instantiate_decl): Fix previous change.
From-SVN: r15888
This commit is contained in:
parent
9cd60aa99b
commit
7ac63bcadb
@ -1,3 +1,7 @@
|
||||
Fri Oct 10 12:21:11 1997 Jason Merrill <jason@yorick.cygnus.com>
|
||||
|
||||
* pt.c (instantiate_decl): Fix previous change.
|
||||
|
||||
Thu Oct 9 12:08:21 1997 Jason Merrill <jason@yorick.cygnus.com>
|
||||
|
||||
* pt.c (tsubst): Fix thinko.
|
||||
|
18
gcc/cp/pt.c
18
gcc/cp/pt.c
@ -623,8 +623,7 @@ check_explicit_specialization (declarator, decl, template_count, flags)
|
||||
member class template of a non-specialized class
|
||||
template is itself a template.
|
||||
|
||||
So, we just leave the template info alone in this case.
|
||||
*/
|
||||
So, we just leave the template info alone in this case. */
|
||||
if (!(DECL_TEMPLATE_INFO (decl) && DECL_TI_TEMPLATE (decl)))
|
||||
DECL_TEMPLATE_INFO (decl)
|
||||
= perm_tree_cons (tmpl, targs, NULL_TREE);
|
||||
@ -4411,9 +4410,6 @@ instantiate_decl (d)
|
||||
int line = lineno;
|
||||
char *file = input_filename;
|
||||
|
||||
if (DECL_TEMPLATE_SPECIALIZATION (d))
|
||||
return d;
|
||||
|
||||
for (td = tmpl; DECL_TEMPLATE_INSTANTIATION (td); )
|
||||
td = DECL_TI_TEMPLATE (td);
|
||||
|
||||
@ -4437,6 +4433,18 @@ instantiate_decl (d)
|
||||
if (d_defined)
|
||||
return d;
|
||||
|
||||
if (TREE_CODE (d) == FUNCTION_DECL)
|
||||
{
|
||||
tree specs;
|
||||
|
||||
/* Check to see if there is a matching specialization. */
|
||||
for (specs = DECL_TEMPLATE_SPECIALIZATIONS (tmpl);
|
||||
specs != NULL_TREE;
|
||||
specs = TREE_CHAIN (specs))
|
||||
if (comp_template_args (TREE_PURPOSE (specs), args))
|
||||
return TREE_VALUE (specs);
|
||||
}
|
||||
|
||||
/* This needs to happen before any tsubsting. */
|
||||
if (! push_tinst_level (d))
|
||||
return d;
|
||||
|
Loading…
x
Reference in New Issue
Block a user