diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 3a70d2e9e43..d667193871e 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,15 @@ 2003-12-21 Mark Mitchell + * cp-tree.h (cp_tree_index): Remove CPTI_RECORD_TYPE, + CPTI_UNION_TYPE, CPTI_ENUM_TYPE. + (record_type_node): Remove. + (union_type_node): Likewise. + (enum_type_node): Likewise. + * decl.c: Remove mention of above tree nodes in comment. + * lex.c (cxx_init): Do not assign to record_type_node, + union_type_node, or enum_type_node. Simplify handling of + class_type_node. + PR c++/11554 * init.c (sort_mem_initializers): Add warning. diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h index 5c491f02233..5dbd102baa2 100644 --- a/gcc/cp/cp-tree.h +++ b/gcc/cp/cp-tree.h @@ -521,9 +521,6 @@ enum cp_tree_index CPTI_BASE_DESC_TYPE, CPTI_CLASS_TYPE, - CPTI_RECORD_TYPE, - CPTI_UNION_TYPE, - CPTI_ENUM_TYPE, CPTI_UNKNOWN_TYPE, CPTI_VTBL_TYPE, CPTI_VTBL_PTR_TYPE, @@ -602,9 +599,6 @@ extern GTY(()) tree cp_global_trees[CPTI_MAX]; #define base_desc_type_node cp_global_trees[CPTI_BASE_DESC_TYPE] #define class_type_node cp_global_trees[CPTI_CLASS_TYPE] -#define record_type_node cp_global_trees[CPTI_RECORD_TYPE] -#define union_type_node cp_global_trees[CPTI_UNION_TYPE] -#define enum_type_node cp_global_trees[CPTI_ENUM_TYPE] #define unknown_type_node cp_global_trees[CPTI_UNKNOWN_TYPE] #define vtbl_type_node cp_global_trees[CPTI_VTBL_TYPE] #define vtbl_ptr_type_node cp_global_trees[CPTI_VTBL_PTR_TYPE] diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 47ad1682d0c..c4b9df7b49b 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -140,7 +140,7 @@ tree error_mark_list; tree ptm_desc_type_node; tree base_desc_type_node; - tree class_type_node, record_type_node, union_type_node, enum_type_node; + tree class_type_node; tree unknown_type_node; Array type `vtable_entry_type[]' diff --git a/gcc/cp/lex.c b/gcc/cp/lex.c index d1a67b64d7f..b2d2f1c31fd 100644 --- a/gcc/cp/lex.c +++ b/gcc/cp/lex.c @@ -405,21 +405,7 @@ cxx_init (void) current_function_decl = NULL; - class_type_node = build_int_2 (class_type, 0); - TREE_TYPE (class_type_node) = class_type_node; - ridpointers[(int) RID_CLASS] = class_type_node; - - record_type_node = build_int_2 (record_type, 0); - TREE_TYPE (record_type_node) = record_type_node; - ridpointers[(int) RID_STRUCT] = record_type_node; - - union_type_node = build_int_2 (union_type, 0); - TREE_TYPE (union_type_node) = union_type_node; - ridpointers[(int) RID_UNION] = union_type_node; - - enum_type_node = build_int_2 (enum_type, 0); - TREE_TYPE (enum_type_node) = enum_type_node; - ridpointers[(int) RID_ENUM] = enum_type_node; + class_type_node = ridpointers[(int) RID_CLASS]; cxx_init_decl_processing (); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 46d665b01b9..d96d8c678f6 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2003-12-21 Mark Mitchell + PR c++/13438 + * g++.dg/parse/error8.C: New test. + PR c++/11554 * testsuite/g++.dg/warn/ctor-init-1.C: New test. diff --git a/gcc/testsuite/g++.dg/parse/error8.C b/gcc/testsuite/g++.dg/parse/error8.C new file mode 100644 index 00000000000..125f2e42c6b --- /dev/null +++ b/gcc/testsuite/g++.dg/parse/error8.C @@ -0,0 +1,4 @@ +// PR c++/13438 + +struct A { friend typename struct B; }; // { dg-error "" } +