Commit 8c86248e by Jan Hubicka Committed by Jan Hubicka

lto-streamer-out.c (hash_tree): Do not stream TYPE_ALIAS_SET.

	* 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
parent ac856078
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> 2015-12-01 Nathan Sidwell <nathan@acm.org>
* config/nvptx/nvptx.c (nvptx_function_arg_advance): Don't * config/nvptx/nvptx.c (nvptx_function_arg_advance): Don't
...@@ -1109,10 +1109,6 @@ hash_tree (struct streamer_tree_cache_d *cache, hash_map<tree, hashval_t> *map, ...@@ -1109,10 +1109,6 @@ hash_tree (struct streamer_tree_cache_d *cache, hash_map<tree, hashval_t> *map,
hstate.commit_flag (); hstate.commit_flag ();
hstate.add_int (TYPE_PRECISION (t)); hstate.add_int (TYPE_PRECISION (t));
hstate.add_int (TYPE_ALIGN (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)) if (CODE_CONTAINS_STRUCT (code, TS_TRANSLATION_UNIT_DECL))
......
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> 2015-11-25 Jan Hubicka <jh@suse.cz>
* lto-lang.c (lto_post_options): Process flag_lto_linker_output. * lto-lang.c (lto_post_options): Process flag_lto_linker_output.
......
...@@ -1166,7 +1166,9 @@ compare_tree_sccs_1 (tree t1, tree t2, tree **map) ...@@ -1166,7 +1166,9 @@ compare_tree_sccs_1 (tree t1, tree t2, tree **map)
compare_values (TYPE_READONLY); compare_values (TYPE_READONLY);
compare_values (TYPE_PRECISION); compare_values (TYPE_PRECISION);
compare_values (TYPE_ALIGN); 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 /* We don't want to compare locations, so there is nothing do compare
......
...@@ -366,7 +366,6 @@ unpack_ts_type_common_value_fields (struct bitpack_d *bp, tree expr) ...@@ -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_RESTRICT (expr) = (unsigned) bp_unpack_value (bp, 1);
TYPE_USER_ALIGN (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_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)) if (RECORD_OR_UNION_TYPE_P (expr))
{ {
TYPE_TRANSPARENT_AGGR (expr) = (unsigned) bp_unpack_value (bp, 1); TYPE_TRANSPARENT_AGGR (expr) = (unsigned) bp_unpack_value (bp, 1);
......
...@@ -317,13 +317,9 @@ pack_ts_type_common_value_fields (struct bitpack_d *bp, tree expr) ...@@ -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_RESTRICT (expr), 1);
bp_pack_value (bp, TYPE_USER_ALIGN (expr), 1); bp_pack_value (bp, TYPE_USER_ALIGN (expr), 1);
bp_pack_value (bp, TYPE_READONLY (expr), 1); bp_pack_value (bp, TYPE_READONLY (expr), 1);
/* Make sure to preserve the fact whether the frontend would assign /* We used to stream TYPE_ALIAS_SET == 0 information to let frontends mark
alias-set zero to this type. Do that only for main variants, because types that are opaque for TBAA. This however did not work as intended,
type variants alias sets are never computed. becuase TYPE_ALIAS_SET == 0 was regularly lost in type merging. */
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);
if (RECORD_OR_UNION_TYPE_P (expr)) if (RECORD_OR_UNION_TYPE_P (expr))
{ {
bp_pack_value (bp, TYPE_TRANSPARENT_AGGR (expr), 1); bp_pack_value (bp, TYPE_TRANSPARENT_AGGR (expr), 1);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment