diff options
author | Jakub Jelinek <jakub@redhat.com> | 2011-06-24 23:11:16 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2011-06-24 23:11:16 +0200 |
commit | f796c438809c7afa4788f399d84dbf34a1827cdc (patch) | |
tree | 893d28d35f2b31915308b154ef8b4fdec5ac2a03 /gcc | |
parent | a7289eafc81bd9598a44b4849fa6d07ccf3e7f19 (diff) | |
download | gcc-f796c438809c7afa4788f399d84dbf34a1827cdc.zip gcc-f796c438809c7afa4788f399d84dbf34a1827cdc.tar.gz gcc-f796c438809c7afa4788f399d84dbf34a1827cdc.tar.bz2 |
re PR c++/46400 (g++ Segmentation Fault on heavily templated project.)
PR c++/46400
* cp-tree.h (union lang_tree_node): Use TYPE_NEXT_VARIANT
instead of TYPE_CHAIN for chain_next for types.
* c-decl.c (union lang_tree_node): Use TYPE_NEXT_VARIANT
instead of TYPE_CHAIN for chain_next for types.
From-SVN: r175389
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/c-decl.c | 2 | ||||
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/cp-tree.h | 2 |
4 files changed, 14 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2c9995a..54b8fdb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2011-06-24 Jakub Jelinek <jakub@redhat.com> + + PR c++/46400 + * c-decl.c (union lang_tree_node): Use TYPE_NEXT_VARIANT + instead of TYPE_CHAIN for chain_next for types. + 2011-06-24 Richard Henderson <rth@redhat.com> * config/sparc/sparc.md (create_flat_frame_1<P:mode>): Remove. diff --git a/gcc/c-decl.c b/gcc/c-decl.c index e42a3c5..1c7552b 100644 --- a/gcc/c-decl.c +++ b/gcc/c-decl.c @@ -238,7 +238,7 @@ extern char C_SIZEOF_STRUCT_LANG_IDENTIFIER_isnt_accurate /* The resulting tree type. */ union GTY((desc ("TREE_CODE (&%h.generic) == IDENTIFIER_NODE"), - chain_next ("TREE_CODE (&%h.generic) == INTEGER_TYPE ? (union lang_tree_node *) TYPE_NEXT_VARIANT (&%h.generic) : CODE_CONTAINS_STRUCT (TREE_CODE (&%h.generic), TS_COMMON) ? ((union lang_tree_node *) TREE_CHAIN (&%h.generic)) : NULL"))) lang_tree_node + chain_next ("CODE_CONTAINS_STRUCT (TREE_CODE (&%h.generic), TS_TYPE_COMMON) ? (union lang_tree_node *) TYPE_NEXT_VARIANT (&%h.generic) : CODE_CONTAINS_STRUCT (TREE_CODE (&%h.generic), TS_COMMON) ? ((union lang_tree_node *) TREE_CHAIN (&%h.generic)) : NULL"))) lang_tree_node { union tree_node GTY ((tag ("0"), desc ("tree_node_structure (&%h)"))) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index e860837..ae1a649 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2011-06-24 Jakub Jelinek <jakub@redhat.com> + + PR c++/46400 + * cp-tree.h (union lang_tree_node): Use TYPE_NEXT_VARIANT + instead of TYPE_CHAIN for chain_next for types. + 2011-06-23 Gabriel Charette <gchare@google.com> * name-lookup.h (cp_binding_level): Removed unused diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h index 904e44c..872ff6f 100644 --- a/gcc/cp/cp-tree.h +++ b/gcc/cp/cp-tree.h @@ -729,7 +729,7 @@ enum cp_tree_node_structure_enum { /* The resulting tree type. */ union GTY((desc ("cp_tree_node_structure (&%h)"), - chain_next ("CODE_CONTAINS_STRUCT (TREE_CODE (&%h.generic), TS_COMMON) ? ((union lang_tree_node *) TREE_CHAIN (&%h.generic)) : NULL"))) lang_tree_node { + chain_next ("CODE_CONTAINS_STRUCT (TREE_CODE (&%h.generic), TS_TYPE_COMMON) ? ((union lang_tree_node *) TYPE_NEXT_VARIANT (&%h.generic)) : CODE_CONTAINS_STRUCT (TREE_CODE (&%h.generic), TS_COMMON) ? ((union lang_tree_node *) TREE_CHAIN (&%h.generic)) : NULL"))) lang_tree_node { union tree_node GTY ((tag ("TS_CP_GENERIC"), desc ("tree_node_structure (&%h)"))) generic; struct template_parm_index_s GTY ((tag ("TS_CP_TPI"))) tpi; |