decl.c (grokdeclarator): Don't presume DECL_LANG_SPECIFIC indicates anything special about template depth.
cp: * decl.c (grokdeclarator): Don't presume DECL_LANG_SPECIFIC indicates anything special about template depth. Make sure we only count the user visible template classes. testsuite: * g++.old-deja/g++.pt/spec37.C: New test. From-SVN: r39198
This commit is contained in:
parent
4cff6abe40
commit
92ecdfb74c
@ -1,3 +1,9 @@
|
||||
2001-01-23 Nathan Sidwell <nathan@codesourcery.com>
|
||||
|
||||
* decl.c (grokdeclarator): Don't presume DECL_LANG_SPECIFIC
|
||||
indicates anything special about template depth. Make sure we
|
||||
only count the user visible template classes.
|
||||
|
||||
2001-01-23 Nathan Sidwell <nathan@codesourcery.com>
|
||||
|
||||
* call.c (build_conv): Typo in comment.
|
||||
|
@ -10807,14 +10807,12 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
|
||||
the definition of `S<int>::f'. */
|
||||
if (CLASSTYPE_TEMPLATE_INFO (t)
|
||||
&& (CLASSTYPE_TEMPLATE_INSTANTIATION (t)
|
||||
|| uses_template_parms (CLASSTYPE_TI_ARGS (t))))
|
||||
|| uses_template_parms (CLASSTYPE_TI_ARGS (t)))
|
||||
&& PRIMARY_TEMPLATE_P (CLASSTYPE_TI_TEMPLATE (t)))
|
||||
template_count += 1;
|
||||
|
||||
t = TYPE_MAIN_DECL (t);
|
||||
if (DECL_LANG_SPECIFIC (t))
|
||||
t = DECL_CONTEXT (t);
|
||||
else
|
||||
t = NULL_TREE;
|
||||
t = DECL_CONTEXT (t);
|
||||
}
|
||||
|
||||
if (sname == NULL_TREE)
|
||||
|
@ -1,3 +1,7 @@
|
||||
2001-01-23 Nathan Sidwell <nathan@codesourcery.com>
|
||||
|
||||
* g++.old-deja/g++.pt/spec37.C: New test.
|
||||
|
||||
2001-01-23 Nathan Sidwell <nathan@codesourcery.com>
|
||||
|
||||
* g++.old-deja/g++.pt/overload14.C: New test.
|
||||
|
25
gcc/testsuite/g++.old-deja/g++.pt/spec37.C
Normal file
25
gcc/testsuite/g++.old-deja/g++.pt/spec37.C
Normal file
@ -0,0 +1,25 @@
|
||||
// Build don't link:
|
||||
//
|
||||
// Copyright (C) 2000 Free Software Foundation, Inc.
|
||||
// Contributed by Nathan Sidwell 21 Jan 2001 <nathan@codesourcery.com>
|
||||
|
||||
// Bug 1728. We started sorting things when there were 7 fields. Our
|
||||
// template_count algorithm was rather fragile ...
|
||||
|
||||
template <int dim> struct X
|
||||
{
|
||||
struct Y
|
||||
{
|
||||
int x1;
|
||||
int x2;
|
||||
int x3;
|
||||
int x4;
|
||||
int x5;
|
||||
int x6;
|
||||
int x7;
|
||||
|
||||
void Foo ();
|
||||
};
|
||||
};
|
||||
|
||||
template <> void X<1>::Y::Foo () {}
|
Loading…
Reference in New Issue
Block a user