diff options
author | ak <ak@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-09-01 17:03:56 +0000 |
---|---|---|
committer | ak <ak@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-09-01 17:03:56 +0000 |
commit | 99afbe939664c43a1504a6a98910c398ccd37ac2 (patch) | |
tree | 064dbf63a148604e479e053c3b0c4f5af02cbefa /gcc/lto-streamer-out.c | |
parent | cef2cf9642ff80c4caef6af4c07a930812760c78 (diff) | |
download | gcc-99afbe939664c43a1504a6a98910c398ccd37ac2.tar.gz |
2010-09-01 Andi Kleen <ak@linux.intel.com>
PR lto/45475
* lto-streamer-in.c (lto_input_ts_target_option): Add.
(lto_input_tree_pointers): Call lto_input_ts_target_option.
* lto-streamer-out: (lto_output_ts_target_option): Add.
(lto_output_tree_pointers): Call lto_output_ts_target_option.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@163740 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/lto-streamer-out.c')
-rw-r--r-- | gcc/lto-streamer-out.c | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/gcc/lto-streamer-out.c b/gcc/lto-streamer-out.c index dde86b94595..80d818c6d1c 100644 --- a/gcc/lto-streamer-out.c +++ b/gcc/lto-streamer-out.c @@ -1105,6 +1105,26 @@ lto_output_ts_constructor_tree_pointers (struct output_block *ob, tree expr, } } +/* Write a TS_TARGET_OPTION tree in EXPR to OB. */ + +static void +lto_output_ts_target_option (struct output_block *ob, tree expr) +{ + struct cl_target_option *t = TREE_TARGET_OPTION (expr); + struct bitpack_d bp; + 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. */ + + bp = bitpack_create (ob->main_stream); + 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); + lto_output_bitpack (&bp); +} /* Helper for lto_output_tree. Write all pointer fields in EXPR to output block OB. If REF_P is true, the leaves of EXPR are emitted as @@ -1187,7 +1207,7 @@ lto_output_tree_pointers (struct output_block *ob, tree expr, bool ref_p) sorry ("gimple bytecode streams do not support the optimization attribute"); if (CODE_CONTAINS_STRUCT (code, TS_TARGET_OPTION)) - sorry ("gimple bytecode streams do not support the target attribute"); + lto_output_ts_target_option (ob, expr); } |