move TS_EXP to be a substructure of TS_TYPED
authorNathan Froyd <froydnj@codesourcery.com>
Wed, 25 May 2011 12:52:10 +0000 (12:52 +0000)
committerNathan Froyd <froydnj@gcc.gnu.org>
Wed, 25 May 2011 12:52:10 +0000 (12:52 +0000)
move TS_EXP to be a substructure of TS_TYPED
gcc/
* tree.h (struct tree_exp): Inherit from struct tree_typed.
* tree.c (initialize_tree_contains_struct): Mark TS_EXP as TS_TYPED
instead of TS_COMMON.

gcc/lto/
* lto.c (lto_ft_typed): New function.
(lto_ft_common): Call it.
(lto_ft_constructor): Likewise.
(lto_ft_expr): Likewise.
(lto_fixup_prevailing_decls): Check for TS_COMMON before accessing
TREE_CHAIN.

From-SVN: r174192

gcc/ChangeLog
gcc/lto/ChangeLog
gcc/lto/lto.c
gcc/tree.c
gcc/tree.h

index 03f6792099c5b98aff69b3b1ec405cb9af1bac10..8811e14b5a4e07eba2319e4f5384712b8af5c4c6 100644 (file)
@@ -1,3 +1,9 @@
+2011-05-25  Nathan Froyd  <froydnj@codesourcery.com>
+
+       * tree.h (struct tree_exp): Inherit from struct tree_typed.
+       * tree.c (initialize_tree_contains_struct): Mark TS_EXP as TS_TYPED
+       instead of TS_COMMON.
+
 2011-05-25  Bernd Schmidt  <bernds@codesourcery.com>
 
        * libgcc2.h (__NW, __NDW): Define using a __gnu_ prefix if
index 893997a68812d8c1e580718a143253d1cd0a4fab..aa8859c405d8c2f77b33bbf1db892436329d89e8 100644 (file)
@@ -1,3 +1,12 @@
+2011-05-25  Nathan Froyd  <froydnj@codesourcery.com>
+
+       * lto.c (lto_ft_typed): New function.
+       (lto_ft_common): Call it.
+       (lto_ft_constructor): Likewise.
+       (lto_ft_expr): Likewise.
+       (lto_fixup_prevailing_decls): Check for TS_COMMON before accessing
+       TREE_CHAIN.
+
 2011-05-20  Richard Guenther  <rguenther@suse.de>
 
        * lto.c (lto_ft_common): Remove pointer-to chain teardown.
index d64ba18d5921ce2daab485a860f9cb565385c29d..1067b51c9482bc436fd9fd53632156e4b79eb641 100644 (file)
@@ -254,14 +254,20 @@ remember_with_vars (tree t)
 
 static void lto_fixup_types (tree);
 
-/* Fix up fields of a tree_common T.  */
+/* Fix up fields of a tree_typed T.  */
 
 static void
-lto_ft_common (tree t)
+lto_ft_typed (tree t)
 {
-  /* Fixup our type.  */
   LTO_FIXUP_TREE (TREE_TYPE (t));
+}
+
+/* Fix up fields of a tree_common T.  */
 
+static void
+lto_ft_common (tree t)
+{
+  lto_ft_typed (t);
   LTO_FIXUP_TREE (TREE_CHAIN (t));
 }
 
@@ -398,7 +404,7 @@ lto_ft_constructor (tree t)
   unsigned HOST_WIDE_INT idx;
   constructor_elt *ce;
 
-  LTO_FIXUP_TREE (TREE_TYPE (t));
+  lto_ft_typed (t);
 
   for (idx = 0;
        VEC_iterate(constructor_elt, CONSTRUCTOR_ELTS (t), idx, ce);
@@ -415,7 +421,7 @@ static void
 lto_ft_expr (tree t)
 {
   int i;
-  lto_ft_common (t);
+  lto_ft_typed (t);
   for (i = TREE_OPERAND_LENGTH (t) - 1; i >= 0; --i)
     LTO_FIXUP_TREE (TREE_OPERAND (t, i));
 }
@@ -2029,7 +2035,8 @@ lto_fixup_prevailing_decls (tree t)
 {
   enum tree_code code = TREE_CODE (t);
   LTO_NO_PREVAIL (TREE_TYPE (t));
-  LTO_NO_PREVAIL (TREE_CHAIN (t));
+  if (CODE_CONTAINS_STRUCT (code, TS_COMMON))
+    LTO_NO_PREVAIL (TREE_CHAIN (t));
   if (DECL_P (t))
     {
       LTO_NO_PREVAIL (DECL_NAME (t));
index 63f50b0ad41a11d51ffd9ed1415cf2a8710c27ce..1dfad04174aed28dd866a5582902f833b5784fd9 100644 (file)
@@ -380,6 +380,7 @@ initialize_tree_contains_struct (void)
        case TS_COMPLEX:
        case TS_SSA_NAME:
        case TS_CONSTRUCTOR:
+       case TS_EXP:
          MARK_TS_TYPED (code);
          break;
 
@@ -388,7 +389,6 @@ initialize_tree_contains_struct (void)
        case TS_TYPE_COMMON:
        case TS_LIST:
        case TS_VEC:
-       case TS_EXP:
        case TS_BLOCK:
        case TS_BINFO:
        case TS_STATEMENT_LIST:
index 805fe0694fc082935ea20252b8402cfa17a12d4e..142237feb82c08bf8efa151102ed24e3d1f09c87 100644 (file)
@@ -1917,7 +1917,7 @@ enum omp_clause_default_kind
   (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_DEFAULT)->omp_clause.subcode.default_kind)
 
 struct GTY(()) tree_exp {
-  struct tree_common common;
+  struct tree_typed typed;
   location_t locus;
   tree block;
   tree GTY ((special ("tree_exp"),