From: nathan Date: Mon, 8 Jan 2001 11:30:22 +0000 (+0000) Subject: cp: X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=39aab94d752a88173459097c74adf433db4aef1f;p=thirdparty%2Fgcc.git cp: * decl.c (struct binding_level): Adjust class_shadowed comments to reflect reality. (push_class_level_binding): Ajust comments to reflect reality. Set IDENTIFIER_CLASS_VALUE when replacing an existing binding. Don't set TREE_VALUE on the class_shadowed list. testsuite: * g++.old-deja/g++.other/lookup16.C: Remove XFAIL. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@38796 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 0f4e41c18a51..9e4b99edcb98 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,11 @@ +2001-01-08 Nathan Sidwell + + * decl.c (struct binding_level): Adjust class_shadowed comments + to reflect reality. + (push_class_level_binding): Ajust comments to reflect reality. + Set IDENTIFIER_CLASS_VALUE when replacing an existing binding. + Don't set TREE_VALUE on the class_shadowed list. + 2001-01-07 Mark Mitchell * decl2.c (grokfield): Don't accept `asm' specifiers for diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 636b50c43d6e..e15e77c479b9 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -391,15 +391,13 @@ struct binding_level /* If this binding level is the binding level for a class, then class_shadowed is a TREE_LIST. The TREE_PURPOSE of each node - is the name of an entity bound in the class; the TREE_VALUE is - the IDENTIFIER_CLASS_VALUE before we entered the class. Thus, - when leaving class scope, we can restore the - IDENTIFIER_CLASS_VALUE by walking this list. The TREE_TYPE is + is the name of an entity bound in the class. The TREE_TYPE is the DECL bound by this name in the class. */ tree class_shadowed; /* Similar to class_shadowed, but for IDENTIFIER_TYPE_VALUE, and - is used for all binding levels. */ + is used for all binding levels. In addition the TREE_VALUE is the + IDENTIFIER_TYPE_VALUE before we entered the class. */ tree type_shadowed; /* A TREE_LIST. Each TREE_VALUE is the LABEL_DECL for a local @@ -4408,9 +4406,8 @@ push_class_level_binding (name, x) else old_decl = BINDING_VALUE (binding); - /* There was already a binding for X containing fewer - functions than are named in X. Find the previous - declaration of X on the class-shadowed list, and update it. */ + /* Find the previous binding of name on the class-shadowed + list, and update it. */ for (shadow = class_binding_level->class_shadowed; shadow; shadow = TREE_CHAIN (shadow)) @@ -4420,17 +4417,17 @@ push_class_level_binding (name, x) BINDING_VALUE (binding) = x; INHERITED_VALUE_BINDING_P (binding) = 0; TREE_TYPE (shadow) = x; + IDENTIFIER_CLASS_VALUE (name) = x; return; } } /* If we didn't replace an existing binding, put the binding on the - stack of bindings for the identifier, and update - IDENTIFIER_CLASS_VALUE. */ + stack of bindings for the identifier, and update the shadowed list. */ if (push_class_binding (name, x)) { class_binding_level->class_shadowed - = tree_cons (name, IDENTIFIER_CLASS_VALUE (name), + = tree_cons (name, NULL, class_binding_level->class_shadowed); /* Record the value we are binding NAME to so that we can know what to pop later. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 87b4b6f6cec5..0e7dd5ac5aa1 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2001-01-08 Nathan Sidwell + + * g++.old-deja/g++.other/lookup16.C: Remove XFAIL. + 2001-01-07 Kaveh R. Ghazi * gcc.c-torture/execute/stdio-opt-3.c: New test. diff --git a/gcc/testsuite/g++.old-deja/g++.other/lookup16.C b/gcc/testsuite/g++.old-deja/g++.other/lookup16.C index 32fc477a6183..150eb07aa0d0 100644 --- a/gcc/testsuite/g++.old-deja/g++.other/lookup16.C +++ b/gcc/testsuite/g++.old-deja/g++.other/lookup16.C @@ -2,11 +2,10 @@ // Copyright (C) 1999 Free Software Foundation, Inc. // Contributed by Nathan Sidwell 25 Aug 1999 +// Bug 3 // typenames are not injected early enough, [basic.scope.pdecl]3.3.1/4 // indicates this should compile. -// excess errors test - XFAIL - struct A { };