This renames lto_output_data_stream to streamer_write_data_stream and moves it, together with lto_append_block, to data-streamer-out.[ch] where it belongs.
Bootstrapped and tested on x86_64-unknown-linux-gnu, applied. Richard. 2014-07-31 Richard Biener <rguent...@suse.de> * data-streamer.h (streamer_write_data_stream): Declare here, renamed from ... * lto-streamer.h (lto_output_data_stream): ... this. Remove. * lto-cgraph.c (lto_output_node): Adjust. (lto_output_varpool_node): Likewise. * data-streamer-out.c (streamer_string_index): Likewise. (streamer_write_data_stream, lto_append_block): Move from ... * lto-section-out.c (lto_output_data_stream, lto_append_block): ... here. Index: gcc/data-streamer.h =================================================================== *** gcc/data-streamer.h (revision 213253) --- gcc/data-streamer.h (working copy) *************** void streamer_write_uhwi_stream (struct *** 70,75 **** --- 70,77 ---- unsigned HOST_WIDE_INT); void streamer_write_hwi_stream (struct lto_output_stream *, HOST_WIDE_INT); void streamer_write_gcov_count_stream (struct lto_output_stream *, gcov_type); + void streamer_write_data_stream (struct lto_output_stream *, const void *, + size_t); /* In data-streamer-in.c */ const char *string_for_index (struct data_in *, unsigned int, unsigned int *); Index: gcc/lto-streamer.h =================================================================== *** gcc/lto-streamer.h (revision 213253) --- gcc/lto-streamer.h (working copy) *************** extern void lto_begin_section (const cha *** 779,786 **** extern void lto_end_section (void); extern void lto_write_data (const void *, unsigned int); extern void lto_write_stream (struct lto_output_stream *); - extern void lto_output_data_stream (struct lto_output_stream *, const void *, - size_t); extern bool lto_output_decl_index (struct lto_output_stream *, struct lto_tree_ref_encoder *, tree, unsigned int *); --- 779,784 ---- Index: gcc/lto-cgraph.c =================================================================== *** gcc/lto-cgraph.c (revision 213253) --- gcc/lto-cgraph.c (working copy) *************** lto_output_node (struct lto_simple_outpu *** 488,494 **** comdat = IDENTIFIER_POINTER (group); else comdat = ""; ! lto_output_data_stream (ob->main_stream, comdat, strlen (comdat) + 1); if (group) { --- 488,494 ---- comdat = IDENTIFIER_POINTER (group); else comdat = ""; ! streamer_write_data_stream (ob->main_stream, comdat, strlen (comdat) + 1); if (group) { *************** lto_output_node (struct lto_simple_outpu *** 546,552 **** bp_pack_enum (&bp, ld_plugin_symbol_resolution, LDPR_NUM_KNOWN, node->resolution); streamer_write_bitpack (&bp); ! lto_output_data_stream (ob->main_stream, section, strlen (section) + 1); if (node->thunk.thunk_p && !boundary_p) { --- 546,552 ---- bp_pack_enum (&bp, ld_plugin_symbol_resolution, LDPR_NUM_KNOWN, node->resolution); streamer_write_bitpack (&bp); ! streamer_write_data_stream (ob->main_stream, section, strlen (section) + 1); if (node->thunk.thunk_p && !boundary_p) { *************** lto_output_varpool_node (struct lto_simp *** 622,628 **** comdat = IDENTIFIER_POINTER (group); else comdat = ""; ! lto_output_data_stream (ob->main_stream, comdat, strlen (comdat) + 1); if (group) { --- 622,628 ---- comdat = IDENTIFIER_POINTER (group); else comdat = ""; ! streamer_write_data_stream (ob->main_stream, comdat, strlen (comdat) + 1); if (group) { *************** lto_output_varpool_node (struct lto_simp *** 640,646 **** section = node->get_section (); if (!section) section = ""; ! lto_output_data_stream (ob->main_stream, section, strlen (section) + 1); streamer_write_enum (ob->main_stream, ld_plugin_symbol_resolution, LDPR_NUM_KNOWN, node->resolution); --- 640,646 ---- section = node->get_section (); if (!section) section = ""; ! streamer_write_data_stream (ob->main_stream, section, strlen (section) + 1); streamer_write_enum (ob->main_stream, ld_plugin_symbol_resolution, LDPR_NUM_KNOWN, node->resolution); Index: gcc/data-streamer-out.c =================================================================== *** gcc/data-streamer-out.c (revision 213253) --- gcc/data-streamer-out.c (working copy) *************** along with GCC; see the file COPYING3. *** 32,37 **** --- 32,80 ---- #include "gimple.h" #include "data-streamer.h" + + /* Adds a new block to output stream OBS. */ + + void + lto_append_block (struct lto_output_stream *obs) + { + struct lto_char_ptr_base *new_block; + + gcc_assert (obs->left_in_block == 0); + + if (obs->first_block == NULL) + { + /* This is the first time the stream has been written + into. */ + obs->block_size = 1024; + new_block = (struct lto_char_ptr_base*) xmalloc (obs->block_size); + obs->first_block = new_block; + } + else + { + struct lto_char_ptr_base *tptr; + /* Get a new block that is twice as big as the last block + and link it into the list. */ + obs->block_size *= 2; + new_block = (struct lto_char_ptr_base*) xmalloc (obs->block_size); + /* The first bytes of the block are reserved as a pointer to + the next block. Set the chain of the full block to the + pointer to the new block. */ + tptr = obs->current_block; + tptr->ptr = (char *) new_block; + } + + /* Set the place for the next char at the first position after the + chain to the next block. */ + obs->current_pointer + = ((char *) new_block) + sizeof (struct lto_char_ptr_base); + obs->current_block = new_block; + /* Null out the newly allocated block's pointer to the next block. */ + new_block->ptr = NULL; + obs->left_in_block = obs->block_size - sizeof (struct lto_char_ptr_base); + } + + /* Return index used to reference STRING of LEN characters in the string table in OB. The string might or might not include a trailing '\0'. Then put the index onto the INDEX_STREAM. *************** streamer_string_index (struct output_blo *** 71,77 **** new_slot->slot_num = start; *slot = new_slot; streamer_write_uhwi_stream (string_stream, len); ! lto_output_data_stream (string_stream, string, len); return start + 1; } else --- 114,120 ---- new_slot->slot_num = start; *slot = new_slot; streamer_write_uhwi_stream (string_stream, len); ! streamer_write_data_stream (string_stream, string, len); return start + 1; } else *************** streamer_write_gcov_count_stream (struct *** 304,306 **** --- 347,380 ---- gcc_assert ((HOST_WIDE_INT) work == work); streamer_write_hwi_stream (obs, work); } + + /* Write raw DATA of length LEN to the output block OB. */ + + void + streamer_write_data_stream (struct lto_output_stream *obs, const void *data, + size_t len) + { + while (len) + { + size_t copy; + + /* No space left. */ + if (obs->left_in_block == 0) + lto_append_block (obs); + + /* Determine how many bytes to copy in this loop. */ + if (len <= obs->left_in_block) + copy = len; + else + copy = obs->left_in_block; + + /* Copy the data and do bookkeeping. */ + memcpy (obs->current_pointer, data, copy); + obs->current_pointer += copy; + obs->total_size += copy; + obs->left_in_block -= copy; + data = (const char *) data + copy; + len -= copy; + } + } + Index: gcc/lto-section-out.c =================================================================== *** gcc/lto-section-out.c (revision 213253) --- gcc/lto-section-out.c (working copy) *************** lto_write_stream (struct lto_output_stre *** 147,225 **** } - /* Adds a new block to output stream OBS. */ - - void - lto_append_block (struct lto_output_stream *obs) - { - struct lto_char_ptr_base *new_block; - - gcc_assert (obs->left_in_block == 0); - - if (obs->first_block == NULL) - { - /* This is the first time the stream has been written - into. */ - obs->block_size = 1024; - new_block = (struct lto_char_ptr_base*) xmalloc (obs->block_size); - obs->first_block = new_block; - } - else - { - struct lto_char_ptr_base *tptr; - /* Get a new block that is twice as big as the last block - and link it into the list. */ - obs->block_size *= 2; - new_block = (struct lto_char_ptr_base*) xmalloc (obs->block_size); - /* The first bytes of the block are reserved as a pointer to - the next block. Set the chain of the full block to the - pointer to the new block. */ - tptr = obs->current_block; - tptr->ptr = (char *) new_block; - } - - /* Set the place for the next char at the first position after the - chain to the next block. */ - obs->current_pointer - = ((char *) new_block) + sizeof (struct lto_char_ptr_base); - obs->current_block = new_block; - /* Null out the newly allocated block's pointer to the next block. */ - new_block->ptr = NULL; - obs->left_in_block = obs->block_size - sizeof (struct lto_char_ptr_base); - } - - - /* Write raw DATA of length LEN to the output block OB. */ - - void - lto_output_data_stream (struct lto_output_stream *obs, const void *data, - size_t len) - { - while (len) - { - size_t copy; - - /* No space left. */ - if (obs->left_in_block == 0) - lto_append_block (obs); - - /* Determine how many bytes to copy in this loop. */ - if (len <= obs->left_in_block) - copy = len; - else - copy = obs->left_in_block; - - /* Copy the data and do bookkeeping. */ - memcpy (obs->current_pointer, data, copy); - obs->current_pointer += copy; - obs->total_size += copy; - obs->left_in_block -= copy; - data = (const char *) data + copy; - len -= copy; - } - } - - /* Lookup NAME in ENCODER. If NAME is not found, create a new entry in ENCODER for NAME with the next available index of ENCODER, then print the index to OBS. True is returned if NAME was added to --- 147,152 ----