This patch adds functions which simplify auto_vec<int> LTO streaming
inside callback-info.cc. The functions are redundant for just the one
vector, but I am creating them in advance, as I am adding an another
vector field into callback_info in a different patch. That way, the
code stays nice and tidy.
gcc/ChangeLog:
* callback-info.cc (stream_vector_out): New function, streams an
auto_vec into an LTO output block.
(stream_vector_in): New function, reads an auto_vec from an LTO
input block.
(callback_info::stream_out): Use stream_vector_out.
(callback_info::stream_in): Use stream_vector_in.
Signed-off-by: Josef Melcr <[email protected]>
---
gcc/callback-info.cc | 40 ++++++++++++++++++++++++++--------------
1 file changed, 26 insertions(+), 14 deletions(-)
diff --git a/gcc/callback-info.cc b/gcc/callback-info.cc
index b277f37154e..a16b3642469 100644
--- a/gcc/callback-info.cc
+++ b/gcc/callback-info.cc
@@ -38,16 +38,36 @@
callback_info_sum_t *callback_info_sum = NULL;
+/* Streams a vector into an output block, in format N ELEM_1 ... ELEM_N*/
+static void
+stream_vector_out (lto_simple_output_block *ob, const auto_vec<int> &v)
+{
+ streamer_write_uhwi_stream (ob->main_stream, v.length ());
+ for (int elem : v)
+ streamer_write_hwi_stream (ob->main_stream, elem);
+}
+
+/* Reads a vector from an LTO input block. The format is supposed to be the
+ same as stream_vector_out. */
+static void
+stream_vector_in (lto_input_block *ib, auto_vec<int> &v)
+{
+ unsigned length = streamer_read_uhwi (ib);
+ v.reserve (length);
+
+ for (unsigned i = 0; i < length; i++)
+ {
+ int elem = streamer_read_hwi (ib);
+ v.safe_push (elem);
+ }
+}
+
/* Stream out callback_info. */
void
callback_info::stream_out (lto_simple_output_block *ob) const
{
streamer_write_uhwi_stream (ob->main_stream, fn_idx);
- streamer_write_uhwi_stream (ob->main_stream, arg_mapping.length ());
-
- for (int idx : arg_mapping)
- streamer_write_hwi_stream (ob->main_stream, idx);
-
+ stream_vector_out (ob, arg_mapping);
bitpack_d bp = bitpack_create (ob->main_stream);
bp_pack_value (&bp, redirected, 1);
streamer_write_bitpack (&bp);
@@ -58,15 +78,7 @@ void
callback_info::stream_in (lto_input_block *ib)
{
fn_idx = streamer_read_uhwi (ib);
- unsigned length = streamer_read_uhwi (ib);
- arg_mapping.reserve (length);
-
- for (unsigned i = 0; i < length; i++)
- {
- int idx = streamer_read_hwi (ib);
- arg_mapping.safe_push (idx);
- }
-
+ stream_vector_in (ib, arg_mapping);
bitpack_d bp = streamer_read_bitpack (ib);
redirected = bp_unpack_value (&bp, 1);
}
--
2.55.0