aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMark Mitchell <mark@codesourcery.com>2004-07-15 16:02:07 +0000
committerMark Mitchell <mmitchel@gcc.gnu.org>2004-07-15 16:02:07 +0000
commitdf05a794c1a6b9c0311513c4b1a8f44eeafdf866 (patch)
tree54b3c7cb306c30fc8f8fa73afe07a46901451660 /gcc
parent132c7dd3d966066e2c031b7ed31690b5ec933705 (diff)
downloadgcc-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/ChangeLog10
-rw-r--r--gcc/cp/name-lookup.c22
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);
}