aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJan Hubicka <hubicka@gcc.gnu.org>2014-11-14 15:48:47 +0000
committerJan Hubicka <hubicka@gcc.gnu.org>2014-11-14 15:48:47 +0000
commit325fe981b522bcf20b6cd03a052d92a11ed399c2 (patch)
tree0e2bcb2312d855afe5e9758f5e7a00527e326393 /gcc
parent54e774c010842d336124426aec671a96712cc1d7 (diff)
downloadgcc-325fe981b522bcf20b6cd03a052d92a11ed399c2.zip
gcc-325fe981b522bcf20b6cd03a052d92a11ed399c2.tar.gz
gcc-325fe981b522bcf20b6cd03a052d92a11ed399c2.tar.bz2
optc-save-gen.awk: Output cl_target_option_eq...
* 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. From-SVN: r217572
Diffstat (limited to 'gcc')
-rw-r--r--gcc/lto-streamer-out.c6
-rw-r--r--gcc/lto-streamer.h8
2 files changed, 11 insertions, 3 deletions
diff --git a/gcc/lto-streamer-out.c b/gcc/lto-streamer-out.c
index 98ee44d..f376a30 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 f5b67ab..8e5ee62 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);