lto-streamer-out.c (hash_tree): Do not stream TYPE_ALIAS_SET.
authorJan Hubicka <hubicka@ucw.cz>
Tue, 1 Dec 2015 19:13:12 +0000 (20:13 +0100)
committerJan Hubicka <hubicka@gcc.gnu.org>
Tue, 1 Dec 2015 19:13:12 +0000 (19:13 +0000)
* lto-streamer-out.c (hash_tree): Do not stream TYPE_ALIAS_SET.
* tree-streamer-out.c (pack_ts_type_common_value_fields): Do not
stream TYPE_ALIAS_SET.
* tree-streamer-in.c (unpack_ts_type_common_value_fields): Do not
stream TYPE_ALIAS_SET.

* lto.c (compare_tree_sccs_1): Do not compare TYPE_ALIAS_SET.

From-SVN: r231124

gcc/ChangeLog
gcc/lto-streamer-out.c
gcc/lto/ChangeLog
gcc/lto/lto.c
gcc/tree-streamer-in.c
gcc/tree-streamer-out.c

index 94bde391bb3dcc6219c58439140d18026adaf8d8..d5aa3d6e3c80b6facd5ccaabf5e9f8563060f611 100644 (file)
@@ -1,3 +1,11 @@
+2015-12-01  Jan Hubicka  <hubicka@ucw.cz>
+
+       * lto-streamer-out.c (hash_tree): Do not stream TYPE_ALIAS_SET.
+       * tree-streamer-out.c (pack_ts_type_common_value_fields): Do not
+       stream TYPE_ALIAS_SET.
+       * tree-streamer-in.c (unpack_ts_type_common_value_fields): Do not
+       stream TYPE_ALIAS_SET.
+
 2015-12-01  Nathan Sidwell  <nathan@acm.org>
 
        * config/nvptx/nvptx.c (nvptx_function_arg_advance): Don't
index 0d610f166bc006134c4788bfa943f6482f189eeb..8928873bcc2be6d26ce20fbf8e7cb6c8a4ba15e8 100644 (file)
@@ -1109,10 +1109,6 @@ hash_tree (struct streamer_tree_cache_d *cache, hash_map<tree, hashval_t> *map,
       hstate.commit_flag ();
       hstate.add_int (TYPE_PRECISION (t));
       hstate.add_int (TYPE_ALIGN (t));
-      hstate.add_int ((TYPE_ALIAS_SET (t) == 0
-                                        || (!in_lto_p
-                                            && get_alias_set (t) == 0))
-                                       ? 0 : -1);
     }
 
   if (CODE_CONTAINS_STRUCT (code, TS_TRANSLATION_UNIT_DECL))
index 1ddacfa158f802126512d13590a2bfa63bdc1a46..a508999e0f6558f3e374f0c9bf17852d2f2b5244 100644 (file)
@@ -1,3 +1,7 @@
+2015-12-01  Jan Hubicka  <hubicka@ucw.cz>
+
+       * lto.c (compare_tree_sccs_1): Do not compare TYPE_ALIAS_SET.
+
 2015-11-25  Jan Hubicka  <jh@suse.cz>
 
        * lto-lang.c (lto_post_options): Process flag_lto_linker_output.
index b1e2d6e8090cdd3b7819c1e4cd40de74f6ac58b5..dcfa3c868f34b5b7ce0149f0d0f70eef8c0d0467 100644 (file)
@@ -1166,7 +1166,9 @@ compare_tree_sccs_1 (tree t1, tree t2, tree **map)
       compare_values (TYPE_READONLY);
       compare_values (TYPE_PRECISION);
       compare_values (TYPE_ALIGN);
-      compare_values (TYPE_ALIAS_SET);
+      /* Do not compare TYPE_ALIAS_SET.  Doing so introduce ordering issues
+         with calls to get_alias_set which may initialize it for streamed
+        in types.  */
     }
 
   /* We don't want to compare locations, so there is nothing do compare
index 7eeab8a2a29ecd4c1647f9b1008185d55f5c3a73..3162d1ae2b5ad600eceb0ae9bc0cbdeff1b05a7c 100644 (file)
@@ -366,7 +366,6 @@ unpack_ts_type_common_value_fields (struct bitpack_d *bp, tree expr)
   TYPE_RESTRICT (expr) = (unsigned) bp_unpack_value (bp, 1);
   TYPE_USER_ALIGN (expr) = (unsigned) bp_unpack_value (bp, 1);
   TYPE_READONLY (expr) = (unsigned) bp_unpack_value (bp, 1);
-  TYPE_ALIAS_SET (expr) = bp_unpack_value (bp, 1) ? 0 : -1;
   if (RECORD_OR_UNION_TYPE_P (expr))
     {
       TYPE_TRANSPARENT_AGGR (expr) = (unsigned) bp_unpack_value (bp, 1);
index ab9b747663573bc5cfa377c2255b401ee9b597d1..bfd06449ecbc9bbe2cfe2e28fc44c8c783f1fbbe 100644 (file)
@@ -317,13 +317,9 @@ pack_ts_type_common_value_fields (struct bitpack_d *bp, tree expr)
   bp_pack_value (bp, TYPE_RESTRICT (expr), 1);
   bp_pack_value (bp, TYPE_USER_ALIGN (expr), 1);
   bp_pack_value (bp, TYPE_READONLY (expr), 1);
-  /* Make sure to preserve the fact whether the frontend would assign
-     alias-set zero to this type.  Do that only for main variants, because
-     type variants alias sets are never computed.
-     FIXME:  This does not work for pre-streamed builtin types.  */
-  bp_pack_value (bp, (TYPE_ALIAS_SET (expr) == 0
-                     || (!in_lto_p && TYPE_MAIN_VARIANT (expr) == expr
-                         && get_alias_set (expr) == 0)), 1);
+  /* We used to stream TYPE_ALIAS_SET == 0 information to let frontends mark
+     types that are opaque for TBAA.  This however did not work as intended,
+     becuase TYPE_ALIAS_SET == 0 was regularly lost in type merging.  */
   if (RECORD_OR_UNION_TYPE_P (expr))
     {
       bp_pack_value (bp, TYPE_TRANSPARENT_AGGR (expr), 1);