diff options
author | Richard Biener <rguenther@suse.de> | 2014-02-14 12:03:43 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2014-02-14 12:03:43 +0000 |
commit | 1966fd99d822c06cbfb667806ba8bcf1fecaef58 (patch) | |
tree | 454195ec49d533fd5e1c98718baec5b7168b1341 /gcc/tree-streamer-in.c | |
parent | b010d6017560bcc12beaf0c65ada17f878fa4f72 (diff) | |
download | gcc-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-in.c')
-rw-r--r-- | gcc/tree-streamer-in.c | 19 |
1 files changed, 2 insertions, 17 deletions
diff --git a/gcc/tree-streamer-in.c b/gcc/tree-streamer-in.c index 8227a01..b02bb6b 100644 --- a/gcc/tree-streamer-in.c +++ b/gcc/tree-streamer-in.c @@ -394,21 +394,6 @@ unpack_ts_translation_unit_decl_value_fields (struct data_in *data_in, vec_safe_push (all_translation_units, expr); } -/* Unpack a TS_TARGET_OPTION tree from BP into EXPR. */ - -static void -unpack_ts_target_option (struct bitpack_d *bp, tree expr) -{ - unsigned i, len; - struct cl_target_option *t = TREE_TARGET_OPTION (expr); - - len = sizeof (struct cl_target_option); - for (i = 0; i < len; i++) - ((unsigned char *)t)[i] = bp_unpack_value (bp, 8); - if (bp_unpack_value (bp, 32) != 0x12345678) - fatal_error ("cl_target_option size mismatch in LTO reader and writer"); -} - /* Unpack a TS_OPTIMIZATION tree from BP into EXPR. */ static void @@ -517,7 +502,7 @@ unpack_value_fields (struct data_in *data_in, struct bitpack_d *bp, tree expr) unpack_ts_translation_unit_decl_value_fields (data_in, bp, expr); if (CODE_CONTAINS_STRUCT (code, TS_TARGET_OPTION)) - unpack_ts_target_option (bp, expr); + gcc_unreachable (); if (CODE_CONTAINS_STRUCT (code, TS_OPTIMIZATION)) unpack_ts_optimization (bp, expr); @@ -796,7 +781,7 @@ lto_input_ts_function_decl_tree_pointers (struct lto_input_block *ib, /* DECL_STRUCT_FUNCTION is handled by lto_input_function. FIXME lto, maybe it should be handled here? */ DECL_FUNCTION_PERSONALITY (expr) = stream_read_tree (ib, data_in); - DECL_FUNCTION_SPECIFIC_TARGET (expr) = stream_read_tree (ib, data_in); + /* DECL_FUNCTION_SPECIFIC_TARGET is regenerated from attributes. */ DECL_FUNCTION_SPECIFIC_OPTIMIZATION (expr) = stream_read_tree (ib, data_in); /* If the file contains a function with an EH personality set, |