OSDN Git Service

* name-lookup.c (leave_scope): We only need to update
authorsayle <sayle@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 7 Dec 2004 14:41:12 +0000 (14:41 +0000)
committersayle <sayle@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 7 Dec 2004 14:41:12 +0000 (14:41 +0000)
class_binding_level when leaving a class scope.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@91807 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/cp/ChangeLog
gcc/cp/name-lookup.c

index 8569e18..dd41800 100644 (file)
@@ -1,3 +1,8 @@
+2004-12-07  Roger Sayle  <roger@eyesopen.com>
+
+       * name-lookup.c (leave_scope): We only need to update
+       class_binding_level when leaving a class scope.
+
 2004-12-06  Ziemowit Laski  <zlaski@apple.com>
 
        * cp-tree.h (struct lang_type_class): Add 'objc_protocols' field.
index 6d5d00d..cfd3890 100644 (file)
@@ -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;
 }