re PR c++/3761 (ICE in check_template_shadow, at cp/pt.c:2013, with friend and strange class hierarchy)
PR c++/3761 * name-lookup.c (push_class_level_binding): Don't pass a TREE_LIST of ambiguous names to check_template_shadow as it only handles declarations. Instead, pull the declaration out and pass that. PR c++/3761 * g++.dg/lookup/crash4.C: New test. From-SVN: r84045
This commit is contained in:
parent
50c6431753
commit
ece95d900e
|
@ -1,3 +1,11 @@
|
||||||
|
2004-07-03 Scott Brumbaugh <scottb.lists@verizon.net>
|
||||||
|
|
||||||
|
PR c++/3761
|
||||||
|
* name-lookup.c (push_class_level_binding): Don't pass a
|
||||||
|
TREE_LIST of ambiguous names to check_template_shadow as it
|
||||||
|
only handles declarations. Instead, pull the declaration
|
||||||
|
out and pass that.
|
||||||
|
|
||||||
2004-07-03 Giovanni Bajo <giovannibajo@gcc.gnu.org>
|
2004-07-03 Giovanni Bajo <giovannibajo@gcc.gnu.org>
|
||||||
|
|
||||||
PR c++/14971
|
PR c++/14971
|
||||||
|
|
|
@ -2777,7 +2777,18 @@ push_class_level_binding (tree name, tree x)
|
||||||
/* Make sure that this new member does not have the same name
|
/* Make sure that this new member does not have the same name
|
||||||
as a template parameter. */
|
as a template parameter. */
|
||||||
if (TYPE_BEING_DEFINED (current_class_type))
|
if (TYPE_BEING_DEFINED (current_class_type))
|
||||||
check_template_shadow (x);
|
{
|
||||||
|
tree decl = x;
|
||||||
|
|
||||||
|
/* We could have been passed a tree list if this is an ambiguous
|
||||||
|
declaration. If so, pull the declaration out because
|
||||||
|
check_template_shadow will not handle a TREE_LIST. */
|
||||||
|
if (TREE_CODE (decl) == TREE_LIST
|
||||||
|
&& TREE_TYPE (decl) == error_mark_node)
|
||||||
|
decl = TREE_VALUE (decl);
|
||||||
|
|
||||||
|
check_template_shadow (decl);
|
||||||
|
}
|
||||||
|
|
||||||
/* [class.mem]
|
/* [class.mem]
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
|
2004-07-03 Scott Brumbaugh <scottb.lists@verizon.net>
|
||||||
|
|
||||||
|
PR c++/3761
|
||||||
|
* g++.dg/lookup/crash4.C: New test.
|
||||||
|
|
||||||
2004-07-02 Zack Weinberg <zack@codesourcery.com>
|
2004-07-02 Zack Weinberg <zack@codesourcery.com>
|
||||||
|
|
||||||
* gcc.c-torture/execute/builtin-abs-1.c
|
* gcc.c-torture/execute/builtin-abs-1.c
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
// { dg-do compile }
|
||||||
|
//
|
||||||
|
// PR 3761
|
||||||
|
|
||||||
|
struct A {};
|
||||||
|
|
||||||
|
struct B {};
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
struct Foo : A, B
|
||||||
|
{
|
||||||
|
void func(void);
|
||||||
|
|
||||||
|
struct Nested
|
||||||
|
{
|
||||||
|
friend void Foo::func(void);
|
||||||
|
};
|
||||||
|
};
|
Loading…
Reference in New Issue