From df867456d79fcb8d136e9e64e6caff4435eb5ca7 Mon Sep 17 00:00:00 2001 From: Nathan Sidwell Date: Tue, 12 Mar 2002 23:32:47 +0000 Subject: re PR c++/5659 (default access for class/struct bug) cp: PR c++/5659 * decl.c (xref_tag): Don't set CLASSTYPE_DECLARED_CLASS here. * decl2.c (handle_class_head): Set CLASSTYPE_DECLARED_CLASS for definitions. testsuite: * g++.dg/other/access1.C: New test. From-SVN: r50692 --- gcc/cp/decl2.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'gcc/cp/decl2.c') diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index 71dc388..8841dec 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -5252,7 +5252,13 @@ handle_class_head (aggr, scope, id, defn_p, new_type_p) && TREE_CODE (context) != BOUND_TEMPLATE_TEMPLATE_PARM); if (*new_type_p) push_scope (context); - + + if (TREE_CODE (TREE_TYPE (decl)) == RECORD_TYPE) + /* It is legal to define a class with a different class key, + and this changes the default member access. */ + CLASSTYPE_DECLARED_CLASS (TREE_TYPE (decl)) + = aggr == class_type_node; + if (!xrefd_p && PROCESSING_REAL_TEMPLATE_DECL_P ()) decl = push_template_decl (decl); } -- cgit v1.1