diff options
author | hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-11-14 15:48:47 +0000 |
---|---|---|
committer | hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-11-14 15:48:47 +0000 |
commit | 0fd940518db70893a0a2082c5c2a25bbd908e60c (patch) | |
tree | 0e2bcb2312d855afe5e9758f5e7a00527e326393 | |
parent | ab90b67e5730e294179da11c4fa1680cc19febf5 (diff) | |
download | gcc-0fd940518db70893a0a2082c5c2a25bbd908e60c.tar.gz |
* optc-save-gen.awk: Output cl_target_option_eq,
cl_target_option_hash, cl_target_option_stream_out,
cl_target_option_stream_in functions.
* opth-gen.awk: Output prototypes for
cl_target_option_eq and cl_target_option_hash.
* lto-streamer.h (cl_target_option_stream_out,
cl_target_option_stream_in): Declare.
* tree.c (cl_option_hash_hash): Use cl_target_option_hash.
(cl_option_hash_eq): Use cl_target_option_eq.
* tree-streamer-in.c (unpack_value_fields): Stream in
TREE_TARGET_OPTION.
* lto-streamer-out.c (DFS::DFS_write_tree_body): Follow
DECL_FUNCTION_SPECIFIC_TARGET.
(hash_tree): Hash TREE_TARGET_OPTION; visit
DECL_FUNCTION_SPECIFIC_TARGET.
* tree-streamer-out.c (streamer_pack_tree_bitfields): Skip
TS_TARGET_OPTION.
(streamer_write_tree_body): Output TS_TARGET_OPTION.
* lto.c (compare_tree_sccs_1): Compare cl_target_option_eq.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217572 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/lto-streamer-out.c | 6 | ||||
-rw-r--r-- | gcc/lto-streamer.h | 8 |
2 files changed, 11 insertions, 3 deletions
diff --git a/gcc/lto-streamer-out.c b/gcc/lto-streamer-out.c index 98ee44d91cc..f376a30dac0 100644 --- a/gcc/lto-streamer-out.c +++ b/gcc/lto-streamer-out.c @@ -594,7 +594,7 @@ DFS::DFS_write_tree_body (struct output_block *ob, { DFS_follow_tree_edge (DECL_VINDEX (expr)); DFS_follow_tree_edge (DECL_FUNCTION_PERSONALITY (expr)); - /* Do not DECL_FUNCTION_SPECIFIC_TARGET. They will be regenerated. */ + DFS_follow_tree_edge (DECL_FUNCTION_SPECIFIC_TARGET (expr)); DFS_follow_tree_edge (DECL_FUNCTION_SPECIFIC_OPTIMIZATION (expr)); } @@ -945,7 +945,7 @@ hash_tree (struct streamer_tree_cache_d *cache, hash_map<tree, hashval_t> *map, strlen (TRANSLATION_UNIT_LANGUAGE (t))); if (CODE_CONTAINS_STRUCT (code, TS_TARGET_OPTION)) - gcc_unreachable (); + hstate.add_wide_int (cl_target_option_hash (TREE_TARGET_OPTION (t))); if (CODE_CONTAINS_STRUCT (code, TS_OPTIMIZATION)) hstate.add (t, sizeof (struct cl_optimization)); @@ -1028,7 +1028,7 @@ hash_tree (struct streamer_tree_cache_d *cache, hash_map<tree, hashval_t> *map, { visit (DECL_VINDEX (t)); visit (DECL_FUNCTION_PERSONALITY (t)); - /* Do not follow DECL_FUNCTION_SPECIFIC_TARGET. */ + visit (DECL_FUNCTION_SPECIFIC_TARGET (t)); visit (DECL_FUNCTION_SPECIFIC_OPTIMIZATION (t)); } diff --git a/gcc/lto-streamer.h b/gcc/lto-streamer.h index f5b67abd468..8e5ee628e12 100644 --- a/gcc/lto-streamer.h +++ b/gcc/lto-streamer.h @@ -836,6 +836,14 @@ bool reachable_from_this_partition_p (struct cgraph_node *, lto_symtab_encoder_t compute_ltrans_boundary (lto_symtab_encoder_t encoder); void select_what_to_stream (bool); +/* In options-save.c. */ +void cl_target_option_stream_out (struct output_block *, struct bitpack_d *, + struct cl_target_option *); + +void cl_target_option_stream_in (struct data_in *, + struct bitpack_d *, + struct cl_target_option *); + /* In lto-symtab.c. */ extern void lto_symtab_merge_decls (void); |