[C++ PATCH] Fix bug 1728
Nathan Sidwell
nathan@codesourcery.com
Tue Jan 23 02:45:00 GMT 2001
Hi,
I've installed the attached patch which fixes the incredibly fragile
assumption that DECL_LANG_SPECIFIC (decl) == NULL had some semantic meaning.
At 7 members we add a sorted array into DECL_LANG_SPECIFIC, making it
non-null!
built & tested on i686-pc-linux-gnu, approved by Mark.
nathan
--
Dr Nathan Sidwell :: http://www.codesourcery.com :: CodeSourcery LLC
'But that's a lie.' - 'Yes it is. What's your point?'
nathan@codesourcery.com : http://www.cs.bris.ac.uk/~nathan/ : nathan@acm.org
2001-01-22 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.
Index: cp/decl.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/cp/decl.c,v
retrieving revision 1.739
diff -c -3 -p -r1.739 decl.c
*** decl.c 2001/01/19 09:24:12 1.739
--- decl.c 2001/01/22 16:43:09
*************** grokdeclarator (declarator, declspecs, d
*** 10807,10820 ****
the definition of `S<int>::f'. */
if (CLASSTYPE_TEMPLATE_INFO (t)
&& (CLASSTYPE_TEMPLATE_INSTANTIATION (t)
! || uses_template_parms (CLASSTYPE_TI_ARGS (t))))
template_count += 1;
t = TYPE_MAIN_DECL (t);
! if (DECL_LANG_SPECIFIC (t))
! t = DECL_CONTEXT (t);
! else
! t = NULL_TREE;
}
if (sname == NULL_TREE)
--- 10807,10818 ----
the definition of `S<int>::f'. */
if (CLASSTYPE_TEMPLATE_INFO (t)
&& (CLASSTYPE_TEMPLATE_INSTANTIATION (t)
! || uses_template_parms (CLASSTYPE_TI_ARGS (t)))
! && PRIMARY_TEMPLATE_P (CLASSTYPE_TI_TEMPLATE (t)))
template_count += 1;
t = TYPE_MAIN_DECL (t);
! t = DECL_CONTEXT (t);
}
if (sname == NULL_TREE)
More information about the Gcc-patches
mailing list