diff options
author | Mark Mitchell <mark@codesourcery.com> | 2004-07-15 16:02:07 +0000 |
---|---|---|
committer | Mark Mitchell <mmitchel@gcc.gnu.org> | 2004-07-15 16:02:07 +0000 |
commit | df05a794c1a6b9c0311513c4b1a8f44eeafdf866 (patch) | |
tree | 54b3c7cb306c30fc8f8fa73afe07a46901451660 /gcc | |
parent | 132c7dd3d966066e2c031b7ed31690b5ec933705 (diff) | |
download | gcc-df05a794c1a6b9c0311513c4b1a8f44eeafdf866.zip gcc-df05a794c1a6b9c0311513c4b1a8f44eeafdf866.tar.gz gcc-df05a794c1a6b9c0311513c4b1a8f44eeafdf866.tar.bz2 |
name-lookup.c (set_inherited_value_binding_p): Add class_type parameter.
* name-lookup.c (set_inherited_value_binding_p): Add class_type
parameter.
(get_class_binding): Adjust.
(push_class_level_binding): Don't use set_inherited_value_binding_p.
From-SVN: r84757
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 10 | ||||
-rw-r--r-- | gcc/cp/name-lookup.c | 22 |
2 files changed, 14 insertions, 18 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 75ae59c..e5c87a6 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,10 @@ +2004-07-15 Mark Mitchell <mark@codesourcery.com> + + * name-lookup.c (set_inherited_value_binding_p): Add class_type + parameter. + (get_class_binding): Adjust. + (push_class_level_binding): Don't use set_inherited_value_binding_p. + 2004-07-15 Nathan Sidwell <nathan@codesourcery.com> * class.c(finish_struct_bits): Don't set TYPE_HAS_CONVERSION here. @@ -11,9 +18,6 @@ 2004-07-14 Mark Mitchell <mark@codesourcery.com> * lex.c (cxx_make_type): Remove call to get_pointer_type. - (set_inherited_value_binding_p): Add class_type parameter. - (get_class_binding): Adjust. - (push_class_level_binding): Don't use set_inherited_value_binding_p. * cp-tree.h (IDENTIFIER_VALUE): Remove. (BINFO_PUSHDECLS_MARKED): Likewise. diff --git a/gcc/cp/name-lookup.c b/gcc/cp/name-lookup.c index 0aff14b..fd3776f 100644 --- a/gcc/cp/name-lookup.c +++ b/gcc/cp/name-lookup.c @@ -2640,10 +2640,11 @@ poplevel_class (void) /* Set INHERITED_VALUE_BINDING_P on BINDING to true or false, as appropriate. DECL is the value to which a name has just been - bound. */ + bound. CLASS_TYPE is the class in which the lookup occurred. */ static void -set_inherited_value_binding_p (cxx_binding *binding, tree decl) +set_inherited_value_binding_p (cxx_binding *binding, tree decl, + tree class_type) { if (binding->value == decl && TREE_CODE (decl) != TREE_LIST) { @@ -2657,7 +2658,7 @@ set_inherited_value_binding_p (cxx_binding *binding, tree decl) context = context_for_name_lookup (decl); } - if (is_properly_derived_from (current_class_type, context)) + if (is_properly_derived_from (class_type, context)) INHERITED_VALUE_BINDING_P (binding) = 1; else INHERITED_VALUE_BINDING_P (binding) = 0; @@ -2766,7 +2767,7 @@ get_class_binding (tree name, cxx_scope *scope) scope); /* This is a class-scope binding, not a block-scope binding. */ LOCAL_BINDING_P (binding) = 0; - set_inherited_value_binding_p (binding, value_binding); + set_inherited_value_binding_p (binding, value_binding, class_type); } else binding = NULL; @@ -2888,13 +2889,8 @@ push_class_level_binding (tree name, tree x) { binding->value = x; /* It is always safe to clear INHERITED_VALUE_BINDING_P - here. That flag is only set when setup_class_bindings - inserts a binding from a base class, and - setup_class_bindings only inserts a binding once for - every name declared in the class and its base classes. - So, if we see a second binding for this name, it must be - coming from a definition in the body of the class - itself. */ + here. This function is only used to register bindings + from with the class definition itself. */ INHERITED_VALUE_BINDING_P (binding) = 0; POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, true); } @@ -2918,10 +2914,6 @@ push_class_level_binding (tree name, tree x) ok = true; } - /* Determine whether or not this binding is from a base class. */ - binding = IDENTIFIER_BINDING (name); - set_inherited_value_binding_p (binding, decl); - POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, ok); } |