diff options
author | dnovillo <dnovillo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-08-12 16:42:13 +0000 |
---|---|---|
committer | dnovillo <dnovillo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-08-12 16:42:13 +0000 |
commit | 7f3857848224929268239eaff4544a32eef5de94 (patch) | |
tree | ef2a7dfd0af1b4be822dcf83bf3264d9f4d97d0c /gcc/lto-streamer-in.c | |
parent | bd021c1c5798b3cda3e5eb4ef653281cbced5c18 (diff) | |
download | gcc-7f3857848224929268239eaff4544a32eef5de94.tar.gz |
* data-streamer.h (streamer_write_zero): Rename from output_zero.
(streamer_write_uhwi): Rename from lto_output_uleb128.
(streamer_write_hwi): Rename from output_sleb128.
(streamer_write_string): Rename from lto_output_string.
(streamer_string_index): Rename from lto_string_index.
(streamer_write_string_with_length): Rename from
lto_output_string_with_length.
(streamer_write_uhwi_stream): Rename from lto_output_uleb128_stream.
(streamer_write_hwi_stream): Rename from lto_output_sleb128_stream.
(streamer_read_string): Rename from lto_input_string.
(streamer_read_indexed_string): Rename from input_string_internal.
(streamer_read_uhwi): Rename from lto_input_uleb128.
(streamer_read_hwi): Rename from lto_input_sleb128.
(streamer_write_hwi_in_range): Rename from lto_output_int_in_range.
(streamer_read_hwi_in_range): Rename from lto_input_int_in_range.
(streamer_write_enum): Rename from lto_output_enum.
(streamer_read_enum): Rename from lto_input_enum.
(streamer_write_record_start): Rename from output_record_start.
(streamer_read_record_start): Rename from input_record_start.
(streamer_write_bitpack): Rename from lto_output_bitpack.
(streamer_read_bitpack): Rename from lto_input_bitpack.
(streamer_write_char_stream): Rename from lto_output_1_stream.
(streamer_read_uchar): Rename from lto_input_1_unsigned.
* tree-streamer.h (streamer_cache_d): Rename from lto_streamer_cache_d.
(streamer_handle_as_builtin_p): Rename from lto_stream_as_builtin_p.
(streamer_read_string_cst): Rename from input_string_cst.
(streamer_read_chain): Rename from lto_input_chain.
(streamer_alloc_tree): Rename from lto_materialize_tree.
(streamer_read_tree_body): Rename from lto_input_tree_pointers.
(streamer_get_pickled_tree): Rename from lto_get_pickled_tree.
(streamer_get_builtin_tree): Rename from lto_get_builtin_tree.
(streamer_read_integer_cst): Rename from lto_input_integer_cst.
(streamer_read_tree_bitfields): Rename from tree_read_bitfields.
(streamer_write_chain): Rename from lto_output_chain.
(streamer_write_tree_header): Rename from lto_output_tree_header.
(streamer_pack_tree_bitfields): Rename from pack_value_fields.
(streamer_write_tree_body): Rename from lto_output_tree_pointers.
(streamer_write_integer_cst): Rename from lto_output_integer_cst.
(streamer_write_builtin): Rename from lto_output_builtin_tree.
(streamer_check_handled_ts_structures): Rename from
check_handled_ts_structures.
(streamer_tree_cache_insert): Rename from lto_streamer_cache_insert.
(streamer_tree_cache_insert_at): Rename from
lto_streamer_cache_insert_at.
(streamer_tree_cache_append): Rename from lto_streamer_cache_append.
(streamer_tree_cache_lookup): Rename from lto_streamer_cache_lookup.
(streamer_tree_cache_get): Rename from lto_streamer_cache_get.
(streamer_tree_cache_create): Rename from lto_streamer_cache_create.
(streamer_tree_cache_delete): Rename from lto_streamer_cache_delete.
* tree-streamer-out.c (write_string_cst): Rename from output_string_cst.
(write_identifier): Rename from output_identifier.
(write_ts_common_tree_pointers): Rename from
lto_output_ts_common_tree_pointers.
(write_ts_vector_tree_pointers): Rename from
lto_output_ts_vector_tree_pointers.
(write_ts_complex_tree_pointers): Rename from
lto_output_ts_complex_tree_pointers.
(write_ts_decl_minimal_tree_pointers): Rename from
lto_output_ts_decl_minimal_tree_pointers.
(write_ts_decl_common_tree_pointers): Rename from
lto_output_ts_decl_common_tree_pointers.
(write_ts_decl_non_common_tree_pointers): Rename from
lto_output_ts_decl_non_common_tree_pointers.
(write_ts_decl_with_vis_tree_pointers): Rename from
lto_output_ts_decl_with_vis_tree_pointers.
(write_ts_field_decl_tree_pointers): Rename from
lto_output_ts_field_decl_tree_pointers.
(write_ts_function_decl_tree_pointers): Rename from
lto_output_ts_function_decl_tree_pointers.
(write_ts_type_common_tree_pointers): Rename from
lto_output_ts_type_common_tree_pointers.
(write_ts_type_non_common_tree_pointers): Rename from
lto_output_ts_type_non_common_tree_pointers.
(write_ts_list_tree_pointers): Rename from
lto_output_ts_list_tree_pointers.
(write_ts_vec_tree_pointers): Rename from
lto_output_ts_vec_tree_pointers.
(write_ts_exp_tree_pointers): Rename from
lto_output_ts_exp_tree_pointers.
(write_ts_block_tree_pointers): Rename from
lto_output_ts_block_tree_pointers.
(write_ts_binfo_tree_pointers): Rename from
lto_output_ts_binfo_tree_pointers.
(write_ts_constructor_tree_pointers): Rename from
lto_output_ts_constructor_tree_pointers.
(write_ts_target_option): Rename from
lto_output_ts_target_option.
(write_ts_translation_unit_decl_tree_pointers): Rename from
lto_output_ts_translation_unit_decl_tree_pointers.
* tree-streamer.c (streamer_tree_cache_add_to_node_array):
Rename from lto_streamer_cache_add_to_node_array.
(streamer_tree_cache_insert_1): Rename from lto_streamer_cache_insert_1.
(record_common_node): Rename from lto_record_common_node.
* streamer-hooks.h (bitpack_d, lto_streamer_cache_d): Remove forward
declarations.
* data-streamer-in.c (lto_input_widest_uint_uleb128): Remove unused
function.
* data-streamer-out.c (lto_output_widest_uint_uleb128_stream): Remove
unused function.
* Makefile.in (lto-section-out.o): Add dependency on DATA_STREAMER_H.
(ipa-reference.o): Likewise.
* lto-section-out.c: Include data-streamer.h.
* ipa-reference.c: Include data-streamer.h.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@177704 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/lto-streamer-in.c')
-rw-r--r-- | gcc/lto-streamer-in.c | 133 |
1 files changed, 67 insertions, 66 deletions
diff --git a/gcc/lto-streamer-in.c b/gcc/lto-streamer-in.c index 16947c7338b..331eba8bd30 100644 --- a/gcc/lto-streamer-in.c +++ b/gcc/lto-streamer-in.c @@ -86,7 +86,7 @@ lto_input_data_block (struct lto_input_block *ib, void *addr, size_t length) unsigned char *const buffer = (unsigned char *const) addr; for (i = 0; i < length; i++) - buffer[i] = lto_input_1_unsigned (ib); + buffer[i] = streamer_read_uchar (ib); } @@ -186,7 +186,7 @@ lto_input_location (struct lto_input_block *ib, struct data_in *data_in) { struct bitpack_d bp; - bp = lto_input_bitpack (ib); + bp = streamer_read_bitpack (ib); return lto_input_location_bitpack (data_in, &bp); } @@ -210,32 +210,32 @@ lto_input_tree_ref (struct lto_input_block *ib, struct data_in *data_in, switch (tag) { case LTO_type_ref: - ix_u = lto_input_uleb128 (ib); + ix_u = streamer_read_uhwi (ib); result = lto_file_decl_data_get_type (data_in->file_data, ix_u); break; case LTO_ssa_name_ref: - ix_u = lto_input_uleb128 (ib); + ix_u = streamer_read_uhwi (ib); result = VEC_index (tree, SSANAMES (fn), ix_u); break; case LTO_field_decl_ref: - ix_u = lto_input_uleb128 (ib); + ix_u = streamer_read_uhwi (ib); result = lto_file_decl_data_get_field_decl (data_in->file_data, ix_u); break; case LTO_function_decl_ref: - ix_u = lto_input_uleb128 (ib); + ix_u = streamer_read_uhwi (ib); result = lto_file_decl_data_get_fn_decl (data_in->file_data, ix_u); break; case LTO_type_decl_ref: - ix_u = lto_input_uleb128 (ib); + ix_u = streamer_read_uhwi (ib); result = lto_file_decl_data_get_type_decl (data_in->file_data, ix_u); break; case LTO_namespace_decl_ref: - ix_u = lto_input_uleb128 (ib); + ix_u = streamer_read_uhwi (ib); result = lto_file_decl_data_get_namespace_decl (data_in->file_data, ix_u); break; @@ -245,7 +245,7 @@ lto_input_tree_ref (struct lto_input_block *ib, struct data_in *data_in, case LTO_imported_decl_ref: case LTO_label_decl_ref: case LTO_translation_unit_decl_ref: - ix_u = lto_input_uleb128 (ib); + ix_u = streamer_read_uhwi (ib); result = lto_file_decl_data_get_var_decl (data_in->file_data, ix_u); break; @@ -270,7 +270,7 @@ lto_input_eh_catch_list (struct lto_input_block *ib, struct data_in *data_in, enum LTO_tags tag; *last_p = first = NULL; - tag = input_record_start (ib); + tag = streamer_read_record_start (ib); while (tag) { tree list; @@ -298,7 +298,7 @@ lto_input_eh_catch_list (struct lto_input_block *ib, struct data_in *data_in, if (first == NULL) first = n; - tag = input_record_start (ib); + tag = streamer_read_record_start (ib); } return first; @@ -315,20 +315,20 @@ input_eh_region (struct lto_input_block *ib, struct data_in *data_in, int ix) eh_region r; /* Read the region header. */ - tag = input_record_start (ib); + tag = streamer_read_record_start (ib); if (tag == LTO_null) return NULL; r = ggc_alloc_cleared_eh_region_d (); - r->index = lto_input_sleb128 (ib); + r->index = streamer_read_hwi (ib); gcc_assert (r->index == ix); /* Read all the region pointers as region numbers. We'll fix up the pointers once the whole array has been read. */ - r->outer = (eh_region) (intptr_t) lto_input_sleb128 (ib); - r->inner = (eh_region) (intptr_t) lto_input_sleb128 (ib); - r->next_peer = (eh_region) (intptr_t) lto_input_sleb128 (ib); + r->outer = (eh_region) (intptr_t) streamer_read_hwi (ib); + r->inner = (eh_region) (intptr_t) streamer_read_hwi (ib); + r->next_peer = (eh_region) (intptr_t) streamer_read_hwi (ib); switch (tag) { @@ -353,7 +353,7 @@ input_eh_region (struct lto_input_block *ib, struct data_in *data_in, int ix) r->type = ERT_ALLOWED_EXCEPTIONS; r->u.allowed.type_list = stream_read_tree (ib, data_in); r->u.allowed.label = stream_read_tree (ib, data_in); - r->u.allowed.filter = lto_input_uleb128 (ib); + r->u.allowed.filter = streamer_read_uhwi (ib); for (l = r->u.allowed.type_list; l ; l = TREE_CHAIN (l)) add_type_for_runtime (TREE_VALUE (l)); @@ -370,7 +370,7 @@ input_eh_region (struct lto_input_block *ib, struct data_in *data_in, int ix) gcc_unreachable (); } - r->landing_pads = (eh_landing_pad) (intptr_t) lto_input_sleb128 (ib); + r->landing_pads = (eh_landing_pad) (intptr_t) streamer_read_hwi (ib); return r; } @@ -386,17 +386,17 @@ input_eh_lp (struct lto_input_block *ib, struct data_in *data_in, int ix) eh_landing_pad lp; /* Read the landing pad header. */ - tag = input_record_start (ib); + tag = streamer_read_record_start (ib); if (tag == LTO_null) return NULL; lto_tag_check_range (tag, LTO_eh_landing_pad, LTO_eh_landing_pad); lp = ggc_alloc_cleared_eh_landing_pad_d (); - lp->index = lto_input_sleb128 (ib); + lp->index = streamer_read_hwi (ib); gcc_assert (lp->index == ix); - lp->next_lp = (eh_landing_pad) (intptr_t) lto_input_sleb128 (ib); - lp->region = (eh_region) (intptr_t) lto_input_sleb128 (ib); + lp->next_lp = (eh_landing_pad) (intptr_t) streamer_read_hwi (ib); + lp->region = (eh_region) (intptr_t) streamer_read_hwi (ib); lp->post_landing_pad = stream_read_tree (ib, data_in); return lp; @@ -492,7 +492,7 @@ input_eh_regions (struct lto_input_block *ib, struct data_in *data_in, HOST_WIDE_INT i, root_region, len; enum LTO_tags tag; - tag = input_record_start (ib); + tag = streamer_read_record_start (ib); if (tag == LTO_null) return; @@ -505,11 +505,11 @@ input_eh_regions (struct lto_input_block *ib, struct data_in *data_in, gcc_assert (fn->eh); - root_region = lto_input_sleb128 (ib); + root_region = streamer_read_hwi (ib); gcc_assert (root_region == (int) root_region); /* Read the EH region array. */ - len = lto_input_sleb128 (ib); + len = streamer_read_hwi (ib); gcc_assert (len == (int) len); if (len > 0) { @@ -522,7 +522,7 @@ input_eh_regions (struct lto_input_block *ib, struct data_in *data_in, } /* Read the landing pads. */ - len = lto_input_sleb128 (ib); + len = streamer_read_hwi (ib); gcc_assert (len == (int) len); if (len > 0) { @@ -535,7 +535,7 @@ input_eh_regions (struct lto_input_block *ib, struct data_in *data_in, } /* Read the runtime type data. */ - len = lto_input_sleb128 (ib); + len = streamer_read_hwi (ib); gcc_assert (len == (int) len); if (len > 0) { @@ -548,7 +548,7 @@ input_eh_regions (struct lto_input_block *ib, struct data_in *data_in, } /* Read the table of action chains. */ - len = lto_input_sleb128 (ib); + len = streamer_read_hwi (ib); gcc_assert (len == (int) len); if (len > 0) { @@ -566,7 +566,7 @@ input_eh_regions (struct lto_input_block *ib, struct data_in *data_in, VEC_safe_grow (uchar, gc, fn->eh->ehspec_data.other, len); for (i = 0; i < len; i++) { - uchar c = lto_input_1_unsigned (ib); + uchar c = streamer_read_uchar (ib); VEC_replace (uchar, fn->eh->ehspec_data.other, i, c); } } @@ -576,7 +576,7 @@ input_eh_regions (struct lto_input_block *ib, struct data_in *data_in, pointers. */ fixup_eh_region_pointers (fn, root_region); - tag = input_record_start (ib); + tag = streamer_read_record_start (ib); lto_tag_check_range (tag, LTO_null, LTO_null); } @@ -611,9 +611,10 @@ input_cfg (struct lto_input_block *ib, struct function *fn, init_empty_tree_cfg_for_function (fn); init_ssa_operands (); - profile_status_for_function (fn) = lto_input_enum (ib, profile_status_d, PROFILE_LAST); + profile_status_for_function (fn) = streamer_read_enum (ib, profile_status_d, + PROFILE_LAST); - bb_count = lto_input_uleb128 (ib); + bb_count = streamer_read_uhwi (ib); last_basic_block_for_function (fn) = bb_count; if (bb_count > VEC_length (basic_block, basic_block_info_for_function (fn))) @@ -624,7 +625,7 @@ input_cfg (struct lto_input_block *ib, struct function *fn, VEC_safe_grow_cleared (basic_block, gc, label_to_block_map_for_function (fn), bb_count); - index = lto_input_sleb128 (ib); + index = streamer_read_hwi (ib); while (index != -1) { basic_block bb = BASIC_BLOCK_FOR_FUNCTION (fn, index); @@ -633,7 +634,7 @@ input_cfg (struct lto_input_block *ib, struct function *fn, if (bb == NULL) bb = make_new_block (fn, index); - edge_count = lto_input_uleb128 (ib); + edge_count = streamer_read_uhwi (ib); /* Connect up the CFG. */ for (i = 0; i < edge_count; i++) @@ -645,11 +646,11 @@ input_cfg (struct lto_input_block *ib, struct function *fn, gcov_type count; edge e; - dest_index = lto_input_uleb128 (ib); - probability = (int) lto_input_sleb128 (ib); - count = ((gcov_type) lto_input_sleb128 (ib) * count_materialization_scale + dest_index = streamer_read_uhwi (ib); + probability = (int) streamer_read_hwi (ib); + count = ((gcov_type) streamer_read_hwi (ib) * count_materialization_scale + REG_BR_PROB_BASE / 2) / REG_BR_PROB_BASE; - edge_flags = lto_input_uleb128 (ib); + edge_flags = streamer_read_uhwi (ib); dest = BASIC_BLOCK_FOR_FUNCTION (fn, dest_index); @@ -661,18 +662,18 @@ input_cfg (struct lto_input_block *ib, struct function *fn, e->count = count; } - index = lto_input_sleb128 (ib); + index = streamer_read_hwi (ib); } p_bb = ENTRY_BLOCK_PTR_FOR_FUNCTION(fn); - index = lto_input_sleb128 (ib); + index = streamer_read_hwi (ib); while (index != -1) { basic_block bb = BASIC_BLOCK_FOR_FUNCTION (fn, index); bb->prev_bb = p_bb; p_bb->next_bb = bb; p_bb = bb; - index = lto_input_sleb128 (ib); + index = streamer_read_hwi (ib); } } @@ -686,10 +687,10 @@ input_ssa_names (struct lto_input_block *ib, struct data_in *data_in, { unsigned int i, size; - size = lto_input_uleb128 (ib); + size = streamer_read_uhwi (ib); init_ssanames (fn, size); - i = lto_input_uleb128 (ib); + i = streamer_read_uhwi (ib); while (i) { tree ssa_name, name; @@ -699,14 +700,14 @@ input_ssa_names (struct lto_input_block *ib, struct data_in *data_in, while (VEC_length (tree, SSANAMES (fn)) < i) VEC_quick_push (tree, SSANAMES (fn), NULL_TREE); - is_default_def = (lto_input_1_unsigned (ib) != 0); + is_default_def = (streamer_read_uchar (ib) != 0); name = stream_read_tree (ib, data_in); ssa_name = make_ssa_name_fn (fn, name, gimple_build_nop ()); if (is_default_def) set_default_def (SSA_NAME_VAR (ssa_name), ssa_name); - i = lto_input_uleb128 (ib); + i = streamer_read_uhwi (ib); } } @@ -769,14 +770,14 @@ input_function (tree fn_decl, struct data_in *data_in, int len; fn = DECL_STRUCT_FUNCTION (fn_decl); - tag = input_record_start (ib); + tag = streamer_read_record_start (ib); clear_line_info (data_in); gimple_register_cfg_hooks (); lto_tag_check (tag, LTO_function); /* Read all the attributes for FN. */ - bp = lto_input_bitpack (ib); + bp = streamer_read_bitpack (ib); fn->is_thunk = bp_unpack_value (&bp, 1); fn->has_local_explicit_reg_vars = bp_unpack_value (&bp, 1); fn->after_tree_profile = bp_unpack_value (&bp, 1); @@ -797,14 +798,14 @@ input_function (tree fn_decl, struct data_in *data_in, fn->function_end_locus = lto_input_location (ib, data_in); /* Input the current IL state of the function. */ - fn->curr_properties = lto_input_uleb128 (ib); + fn->curr_properties = streamer_read_uhwi (ib); /* Read the static chain and non-local goto save area. */ fn->static_chain_decl = stream_read_tree (ib, data_in); fn->nonlocal_goto_save_area = stream_read_tree (ib, data_in); /* Read all the local symbols. */ - len = lto_input_sleb128 (ib); + len = streamer_read_hwi (ib); if (len > 0) { int i; @@ -825,10 +826,10 @@ input_function (tree fn_decl, struct data_in *data_in, { unsigned ix; bool res; - res = lto_streamer_cache_lookup (data_in->reader_cache, oarg, &ix); + res = streamer_tree_cache_lookup (data_in->reader_cache, oarg, &ix); gcc_assert (res); /* Replace the argument in the streamer cache. */ - lto_streamer_cache_insert_at (data_in->reader_cache, narg, ix); + streamer_tree_cache_insert_at (data_in->reader_cache, narg, ix); } gcc_assert (!oarg && !narg); @@ -845,12 +846,12 @@ input_function (tree fn_decl, struct data_in *data_in, node = cgraph_get_create_node (fn_decl); /* Read all the basic blocks. */ - tag = input_record_start (ib); + tag = streamer_read_record_start (ib); while (tag) { input_bb (ib, tag, data_in, fn, node->count_materialization_scale); - tag = input_record_start (ib); + tag = streamer_read_record_start (ib); } /* Fix up the call statements that are mentioned in the callgraph @@ -1052,20 +1053,20 @@ lto_read_tree (struct lto_input_block *ib, struct data_in *data_in, enum LTO_tags tag) { /* Instantiate a new tree node. */ - tree result = lto_materialize_tree (ib, data_in, tag); + tree result = streamer_alloc_tree (ib, data_in, tag); /* Enter RESULT in the reader cache. This will make RESULT available so that circular references in the rest of the tree structure can be resolved in subsequent calls to stream_read_tree. */ - lto_streamer_cache_append (data_in->reader_cache, result); + streamer_tree_cache_append (data_in->reader_cache, result); /* Read all the bitfield values in RESULT. Note that for LTO, we only write language-independent bitfields, so no more unpacking is needed. */ - tree_read_bitfields (ib, result); + streamer_read_tree_bitfields (ib, result); /* Read all the pointer fields in RESULT. */ - lto_input_tree_pointers (ib, data_in, result); + streamer_read_tree_body (ib, data_in, result); /* Read any LTO-specific data not read by the tree streamer. */ if (DECL_P (result) @@ -1075,13 +1076,13 @@ lto_read_tree (struct lto_input_block *ib, struct data_in *data_in, /* We should never try to instantiate an MD or NORMAL builtin here. */ if (TREE_CODE (result) == FUNCTION_DECL) - gcc_assert (!lto_stream_as_builtin_p (result)); + gcc_assert (!streamer_handle_as_builtin_p (result)); - /* end_marker = */ lto_input_1_unsigned (ib); + /* end_marker = */ streamer_read_uchar (ib); #ifdef LTO_STREAMER_DEBUG /* Remove the mapping to RESULT's original address set by - lto_materialize_tree. */ + streamer_alloc_tree. */ lto_orig_address_remove (result); #endif @@ -1099,7 +1100,7 @@ lto_input_tree (struct lto_input_block *ib, struct data_in *data_in) enum LTO_tags tag; tree result; - tag = input_record_start (ib); + tag = streamer_read_record_start (ib); gcc_assert ((unsigned) tag < (unsigned) LTO_NUM_TAGS); if (tag == LTO_null) @@ -1115,19 +1116,19 @@ lto_input_tree (struct lto_input_block *ib, struct data_in *data_in) { /* If TAG is a reference to a previously read tree, look it up in the reader cache. */ - result = lto_get_pickled_tree (ib, data_in); + result = streamer_get_pickled_tree (ib, data_in); } else if (tag == LTO_builtin_decl) { /* If we are going to read a built-in function, all we need is the code and class. */ - result = lto_get_builtin_tree (ib, data_in); + result = streamer_get_builtin_tree (ib, data_in); } else if (tag == lto_tree_code_to_tag (INTEGER_CST)) { /* For integer constants we only need the type and its hi/low words. */ - result = lto_input_integer_cst (ib, data_in); + result = streamer_read_integer_cst (ib, data_in); } else { @@ -1164,7 +1165,7 @@ lto_data_in_create (struct lto_file_decl_data *file_data, const char *strings, data_in->strings = strings; data_in->strings_len = len; data_in->globals_resolution = resolutions; - data_in->reader_cache = lto_streamer_cache_create (); + data_in->reader_cache = streamer_tree_cache_create (); return data_in; } @@ -1176,7 +1177,7 @@ void lto_data_in_delete (struct data_in *data_in) { VEC_free (ld_plugin_symbol_resolution_t, heap, data_in->globals_resolution); - lto_streamer_cache_delete (data_in->reader_cache); + streamer_tree_cache_delete (data_in->reader_cache); free (data_in->labels); free (data_in); } |