diff options
author | Mark Mitchell <mark@codesourcery.com> | 2003-12-22 08:03:15 +0000 |
---|---|---|
committer | Mark Mitchell <mmitchel@gcc.gnu.org> | 2003-12-22 08:03:15 +0000 |
commit | 9e62871ee9f5f2ed5ee3c4651ef2123388a82028 (patch) | |
tree | bb774da8c6d8443c62f2648a3e7403ef81c74e8c /gcc | |
parent | 439a7e544da9c5f6e9c1b14ec054e3bdda7eddc2 (diff) | |
download | gcc-9e62871ee9f5f2ed5ee3c4651ef2123388a82028.zip gcc-9e62871ee9f5f2ed5ee3c4651ef2123388a82028.tar.gz gcc-9e62871ee9f5f2ed5ee3c4651ef2123388a82028.tar.bz2 |
re PR c++/13438 (internal compiler error: tree check: expected identifier_node, have integer_cst in c_parse_error at c-common.c:5921)
PR c++/13438
* 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++/13438
* g++.dg/parse/error8.C: New test.
From-SVN: r74931
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 10 | ||||
-rw-r--r-- | gcc/cp/cp-tree.h | 6 | ||||
-rw-r--r-- | gcc/cp/decl.c | 2 | ||||
-rw-r--r-- | gcc/cp/lex.c | 16 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/parse/error8.C | 4 |
6 files changed, 19 insertions, 22 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 3a70d2e..d667193 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,15 @@ 2003-12-21 Mark Mitchell <mark@codesourcery.com> + * 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 5c491f0..5dbd102 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 47ad168..c4b9df7 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 d1a67b6..b2d2f1c 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 46d665b0..d96d8c6 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2003-12-21 Mark Mitchell <mark@codesourcery.com> + 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 0000000..125f2e4 --- /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 "" } + |