diff options
author | Andi Kleen <ak@linux.intel.com> | 2010-09-01 17:03:56 +0000 |
---|---|---|
committer | Andi Kleen <ak@gcc.gnu.org> | 2010-09-01 17:03:56 +0000 |
commit | 427eb57db6fd5cd7e46da432e2ea46dc1be92905 (patch) | |
tree | 064dbf63a148604e479e053c3b0c4f5af02cbefa /gcc/lto-streamer-in.c | |
parent | f39168b3e7d50cf6d35020923b5a40164ad7b155 (diff) | |
download | gcc-427eb57db6fd5cd7e46da432e2ea46dc1be92905.zip gcc-427eb57db6fd5cd7e46da432e2ea46dc1be92905.tar.gz gcc-427eb57db6fd5cd7e46da432e2ea46dc1be92905.tar.bz2 |
re PR target/45475 (target attribute use in libcpp breaks LTO bootstrap)
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.
From-SVN: r163740
Diffstat (limited to 'gcc/lto-streamer-in.c')
-rw-r--r-- | gcc/lto-streamer-in.c | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/gcc/lto-streamer-in.c b/gcc/lto-streamer-in.c index 9ee1510..14d87ed 100644 --- a/gcc/lto-streamer-in.c +++ b/gcc/lto-streamer-in.c @@ -2197,6 +2197,23 @@ lto_input_ts_constructor_tree_pointers (struct lto_input_block *ib, } +/* Input a TS_TARGET_OPTION tree from IB into EXPR. */ + +static void +lto_input_ts_target_option (struct lto_input_block *ib, tree expr) +{ + unsigned i, len; + struct bitpack_d bp; + struct cl_target_option *t = TREE_TARGET_OPTION (expr); + + bp = lto_input_bitpack (ib); + 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"); +} + /* Helper for lto_input_tree. Read all pointer fields in EXPR from input block IB. DATA_IN contains tables and descriptors for the file being read. */ @@ -2281,9 +2298,7 @@ lto_input_tree_pointers (struct lto_input_block *ib, struct data_in *data_in, } if (CODE_CONTAINS_STRUCT (code, TS_TARGET_OPTION)) - { - sorry ("target optimization options not supported yet"); - } + lto_input_ts_target_option (ib, expr); } |