I'm getting massive failures after incorporating this change:

   bytecode stream: trying to read 1735 bytes after the end of the
   input buffer

where the number of bytes changes.  Suggestions?


On 7/28/11, Diego Novillo <dnovi...@google.com> wrote:
> Noticed this while debugging the new tree encoding cache.  No
> functional changes.  This frees the memory used by the buffers
> used during tree streaming.  It also moves the reader and writer
> data into a union to better distinguish them.
>
> Tested on x86_64.
>
>
> Diego.
>
>
>       * pph-streamer.h (pph_stream): Move fields OB, OUT_STATE,
>       DECL_STATE_STREAM, IB, DATA_IN, PPH_SECTIONS, FILE_DATA and
>       FILE_SIZE into a union of structures.
>       Update all users.
>       * pph-streamer.c (pph_stream_close): Free memory used by tree
>       encoding routines.
>
> Index: cp/pph-streamer-in.c
> ===================================================================
> --- cp/pph-streamer-in.c      (revision 176879)
> +++ cp/pph-streamer-in.c      (working copy)
> @@ -109,8 +109,8 @@ pph_get_section_data (struct lto_file_de
>  {
>    /* FIXME pph - Stop abusing lto_file_decl_data fields.  */
>    const pph_stream *stream = (const pph_stream *) file_data->file_name;
> -  *len = stream->file_size - sizeof (pph_file_header);
> -  return (const char *) stream->file_data + sizeof (pph_file_header);
> +  *len = stream->encoder.r.file_size - sizeof (pph_file_header);
> +  return (const char *) stream->encoder.r.file_data + sizeof
> (pph_file_header);
>  }
>
>
> @@ -119,14 +119,14 @@ pph_get_section_data (struct lto_file_de
>
>  static void
>  pph_free_section_data (struct lto_file_decl_data *file_data,
> -                enum lto_section_type section_type ATTRIBUTE_UNUSED,
> -                const char *name ATTRIBUTE_UNUSED,
> -                const char *offset ATTRIBUTE_UNUSED,
> -                size_t len ATTRIBUTE_UNUSED)
> +                    enum lto_section_type section_type ATTRIBUTE_UNUSED,
> +                    const char *name ATTRIBUTE_UNUSED,
> +                    const char *offset ATTRIBUTE_UNUSED,
> +                    size_t len ATTRIBUTE_UNUSED)
>  {
>    /* FIXME pph - Stop abusing lto_file_decl_data fields.  */
>    const pph_stream *stream = (const pph_stream *) file_data->file_name;
> -  free (stream->file_data);
> +  free (stream->encoder.r.file_data);
>  }
>
>
> @@ -145,46 +145,48 @@ pph_init_read (pph_stream *stream)
>
>    lto_reader_init ();
>
> -  /* Read STREAM->NAME into the memory buffer STREAM->FILE_DATA.
> -     FIXME pph, we are reading the whole file at once.  This seems
> -     wasteful.  */
> +  /* Read STREAM->NAME into the memory buffer stream->encoder.r.file_data.
> */
>    retcode = fstat (fileno (stream->file), &st);
>    gcc_assert (retcode == 0);
> -  stream->file_size = (size_t) st.st_size;
> -  stream->file_data = XCNEWVEC (char, stream->file_size);
> -  bytes_read = fread (stream->file_data, 1, stream->file_size,
> stream->file);
> -  gcc_assert (bytes_read == stream->file_size);
> +  stream->encoder.r.file_size = (size_t) st.st_size;
> +  stream->encoder.r.file_data = XCNEWVEC (char,
> stream->encoder.r.file_size);
> +  bytes_read = fread (stream->encoder.r.file_data, 1,
> +                   stream->encoder.r.file_size, stream->file);
> +  gcc_assert (bytes_read == stream->encoder.r.file_size);
>
>    /* Set LTO callbacks to read the PPH file.  */
> -  stream->pph_sections = XCNEWVEC (struct lto_file_decl_data *,
> -                                PPH_NUM_SECTIONS);
> +  stream->encoder.r.pph_sections = XCNEWVEC (struct lto_file_decl_data *,
> +                                          PPH_NUM_SECTIONS);
>    for (i = 0; i < PPH_NUM_SECTIONS; i++)
>      {
> -      stream->pph_sections[i] = XCNEW (struct lto_file_decl_data);
> +      stream->encoder.r.pph_sections[i] = XCNEW (struct
> lto_file_decl_data);
>        /* FIXME pph - Stop abusing fields in lto_file_decl_data.  */
> -      stream->pph_sections[i]->file_name = (const char *) stream;
> +      stream->encoder.r.pph_sections[i]->file_name = (const char *) stream;
>      }
>
> -  lto_set_in_hooks (stream->pph_sections, pph_get_section_data,
> +  lto_set_in_hooks (stream->encoder.r.pph_sections, pph_get_section_data,
>                   pph_free_section_data);
>
> -  header = (pph_file_header *) stream->file_data;
> +  header = (pph_file_header *) stream->encoder.r.file_data;
>    strtab = (const char *) header + sizeof (pph_file_header);
>    strtab_size = header->strtab_size;
>    body = strtab + strtab_size;
> -  gcc_assert (stream->file_size >= strtab_size + sizeof (pph_file_header));
> -  body_size = stream->file_size - strtab_size - sizeof (pph_file_header);
> +  gcc_assert (stream->encoder.r.file_size
> +           >= strtab_size + sizeof (pph_file_header));
> +  body_size = stream->encoder.r.file_size
> +           - strtab_size - sizeof (pph_file_header);
>
>    /* Create an input block structure pointing right after the string
>       table.  */
> -  stream->ib = XCNEW (struct lto_input_block);
> -  LTO_INIT_INPUT_BLOCK_PTR (stream->ib, body, 0, body_size);
> -  stream->data_in = lto_data_in_create (stream->pph_sections[0], strtab,
> -                                        strtab_size, NULL);
> +  stream->encoder.r.ib = XCNEW (struct lto_input_block);
> +  LTO_INIT_INPUT_BLOCK_PTR (stream->encoder.r.ib, body, 0, body_size);
> +  stream->encoder.r.data_in
> +      = lto_data_in_create (stream->encoder.r.pph_sections[0], strtab,
> +                         strtab_size, NULL);
>
> -  /* Associate STREAM with STREAM->DATA_IN so we can recover it from
> +  /* Associate STREAM with STREAM->ENCODER.R.DATA_IN so we can recover it
> from
>       the streamer hooks.  */
> -  stream->data_in->sdata = (void *) stream;
> +  stream->encoder.r.data_in->sdata = (void *) stream;
>  }
>
>
> @@ -827,7 +829,8 @@ pph_in_struct_function (pph_stream *stre
>    allocate_struct_function (decl, false);
>    fn = DECL_STRUCT_FUNCTION (decl);
>
> -  input_struct_function_base (fn, stream->data_in, stream->ib);
> +  input_struct_function_base (fn, stream->encoder.r.data_in,
> +                           stream->encoder.r.ib);
>
>    /* struct eh_status *eh;                                   -- zero init */
>    /* struct control_flow_graph *cfg;                         -- zero init */
> Index: cp/pph-streamer.c
> ===================================================================
> --- cp/pph-streamer.c (revision 176879)
> +++ cp/pph-streamer.c (working copy)
> @@ -158,6 +158,25 @@ pph_stream_close (pph_stream *stream)
>    stream->file = NULL;
>    VEC_free (void_p, heap, stream->cache.v);
>    pointer_map_destroy (stream->cache.m);
> +
> +  if (stream->write_p)
> +    {
> +      destroy_output_block (stream->encoder.w.ob);
> +      free (stream->encoder.w.decl_state_stream);
> +      lto_delete_out_decl_state (stream->encoder.w.out_state);
> +    }
> +  else
> +    {
> +      unsigned i;
> +
> +      free (stream->encoder.r.ib);
> +      lto_data_in_delete (stream->encoder.r.data_in);
> +      for (i = 0; i < PPH_NUM_SECTIONS; i++)
> +     free (stream->encoder.r.pph_sections[i]);
> +      free (stream->encoder.r.pph_sections);
> +      free (stream->encoder.r.file_data);
> +    }
> +
>    free (stream);
>  }
>
> Index: cp/pph-streamer-out.c
> ===================================================================
> --- cp/pph-streamer-out.c     (revision 176879)
> +++ cp/pph-streamer-out.c     (working copy)
> @@ -99,14 +99,14 @@ void
>  pph_init_write (pph_stream *stream)
>  {
>    lto_streamer_init ();
> -  stream->out_state = lto_new_out_decl_state ();
> -  lto_push_out_decl_state (stream->out_state);
> -  stream->decl_state_stream = XCNEW (struct lto_output_stream);
> -  stream->ob = create_output_block (LTO_section_decls);
> +  stream->encoder.w.out_state = lto_new_out_decl_state ();
> +  lto_push_out_decl_state (stream->encoder.w.out_state);
> +  stream->encoder.w.decl_state_stream = XCNEW (struct lto_output_stream);
> +  stream->encoder.w.ob = create_output_block (LTO_section_decls);
>
> -  /* Associate STREAM with STREAM->OB so we can recover it from the
> +  /* Associate STREAM with stream->encoder.w.ob so we can recover it from
> the
>       streamer hooks.  */
> -  stream->ob->sdata = (void *) stream;
> +  stream->encoder.w.ob->sdata = (void *) stream;
>  }
>
>
> @@ -158,7 +158,7 @@ pph_out_header (pph_stream *stream)
>    header.major_version = (char) major;
>    header.minor_version = (char) minor;
>    header.patchlevel = (char) patchlevel;
> -  header.strtab_size = stream->ob->string_stream->total_size;
> +  header.strtab_size = stream->encoder.w.ob->string_stream->total_size;
>
>    memset (&header_stream, 0, sizeof (header_stream));
>    lto_output_data_stream (&header_stream, &header, sizeof (header));
> @@ -172,18 +172,20 @@ static void
>  pph_out_body (pph_stream *stream)
>  {
>    /* Write the string table.  */
> -  lto_write_stream (stream->ob->string_stream);
> +  lto_write_stream (stream->encoder.w.ob->string_stream);
>
>    /* Write out the physical representation for every AST in all the
> -     streams in STREAM->OUT_STATE.  */
> -  lto_output_decl_state_streams (stream->ob, stream->out_state);
> +     streams in STREAM->ENCODER.W.OUT_STATE.  */
> +  lto_output_decl_state_streams (stream->encoder.w.ob,
> +                              stream->encoder.w.out_state);
>
>    /* Now write the vector of all AST references.  */
> -  lto_output_decl_state_refs (stream->ob, stream->decl_state_stream,
> -                           stream->out_state);
> +  lto_output_decl_state_refs (stream->encoder.w.ob,
> +                           stream->encoder.w.decl_state_stream,
> +                           stream->encoder.w.out_state);
>
>    /* Finally, physically write all the streams.  */
> -  lto_write_stream (stream->ob->main_stream);
> +  lto_write_stream (stream->encoder.w.ob->main_stream);
>  }
>
>
> @@ -455,7 +457,7 @@ pph_out_ld_base (pph_stream *stream, str
>  {
>    struct bitpack_d bp;
>
> -  bp = bitpack_create (stream->ob->main_stream);
> +  bp = bitpack_create (stream->encoder.w.ob->main_stream);
>    bp_pack_value (&bp, ldb->selector, 16);
>    bp_pack_value (&bp, ldb->language, 4);
>    bp_pack_value (&bp, ldb->use_template, 2);
> @@ -537,7 +539,7 @@ pph_out_cxx_binding_1 (pph_stream *strea
>    pph_out_tree_or_ref (stream, cb->value);
>    pph_out_tree_or_ref (stream, cb->type);
>    pph_out_binding_level (stream, cb->scope);
> -  bp = bitpack_create (stream->ob->main_stream);
> +  bp = bitpack_create (stream->encoder.w.ob->main_stream);
>    bp_pack_value (&bp, cb->value_is_inherited, 1);
>    bp_pack_value (&bp, cb->is_local, 1);
>    pph_out_bitpack (stream, &bp);
> @@ -684,7 +686,7 @@ pph_out_binding_level (pph_stream *strea
>    pph_out_chain (stream, bl->statement_list);
>    pph_out_uint (stream, bl->binding_depth);
>
> -  bp = bitpack_create (stream->ob->main_stream);
> +  bp = bitpack_create (stream->encoder.w.ob->main_stream);
>    bp_pack_value (&bp, bl->kind, 4);
>    bp_pack_value (&bp, bl->keep, 1);
>    bp_pack_value (&bp, bl->more_cleanups_ok, 1);
> @@ -735,7 +737,7 @@ pph_out_language_function (pph_stream *s
>    pph_out_tree_or_ref (stream, lf->x_in_charge_parm);
>    pph_out_tree_or_ref (stream, lf->x_vtt_parm);
>    pph_out_tree_or_ref (stream, lf->x_return_value);
> -  bp = bitpack_create (stream->ob->main_stream);
> +  bp = bitpack_create (stream->encoder.w.ob->main_stream);
>    bp_pack_value (&bp, lf->x_returns_value, 1);
>    bp_pack_value (&bp, lf->x_returns_null, 1);
>    bp_pack_value (&bp, lf->x_returns_abnormally, 1);
> @@ -763,7 +765,7 @@ pph_out_ld_fn (pph_stream *stream, struc
>    /* Write all the fields in lang_decl_min.  */
>    pph_out_ld_min (stream, &ldf->min);
>
> -  bp = bitpack_create (stream->ob->main_stream);
> +  bp = bitpack_create (stream->encoder.w.ob->main_stream);
>    bp_pack_value (&bp, ldf->operator_code, 16);
>    bp_pack_value (&bp, ldf->global_ctor_p, 1);
>    bp_pack_value (&bp, ldf->global_dtor_p, 1);
> @@ -809,7 +811,7 @@ struct pph_tree_info {
>  static int
>  pph_out_used_types_slot (void **slot, void *aux)
>  {
> -  struct pph_tree_info *pti = (struct pph_tree_info *)aux;
> +  struct pph_tree_info *pti = (struct pph_tree_info *) aux;
>    pph_out_tree_or_ref (pti->stream, (tree) *slot);
>    return 1;
>  }
> @@ -826,7 +828,7 @@ pph_out_struct_function (pph_stream *str
>      return;
>
>    pph_out_tree (stream, fn->decl);
> -  output_struct_function_base (stream->ob, fn);
> +  output_struct_function_base (stream->encoder.w.ob, fn);
>
>    /* struct eh_status *eh;                                   -- ignored */
>    gcc_assert (fn->cfg == NULL);
> @@ -842,14 +844,14 @@ pph_out_struct_function (pph_stream *str
>    /* struct machine_function *machine;                               -- 
> ignored */
>    pph_out_language_function (stream, fn->language);
>
> -  /*FIXME pph: We would like to detect improper sharing here.  */
> +  /* FIXME pph: We would like to detect improper sharing here.  */
>    if (fn->used_types_hash)
>      {
> -      /*FIXME pph: This write may be unstable.  */
> +      /* FIXME pph: This write may be unstable.  */
>        pph_out_uint (stream, htab_elements (fn->used_types_hash));
>        pti.stream = stream;
> -      htab_traverse_noresize (fn->used_types_hash,
> -                           pph_out_used_types_slot, &pti);
> +      htab_traverse_noresize (fn->used_types_hash, pph_out_used_types_slot,
> +                           &pti);
>      }
>    else
>      pph_out_uint (stream, 0);
> @@ -943,12 +945,11 @@ pph_out_lang_specific (pph_stream *strea
>  /* Write all the fields in lang_type_header instance LTH to STREAM.  */
>
>  static void
> -pph_out_lang_type_header (pph_stream *stream,
> -                                struct lang_type_header *lth)
> +pph_out_lang_type_header (pph_stream *stream, struct lang_type_header *lth)
>  {
>    struct bitpack_d bp;
>
> -  bp = bitpack_create (stream->ob->main_stream);
> +  bp = bitpack_create (stream->encoder.w.ob->main_stream);
>    bp_pack_value (&bp, lth->is_lang_type_class, 1);
>    bp_pack_value (&bp, lth->has_type_conversion, 1);
>    bp_pack_value (&bp, lth->has_copy_ctor, 1);
> @@ -1002,7 +1003,7 @@ pph_out_lang_type_class (pph_stream *str
>
>    pph_out_uchar (stream, ltc->align);
>
> -  bp = bitpack_create (stream->ob->main_stream);
> +  bp = bitpack_create (stream->encoder.w.ob->main_stream);
>    bp_pack_value (&bp, ltc->has_mutable, 1);
>    bp_pack_value (&bp, ltc->com_interface, 1);
>    bp_pack_value (&bp, ltc->non_pod_class, 1);
> Index: cp/pph-streamer.h
> ===================================================================
> --- cp/pph-streamer.h (revision 176879)
> +++ cp/pph-streamer.h (working copy)
> @@ -93,6 +93,8 @@ typedef struct pph_pickle_cache {
>  } pph_pickle_cache;
>
>
> +/* Data structures used to encode and decode trees.  */
> +
>  /* A PPH stream contains all the data and attributes needed to
>     write symbols, declarations and other parsing products to disk.  */
>  typedef struct pph_stream {
> @@ -102,27 +104,24 @@ typedef struct pph_stream {
>    /* FILE object associated with it.  */
>    FILE *file;
>
> -  /* LTO output block to hold pickled ASTs and references.  This is
> -      NULL when the file is opened for reading.  */
> -  struct output_block *ob;
> -  struct lto_out_decl_state *out_state;
> -  struct lto_output_stream *decl_state_stream;
> -
> -  /* LTO input block to read ASTs and references from.  This is NULL
> -      when the file is opened for writing.  */
> -  struct lto_input_block *ib;
> -
> -  /* String tables and other descriptors used by the LTO reading
> -     routines.  NULL when the file is opened for writing.  */
> -  struct data_in *data_in;
> -
> -  /* Array of sections in the PPH file.  */
> -  struct lto_file_decl_data **pph_sections;
> +  /* Data structures used to encode/decode trees.  */
> +  union {
> +    /* Encoding tables and buffers used to write trees to a file.  */
> +    struct {
> +     struct output_block *ob;
> +     struct lto_out_decl_state *out_state;
> +     struct lto_output_stream *decl_state_stream;
> +    } w;
>
> -  /* Buffer holding the file contents.  FIXME pph, we are bringing
> -     the whole file in memory at once.  This seems wasteful.  */
> -  char *file_data;
> -  size_t file_size;
> +    /* Decoding tables and buffers used to read trees from a file.  */
> +    struct {
> +     struct lto_input_block *ib;
> +     struct data_in *data_in;
> +     struct lto_file_decl_data **pph_sections;
> +     char *file_data;
> +     size_t file_size;
> +    } r;
> +  } encoder;
>
>    /* Cache of pickled data structures.  */
>    pph_pickle_cache cache;
> @@ -186,7 +185,7 @@ pph_out_tree (pph_stream *stream, tree t
>  {
>    if (flag_pph_tracer >= 1)
>      pph_trace_tree (stream, t);
> -  lto_output_tree (stream->ob, t, false);
> +  lto_output_tree (stream->encoder.w.ob, t, false);
>  }
>
>  /* Output array A of cardinality C of ASTs to STREAM.  */
> @@ -200,7 +199,7 @@ pph_out_tree_array (pph_stream *stream,
>      {
>        if (flag_pph_tracer >= 1)
>          pph_trace_tree (stream, a[i]);
> -      lto_output_tree (stream->ob, a[i]);
> +      lto_output_tree (stream->encoder.w.ob, a[i]);
>      }
>  }
>  #endif
> @@ -212,7 +211,7 @@ pph_out_tree_or_ref_1 (pph_stream *strea
>  {
>    if (flag_pph_tracer >= tlevel)
>      pph_trace_tree (stream, t);
> -  lto_output_tree (stream->ob, t, false);
> +  lto_output_tree (stream->encoder.w.ob, t, false);
>  }
>
>  /* Output AST T to STREAM.  Trigger tracing at -fpph-tracer=2.  */
> @@ -228,7 +227,7 @@ pph_out_uint (pph_stream *stream, unsign
>  {
>    if (flag_pph_tracer >= 4)
>      pph_trace_uint (stream, value);
> -  lto_output_sleb128_stream (stream->ob->main_stream, value);
> +  lto_output_sleb128_stream (stream->encoder.w.ob->main_stream, value);
>  }
>
>  /* Write an unsigned char VALUE to STREAM.  */
> @@ -237,7 +236,7 @@ pph_out_uchar (pph_stream *stream, unsig
>  {
>    if (flag_pph_tracer >= 4)
>      pph_trace_uint (stream, value);
> -  lto_output_1_stream (stream->ob->main_stream, value);
> +  lto_output_1_stream (stream->encoder.w.ob->main_stream, value);
>  }
>
>  /* Write N bytes from P to STREAM.  */
> @@ -246,7 +245,7 @@ pph_out_bytes (pph_stream *stream, const
>  {
>    if (flag_pph_tracer >= 4)
>      pph_trace_bytes (stream, p, n);
> -  lto_output_data_stream (stream->ob->main_stream, p, n);
> +  lto_output_data_stream (stream->encoder.w.ob->main_stream, p, n);
>  }
>
>  /* Write string STR to STREAM.  */
> @@ -255,18 +254,20 @@ pph_out_string (pph_stream *stream, cons
>  {
>    if (flag_pph_tracer >= 4)
>      pph_trace_string (stream, str);
> -  lto_output_string (stream->ob, stream->ob->main_stream, str, false);
> +  lto_output_string (stream->encoder.w.ob,
> stream->encoder.w.ob->main_stream,
> +                  str, false);
>  }
>
>  /* Write string STR of length LEN to STREAM.  */
>  static inline void
>  pph_out_string_with_length (pph_stream *stream, const char *str,
> -                            unsigned int len)
> +                         unsigned int len)
>  {
>    if (flag_pph_tracer >= 4)
>      pph_trace_string_with_length (stream, str, len);
> -  lto_output_string_with_length (stream->ob, stream->ob->main_stream,
> -                               str, len + 1, false);
> +  lto_output_string_with_length (stream->encoder.w.ob,
> +                              stream->encoder.w.ob->main_stream,
> +                              str, len + 1, false);
>  }
>
>  /* Output VEC V of ASTs to STREAM.  */
> @@ -283,7 +284,7 @@ pph_out_tree_VEC (pph_stream *stream, VE
>      {
>        if (flag_pph_tracer >= 1)
>          pph_trace_tree (stream, t);
> -      lto_output_tree (stream->ob, t);
> +      lto_output_tree (stream->encoder.w.ob, t);
>      }
>  }
>  #endif
> @@ -294,7 +295,7 @@ pph_out_location (pph_stream *stream, lo
>  {
>    if (flag_pph_tracer >= 4)
>      pph_trace_location (stream, loc);
> -  lto_output_location (stream->ob, loc);
> +  lto_output_location (stream->encoder.w.ob, loc);
>  }
>
>  /* Write a chain of ASTs to STREAM starting with FIRST.  */
> @@ -303,14 +304,14 @@ pph_out_chain (pph_stream *stream, tree
>  {
>    if (flag_pph_tracer >= 2)
>      pph_trace_chain (stream, first);
> -  lto_output_chain (stream->ob, first, false);
> +  lto_output_chain (stream->encoder.w.ob, first, false);
>  }
>
>  /* Write a bitpack BP to STREAM.  */
>  static inline void
>  pph_out_bitpack (pph_stream *stream, struct bitpack_d *bp)
>  {
> -  gcc_assert (stream->ob->main_stream == bp->stream);
> +  gcc_assert (stream->encoder.w.ob->main_stream == bp->stream);
>    if (flag_pph_tracer >= 4)
>      pph_trace_bitpack (stream, bp);
>    lto_output_bitpack (bp);
> @@ -320,7 +321,7 @@ pph_out_bitpack (pph_stream *stream, str
>  static inline unsigned int
>  pph_in_uint (pph_stream *stream)
>  {
> -  HOST_WIDE_INT unsigned n = lto_input_uleb128 (stream->ib);
> +  HOST_WIDE_INT unsigned n = lto_input_uleb128 (stream->encoder.r.ib);
>    gcc_assert (n == (unsigned) n);
>    if (flag_pph_tracer >= 4)
>      pph_trace_uint (stream, n);
> @@ -331,7 +332,7 @@ pph_in_uint (pph_stream *stream)
>  static inline unsigned char
>  pph_in_uchar (pph_stream *stream)
>  {
> -  unsigned char n = lto_input_1_unsigned (stream->ib);
> +  unsigned char n = lto_input_1_unsigned (stream->encoder.r.ib);
>    if (flag_pph_tracer >= 4)
>      pph_trace_uint (stream, n);
>    return n;
> @@ -342,7 +343,7 @@ pph_in_uchar (pph_stream *stream)
>  static inline void
>  pph_in_bytes (pph_stream *stream, void *p, size_t n)
>  {
> -  lto_input_data_block (stream->ib, p, n);
> +  lto_input_data_block (stream->encoder.r.ib, p, n);
>    if (flag_pph_tracer >= 4)
>      pph_trace_bytes (stream, p, n);
>  }
> @@ -352,7 +353,8 @@ pph_in_bytes (pph_stream *stream, void *
>  static inline const char *
>  pph_in_string (pph_stream *stream)
>  {
> -  const char *s = lto_input_string (stream->data_in, stream->ib);
> +  const char *s = lto_input_string (stream->encoder.r.data_in,
> +                                 stream->encoder.r.ib);
>    if (flag_pph_tracer >= 4)
>      pph_trace_string (stream, s);
>    return s;
> @@ -362,7 +364,8 @@ pph_in_string (pph_stream *stream)
>  static inline location_t
>  pph_in_location (pph_stream *stream)
>  {
> -  location_t loc = lto_input_location (stream->ib, stream->data_in);
> +  location_t loc = lto_input_location (stream->encoder.r.ib,
> +                                    stream->encoder.r.data_in);
>    if (flag_pph_tracer >= 4)
>      pph_trace_location (stream, loc);
>    return loc;
> @@ -372,7 +375,7 @@ pph_in_location (pph_stream *stream)
>  static inline tree
>  pph_in_tree (pph_stream *stream)
>  {
> -  tree t = lto_input_tree (stream->ib, stream->data_in);
> +  tree t = lto_input_tree (stream->encoder.r.ib,
> stream->encoder.r.data_in);
>    if (flag_pph_tracer >= 4)
>      pph_trace_tree (stream, t);
>    return t;
> @@ -387,7 +390,7 @@ pph_in_tree_array (pph_stream *stream, t
>    size_t i;
>    for (i = 0; i < c; ++i)
>      {
> -      tree t = lto_input_tree (stream->ib, stream->data_in);
> +      tree t = lto_input_tree (stream->encoder.r.ib,
> stream->encoder.r.data_in);
>        if (flag_pph_tracer >= 4)
>          pph_trace_tree (stream, t, false); /* FIXME pph: always false? */
>        a[i] = t;
> @@ -405,7 +408,7 @@ pph_in_tree_VEC (pph_stream *stream, VEC
>    unsigned int c = pph_in_uint (stream);
>    for (i = 0; i < c; ++i)
>      {
> -      tree t = lto_input_tree (stream->ib, stream->data_in);
> +      tree t = lto_input_tree (stream->encoder.r.ib,
> stream->encoder.r.data_in);
>        if (flag_pph_tracer >= 4)
>          pph_trace_tree (stream, t, false); /* FIXME pph: always false? */
>        VEC_safe_push (tree, gc, v, t);
> @@ -417,7 +420,7 @@ pph_in_tree_VEC (pph_stream *stream, VEC
>  static inline tree
>  pph_in_chain (pph_stream *stream)
>  {
> -  tree t = lto_input_chain (stream->ib, stream->data_in);
> +  tree t = lto_input_chain (stream->encoder.r.ib,
> stream->encoder.r.data_in);
>    if (flag_pph_tracer >= 2)
>      pph_trace_chain (stream, t);
>    return t;
> @@ -427,7 +430,7 @@ pph_in_chain (pph_stream *stream)
>  static inline struct bitpack_d
>  pph_in_bitpack (pph_stream *stream)
>  {
> -  struct bitpack_d bp = lto_input_bitpack (stream->ib);
> +  struct bitpack_d bp = lto_input_bitpack (stream->encoder.r.ib);
>    if (flag_pph_tracer >= 4)
>      pph_trace_bitpack (stream, &bp);
>    return bp;
>


-- 
Lawrence Crowl

Reply via email to