From: Roger Sayle Date: Tue, 7 Dec 2004 14:41:12 +0000 (+0000) Subject: name-lookup.c (leave_scope): We only need to update class_binding_level when leaving... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=5423d7ebe17465199c4c9c35167c8042dd47b911;p=gcc.git name-lookup.c (leave_scope): We only need to update class_binding_level when leaving a class scope. * name-lookup.c (leave_scope): We only need to update class_binding_level when leaving a class scope. From-SVN: r91807 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 8569e1815cb..dd41800eb07 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2004-12-07 Roger Sayle + + * name-lookup.c (leave_scope): We only need to update + class_binding_level when leaving a class scope. + 2004-12-06 Ziemowit Laski * cp-tree.h (struct lang_type_class): Add 'objc_protocols' field. diff --git a/gcc/cp/name-lookup.c b/gcc/cp/name-lookup.c index 6d5d00deb15..cfd3890cea7 100644 --- a/gcc/cp/name-lookup.c +++ b/gcc/cp/name-lookup.c @@ -1329,11 +1329,16 @@ leave_scope (void) /* Find the innermost enclosing class scope, and reset CLASS_BINDING_LEVEL appropriately. */ - for (scope = current_binding_level; - scope && scope->kind != sk_class; - scope = scope->level_chain) - ; - class_binding_level = scope && scope->kind == sk_class ? scope : NULL; + if (scope->kind == sk_class) + { + class_binding_level = NULL; + for (scope = current_binding_level; scope; scope = scope->level_chain) + if (scope->kind == sk_class) + { + class_binding_level = scope; + break; + } + } return current_binding_level; }