aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-streamer-out.c
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2014-02-14 12:03:43 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2014-02-14 12:03:43 +0000
commit1966fd99d822c06cbfb667806ba8bcf1fecaef58 (patch)
tree454195ec49d533fd5e1c98718baec5b7168b1341 /gcc/tree-streamer-out.c
parentb010d6017560bcc12beaf0c65ada17f878fa4f72 (diff)
downloadgcc-1966fd99d822c06cbfb667806ba8bcf1fecaef58.zip
gcc-1966fd99d822c06cbfb667806ba8bcf1fecaef58.tar.gz
gcc-1966fd99d822c06cbfb667806ba8bcf1fecaef58.tar.bz2
re PR target/60179 (target optimization attribute streaming is broken)
2014-02-14 Richard Biener <rguenther@suse.de> PR lto/60179 * lto-streamer-out.c (DFS_write_tree_body): Do not follow DECL_FUNCTION_SPECIFIC_TARGET. (hash_tree): Do not hash DECL_FUNCTION_SPECIFIC_TARGET. * tree-streamer-out.c (pack_ts_target_option): Remove. (streamer_pack_tree_bitfields): Do not stream TS_TARGET_OPTION. (write_ts_function_decl_tree_pointers): Do not stream DECL_FUNCTION_SPECIFIC_TARGET. * tree-streamer-in.c (unpack_ts_target_option): Remove. (unpack_value_fields): Do not stream TS_TARGET_OPTION. (lto_input_ts_function_decl_tree_pointers): Do not stream DECL_FUNCTION_SPECIFIC_TARGET. lto/ * lto.c (compare_tree_sccs_1): Do not compare DECL_FUNCTION_SPECIFIC_TARGET. (lto_read_decls): Re-build DECL_FUNCTION_SPECIFIC_TARGET. From-SVN: r207783
Diffstat (limited to 'gcc/tree-streamer-out.c')
-rw-r--r--gcc/tree-streamer-out.c22
1 files changed, 2 insertions, 20 deletions
diff --git a/gcc/tree-streamer-out.c b/gcc/tree-streamer-out.c
index a4d943b..646fba5 100644
--- a/gcc/tree-streamer-out.c
+++ b/gcc/tree-streamer-out.c
@@ -353,24 +353,6 @@ pack_ts_translation_unit_decl_value_fields (struct output_block *ob,
bp_pack_string (ob, bp, TRANSLATION_UNIT_LANGUAGE (expr), true);
}
-/* Pack a TS_TARGET_OPTION tree in EXPR to BP. */
-
-static void
-pack_ts_target_option (struct bitpack_d *bp, tree expr)
-{
- struct cl_target_option *t = TREE_TARGET_OPTION (expr);
- unsigned i, len;
-
- /* The cl_target_option is target specific and generated by the options
- awk script, so we just recreate a byte-by-byte copy here. */
-
- len = sizeof (struct cl_target_option);
- for (i = 0; i < len; i++)
- bp_pack_value (bp, ((unsigned char *)t)[i], 8);
- /* Catch struct size mismatches between reader and writer. */
- bp_pack_value (bp, 0x12345678, 32);
-}
-
/* Pack a TS_OPTIMIZATION tree in EXPR to BP. */
static void
@@ -481,7 +463,7 @@ streamer_pack_tree_bitfields (struct output_block *ob,
pack_ts_translation_unit_decl_value_fields (ob, bp, expr);
if (CODE_CONTAINS_STRUCT (code, TS_TARGET_OPTION))
- pack_ts_target_option (bp, expr);
+ gcc_unreachable ();
if (CODE_CONTAINS_STRUCT (code, TS_OPTIMIZATION))
pack_ts_optimization (bp, expr);
@@ -716,7 +698,7 @@ write_ts_function_decl_tree_pointers (struct output_block *ob, tree expr,
/* DECL_STRUCT_FUNCTION is handled by lto_output_function. FIXME lto,
maybe it should be handled here? */
stream_write_tree (ob, DECL_FUNCTION_PERSONALITY (expr), ref_p);
- stream_write_tree (ob, DECL_FUNCTION_SPECIFIC_TARGET (expr), ref_p);
+ /* DECL_FUNCTION_SPECIFIC_TARGET is regenerated. */
stream_write_tree (ob, DECL_FUNCTION_SPECIFIC_OPTIMIZATION (expr), ref_p);
}