re PR c++/46400 (g++ Segmentation Fault on heavily templated project.)
authorJakub Jelinek <jakub@redhat.com>
Fri, 24 Jun 2011 21:11:16 +0000 (23:11 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Fri, 24 Jun 2011 21:11:16 +0000 (23:11 +0200)
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

gcc/ChangeLog
gcc/c-decl.c
gcc/cp/ChangeLog
gcc/cp/cp-tree.h

index 2c9995a8e66c2c56b3375d7b2213825d644c5e16..54b8fdba271f6cf756c1d7749e052b59b0f92cb2 100644 (file)
@@ -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.
index e42a3c54b4e4e5187ef39f1f321dc6ef7529c6b8..1c7552b7589bf31b639b2429f36e88218b5be8cd 100644 (file)
@@ -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)")))
index e860837f4e83e0383e928b541883d0bd835f7294..ae1a64958b869a0795a16c6f93e01ff5429d0b7a 100644 (file)
@@ -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
index 904e44c77b16076d2232ff30c31d77a27e7c130d..872ff6ffe89a21e0dcf7f1aed6c50a0461cae761 100644 (file)
@@ -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;