GCC Middle and Back End API Reference
|
#include "config.h"
#include "system.h"
#include "coretypes.h"
#include "backend.h"
#include "target.h"
#include "rtl.h"
#include "tree.h"
#include "gimple.h"
#include "cfghooks.h"
#include "tree-pass.h"
#include "ssa.h"
#include "gimple-streamer.h"
#include "toplev.h"
#include "gimple-iterator.h"
#include "tree-cfg.h"
#include "tree-into-ssa.h"
#include "tree-dfa.h"
#include "tree-ssa.h"
#include "except.h"
#include "cgraph.h"
#include "cfgloop.h"
#include "debug.h"
#include "alloc-pool.h"
Data Structures | |
struct | string_pair_map |
struct | string_pair_map_hasher |
Macros | |
#define | INCLUDE_MEMORY |
#define | FIXUP_EH_REGION(r) |
#define | FIXUP_EH_LP(p) |
#define | STMT_UID_NOT_IN_RANGE(uid) |
Variables | |
static struct object_allocator< struct string_slot > * | string_slot_allocator |
static hash_table< string_slot_hasher > * | file_name_hash_table |
static struct obstack | file_name_obstack |
static struct object_allocator< struct string_pair_map > * | string_pair_map_allocator |
static hash_table< string_pair_map_hasher > * | path_name_pair_hash_table |
vec< dref_entry > | dref_queue |
#define FIXUP_EH_LP | ( | p | ) |
Referenced by fixup_eh_region_pointers().
#define FIXUP_EH_REGION | ( | r | ) |
Referenced by fixup_eh_region_pointers().
#define INCLUDE_MEMORY |
Read the GIMPLE representation from a file stream. Copyright (C) 2009-2024 Free Software Foundation, Inc. Contributed by Kenneth Zadeck <zadeck@naturalbridge.com> Re-implemented by Diego Novillo <dnovillo@google.com> This file is part of GCC. GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. GCC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GCC; see the file COPYING3. If not see <http://www.gnu.org/licenses/>.
#define STMT_UID_NOT_IN_RANGE | ( | uid | ) |
Referenced by fixup_call_stmt_edges_1().
|
static |
Lookup STRING in file_name_hash_table. If found, return the existing string, otherwise insert STRING as the canonical version. If STRING is a relative pathname and RELATIVE_PREFIX is non-NULL, use canon_relative_file_name instead.
References canon_relative_file_name(), file_name_hash_table, file_name_obstack, hash_table< Descriptor, Lazy, Allocator >::find_slot(), string_slot::len, NULL, string_slot::s, and string_slot_allocator.
Referenced by lto_location_cache::input_location_and_block().
|
static |
Look up the pair of RELATIVE_PREFIX and STRING strings in a hash table. If found, return the concatenation of those from the hash table, otherwise concatenate them.
References inchash::hash::add_ptr(), inchash::hash::end(), file_name_obstack, string_pair_map::hash, inchash::hash::merge_hash(), NULL, path_name_pair_hash_table, string_pair_map::prefix, string_pair_map::str1, string_pair_map::str2, string_pair_map::str3, and string_pair_map_allocator.
Referenced by canon_file_name().
|
static |
Look up DATA_WD in hash table of relative prefixes. If found, return relative path from CWD to DATA_WD from the hash table, otherwise create it.
References inchash::hash::add_int(), inchash::hash::add_ptr(), DIR_SEPARATOR, inchash::hash::end(), file_name_obstack, free(), gcc_assert, string_pair_map::hash, inchash::hash::merge_hash(), NULL, path_name_pair_hash_table, string_pair_map::prefix, relative_path_prefix(), string_pair_map::str1, string_pair_map::str2, string_pair_map::str3, and string_pair_map_allocator.
Referenced by lto_location_cache::input_location_and_block().
|
static |
Fixup call_stmt pointers in NODE and all clones.
References cgraph_node::clone_of, cgraph_node::clones, symtab_node::decl, DECL_STRUCT_FUNCTION, fixup_call_stmt_edges_1(), cgraph_node::next_sibling_clone, and cgraph_node::thunk.
Referenced by input_function().
|
static |
Go through all NODE edges and fixup call_stmt pointers so they point to STMTS.
References as_a(), cgraph_edge::call_stmt, cgraph_node::callees, fatal_error(), i, cgraph_node::indirect_calls, input_location, symtab_node::iterate_reference(), cgraph_edge::lto_stmt_uid, ipa_ref::lto_stmt_uid, cgraph_edge::next_callee, NULL, ipa_ref::stmt, and STMT_UID_NOT_IN_RANGE.
Referenced by fixup_call_stmt_edges().
|
static |
After reading the EH regions, pointers to peer and children regions are region numbers. This converts all these region numbers into real pointers into the rematerialized regions for FN. ROOT_REGION is the region number for the root EH region in FN.
References function::eh, FIXUP_EH_LP, FIXUP_EH_REGION, FOR_EACH_VEC_ELT, gcc_assert, i, eh_landing_pad_d::index, eh_status::lp_array, eh_landing_pad_d::next_lp, NULL, r, eh_landing_pad_d::region, eh_status::region_array, and eh_status::region_tree.
Referenced by input_eh_regions().
|
static |
Read the CFG for function FN from input block IB.
References alloc_loop(), loop::any_estimate, loop::any_likely_upper_bound, loop::any_upper_bound, BASIC_BLOCK_FOR_FN, basic_block_info_for_fn, bp_unpack_var_len_unsigned(), cfun, loop::dont_vectorize, ENTRY_BLOCK_PTR_FOR_FN, EST_LAST, loop::estimate_state, loop::finite_p, flow_loop_tree_node_add(), flow_loops_find(), loop::force_vectorize, gcc_assert, ggc_cleared_alloc(), loop::header, i, init_empty_tree_cfg_for_function(), init_loops_structure(), lto_location_cache::input_location_and_block(), label_to_block_map_for_fn, loops::larray, last_basic_block_for_fn, data_in::location_cache, basic_block_def::loop_father, make_edge(), make_new_block(), loop::nb_iterations_estimate, loop::nb_iterations_likely_upper_bound, loop::nb_iterations_upper_bound, basic_block_def::next_bb, NULL, loop::owned_clique, place_new_loop(), basic_block_def::prev_bb, PROFILE_LAST, profile_status_for_fn, loop::safelen, set_loops_for_fn(), SIGNED, loop::simduid, profile_probability::stream_in(), stream_read_tree, streamer_read_bitpack(), streamer_read_enum, streamer_read_hwi(), streamer_read_uhwi(), streamer_read_widest_int(), loops::tree_root, loop::unroll, and vec_safe_grow_cleared().
Referenced by input_function().
|
static |
Read the body of function FN_DECL from DATA_IN using input block IB.
References DECL_INITIAL, and stream_read_tree.
Referenced by lto_read_body_or_constructor().
|
static |
Read and return EH landing pad IX from input block IB, using descriptors in DATA_IN.
References gcc_assert, ggc_cleared_alloc(), eh_landing_pad_d::index, LTO_eh_landing_pad, LTO_null, lto_tag_check_range(), eh_landing_pad_d::next_lp, NULL, eh_landing_pad_d::post_landing_pad, eh_landing_pad_d::region, stream_read_tree, streamer_read_hwi(), and streamer_read_record_start().
Referenced by input_eh_regions().
|
static |
Read and return EH region IX from input block IB, using descriptors in DATA_IN.
References add_type_for_runtime(), ERT_ALLOWED_EXCEPTIONS, ERT_CLEANUP, ERT_MUST_NOT_THROW, ERT_TRY, gcc_assert, gcc_unreachable, ggc_cleared_alloc(), LTO_ert_allowed_exceptions, LTO_ert_cleanup, LTO_ert_must_not_throw, LTO_ert_try, lto_input_eh_catch_list(), LTO_null, NULL, r, stream_input_location, stream_read_tree, streamer_read_bitpack(), streamer_read_hwi(), streamer_read_record_start(), streamer_read_uhwi(), TREE_CHAIN, and TREE_VALUE.
Referenced by input_eh_regions().
|
static |
Read the exception table for FN from IB using the data descriptors in DATA_IN.
References eh_status::eh_status_u::arm_eabi, function::eh, eh_status::ehspec_data, fixup_eh_region_pointers(), gcc_assert, i, input_eh_lp(), input_eh_region(), eh_status::lp_array, LTO_eh_table, LTO_null, lto_tag_check_range(), eh_status::eh_status_u::other, r, eh_status::region_array, stream_read_tree, streamer_read_hwi(), streamer_read_record_start(), streamer_read_uchar(), targetm, eh_status::ttype_data, and vec_safe_grow_cleared().
Referenced by input_function().
|
static |
Read the body of function FN_DECL from DATA_IN using input block IB.
References lto_location_cache::apply_location_cache(), as_a(), bb_seq(), CDI_DOMINATORS, CDI_POST_DOMINATORS, cfun, cgraph_node::count_materialization_scale, DECL_ARGUMENTS, decl_debug_args_insert(), DECL_INITIAL, DECL_RESULT, DECL_SAVED_TREE, DECL_STRUCT_FUNCTION, ei_edge(), ei_start, ENTRY_BLOCK_PTR_FOR_FN, execute_all_ipa_stmt_fixups(), fixup_call_stmt_edges(), FOR_ALL_BB_FN, free(), free_dominance_info(), gcc_assert, gimple_block(), gimple_call_internal_fn(), gimple_call_internal_p(), gimple_call_set_internal_fn(), gimple_debug_inline_entry_p(), gimple_debug_nonbind_marker_p(), gimple_register_cfg_hooks(), gimple_set_body(), gimple_set_uid(), gimple_stmt_max_uid(), gimple_uid(), gsi_end_p(), gsi_next(), gsi_remove(), gsi_start_bb(), gsi_start_phis(), gsi_stmt(), i, inc_gimple_stmt_max_uid(), inlined_function_outer_scope_p(), input_bb(), input_cfg(), input_eh_regions(), input_ssa_names(), input_struct_function_base(), is_gimple_call(), is_gimple_debug(), data_in::location_cache, LTO_function, lto_tag_check(), MAY_HAVE_DEBUG_BIND_STMTS, MAY_HAVE_DEBUG_MARKER_STMTS, NULL_TREE, pop_cfun(), push_struct_function(), release_defs(), SANITIZE_ADDRESS, SANITIZE_ALIGNMENT, SANITIZE_BOUNDS, SANITIZE_NULL, SANITIZE_OBJECT_SIZE, SANITIZE_POINTER_OVERFLOW, SANITIZE_THREAD, SANITIZE_VPTR, set_gimple_stmt_max_uid(), stream_read_tree, streamer_read_chain(), streamer_read_record_start(), streamer_read_uhwi(), unlink_stmt_vdef(), update_max_bb_count(), update_stmt(), and vec_safe_grow().
Referenced by lto_read_body_or_constructor().
|
static |
Read the SSA names array for function FN from DATA_IN using input block IB.
References cfun, gimple_build_nop(), i, init_ssa_operands(), init_tree_ssa(), make_ssa_name_fn(), NULL, NULL_TREE, set_ssa_default_def(), ssa_name, SSA_NAME_DEF_STMT, SSA_NAME_VAR, SSANAMES, stream_read_tree, streamer_read_uchar(), and streamer_read_uhwi().
Referenced by input_function().
|
static |
Input the base body of struct function FN from DATA_IN using input block IB.
References function::after_inlining, function::always_inline_functions_inlined, function::assume_function, bp_unpack_value(), function::calls_alloca, function::calls_eh_return, function::calls_setjmp, function::can_delete_dead_exceptions, function::can_throw_non_call_exceptions, CHAR_BIT, function::curr_properties, function::decl, function::function_end_locus, function::function_start_locus, function::has_force_vectorize_loops, function::has_forced_label_in_static, function::has_local_explicit_reg_vars, function::has_musttail, function::has_nonlocal_label, function::has_simduid_loops, function::has_unroll, i, function::is_thunk, function::last_clique, function::local_decls, maybe_create_decl_to_instance_map(), function::nonlocal_goto_save_area, hash_map< KeyId, Value, Traits >::put(), function::returns_pcc_struct, function::returns_struct, function::static_chain_decl, function::stdarg, stream_input_location, stream_read_tree, streamer_read_bitpack(), streamer_read_hwi(), streamer_read_uhwi(), function::va_list_fpr_size, function::va_list_gpr_size, and vec_safe_grow_cleared().
Referenced by input_function().
class data_in * lto_data_in_create | ( | struct lto_file_decl_data * | file_data, |
const char * | strings, | ||
unsigned | len, | ||
vec< ld_plugin_symbol_resolution_t > | resolutions ) |
Create a new data_in object for FILE_DATA. STRINGS is the string table to use with LEN strings. RESOLUTIONS is the vector of linker resolutions (NULL if not using a linker plugin).
References data_in::file_data, data_in::globals_resolution, data_in::reader_cache, streamer_tree_cache_create(), data_in::strings, and data_in::strings_len.
Referenced by inline_read_section(), input_cgraph_opt_section(), ipa_odr_read_section(), ipa_prop_read_section(), lto_input_mode_table(), lto_input_toplevel_asms(), lto_read_body_or_constructor(), read_replacements_section(), and ipa_icf::sem_item_optimizer::read_section().
void lto_data_in_delete | ( | class data_in * | data_in | ) |
Remove DATA_IN.
References data_in::globals_resolution, data_in::reader_cache, and streamer_tree_cache_delete().
Referenced by inline_read_section(), input_cgraph_opt_section(), ipa_odr_read_section(), ipa_prop_read_section(), lto_input_mode_table(), lto_input_toplevel_asms(), lto_read_body_or_constructor(), read_replacements_section(), and ipa_icf::sem_item_optimizer::read_section().
void lto_free_file_name_hash | ( | void | ) |
Free hash table used to stream in location file names.
References file_name_hash_table, NULL, path_name_pair_hash_table, string_pair_map_allocator, and string_slot_allocator.
void lto_init_eh | ( | void | ) |
Initialize EH support.
References init_eh().
void lto_input_data_block | ( | class lto_input_block * | ib, |
void * | addr, | ||
size_t | length ) |
Read LENGTH bytes from STREAM to ADDR.
References i, and streamer_read_uchar().
|
static |
Read and return a double-linked list of catch handlers from input block IB, using descriptors in DATA_IN.
References add_type_for_runtime(), eh_catch_d::filter_list, ggc_cleared_alloc(), eh_catch_d::label, LTO_eh_catch, lto_tag_check_range(), NULL, eh_catch_d::prev_catch, stream_read_tree, streamer_read_record_start(), TREE_CHAIN, TREE_VALUE, and eh_catch_d::type_list.
Referenced by input_eh_region().
tree lto_input_fn_decl_ref | ( | lto_input_block * | ib, |
lto_file_decl_data * | file_data ) |
Read VAR_DECL reference to DATA from IB.
References lto_file_decl_data::current_decl_state, gcc_assert, LTO_DECL_STREAM, streamer_read_uhwi(), lto_in_decl_state::streams, and TREE_CODE.
Referenced by input_node(), and input_offload_tables().
void lto_input_function_body | ( | struct lto_file_decl_data * | file_data, |
struct cgraph_node * | node, | ||
const char * | data ) |
Read the body of NODE using DATA. FILE_DATA holds the global decls and types.
References lto_read_body_or_constructor(), and LTO_section_function_body.
Referenced by cgraph_node::get_untransformed_body().
Read a location bitpack from input block IB and either update *LOC directly or add it to the location cache. It is neccesary to call apply_location_cache to get *LOC updated.
References lto_location_cache::input_location(), and data_in::location_cache.
Referenced by lto_streamer_hooks_init().
void lto_input_mode_table | ( | struct lto_file_decl_data * | file_data | ) |
Input mode table.
References bp_unpack_enum, bp_unpack_indexed_string(), bp_unpack_poly_value(), bp_unpack_value(), fatal_error(), data_in::file_data, lto_file_decl_data::file_name, gcc_unreachable, GET_CLASS_NARROWEST_MODE, GET_MODE_CLASS, GET_MODE_FBIT, GET_MODE_IBIT, GET_MODE_INNER, GET_MODE_NUNITS(), GET_MODE_PRECISION(), GET_MODE_SIZE(), GET_MODE_WIDER_MODE(), ggc_cleared_vec_alloc(), host_num_poly_int_coeffs, internal_error(), lto_data_in_create(), lto_data_in_delete(), lto_free_section_data(), lto_get_summary_section_data(), LTO_section_mode_table, lto_simple_header::main_size, MAX_MODE_CLASS, MAX_NUM_POLY_INT_COEFFS_BITS, lto_file_decl_data::mode_bits, lto_file_decl_data::mode_table, NULL, REAL_MODE_FORMAT, streamer_read_bitpack(), lto_simple_header_with_strings::string_size, table, poly_int< N, C >::to_constant(), UNKNOWN_LOCATION, and vNULL.
hashval_t lto_input_scc | ( | class lto_input_block * | ib, |
class data_in * | data_in, | ||
unsigned * | len, | ||
unsigned * | entry_len, | ||
bool | shared_scc ) |
Populate the reader cache with trees materialized from the SCC following in the IB, DATA_IN stream. If SHARED_SCC is true we input LTO_tree_scc.
References gcc_unreachable, i, LTO_global_stream_ref, lto_input_tree_1(), LTO_integer_cst, LTO_null, lto_read_tree_1(), LTO_tree_pickle_reference, LTO_tree_scc, LTO_trees, streamer_tree_cache_d::nodes, data_in::reader_cache, streamer_alloc_tree(), streamer_read_record_start(), streamer_read_uhwi(), streamer_tree_cache_append(), and streamer_tree_cache_get_tree().
Referenced by lto_input_tree().
void lto_input_toplevel_asms | ( | struct lto_file_decl_data * | file_data, |
int | order_base ) |
Input toplevel asms.
References data_in::file_data, symbol_table::finalize_toplevel_asm(), lto_data_in_create(), lto_data_in_delete(), lto_free_section_data(), lto_get_summary_section_data(), LTO_section_asm, lto_simple_header::main_size, NULL, asm_node::order, symbol_table::order, streamer_read_hwi(), streamer_read_string_cst(), lto_simple_header_with_strings::string_size, symtab, and vNULL.
Referenced by input_cgraph_1().
tree lto_input_tree | ( | class lto_input_block * | ib, |
class data_in * | data_in ) |
tree lto_input_tree_1 | ( | class lto_input_block * | ib, |
class data_in * | data_in, | ||
enum LTO_tags | tag, | ||
hashval_t | hash ) |
Read a tree from input block IB using the per-file context in DATA_IN. This context is used, for example, to resolve references to previously read nodes.
References a, cfun, wide_int_storage::from_array(), gcc_assert, gcc_unreachable, i, LTO_global_stream_ref, lto_input_tree_ref(), LTO_integer_cst, LTO_null, LTO_NUM_TAGS, lto_read_tree(), LTO_ssa_name_ref, LTO_tree_pickle_reference, LTO_tree_scc, LTO_trees, NULL_TREE, data_in::reader_cache, stream_read_tree_ref(), streamer_get_pickled_tree(), streamer_read_hwi(), streamer_read_uhwi(), streamer_tree_cache_append(), TYPE_PRECISION, UNLIKELY, WIDE_INT_MAX_INL_ELTS, WIDE_INT_MAX_PRECISION, and wide_int_to_tree().
Referenced by lto_input_scc(), lto_input_tree(), and lto_read_tree_1().
tree lto_input_tree_ref | ( | class lto_input_block * | ib, |
class data_in * | data_in, | ||
struct function * | fn, | ||
enum LTO_tags | tag ) |
Read a reference to a tree node from DATA_IN using input block IB. TAG is the expected node that should be found in IB, if TAG belongs to one of the indexable trees, expect to read a reference index to be looked up in one of the symbol tables, otherwise read the pysical representation of the tree using stream_read_tree. FN is the function scope for the read tree.
References lto_file_decl_data::current_decl_state, data_in::file_data, gcc_assert, gcc_checking_assert, LTO_DECL_STREAM, LTO_global_stream_ref, LTO_ssa_name_ref, NULL_TREE, SSANAMES, streamer_read_uhwi(), and lto_in_decl_state::streams.
Referenced by lto_input_tree_1().
tree lto_input_var_decl_ref | ( | lto_input_block * | ib, |
lto_file_decl_data * | file_data ) |
Read VAR_DECL reference to DATA from IB.
References lto_file_decl_data::current_decl_state, gcc_assert, LTO_DECL_STREAM, streamer_read_uhwi(), lto_in_decl_state::streams, and VAR_P.
Referenced by input_offload_tables(), input_varpool_node(), and ipa_reference_read_optimization_summary().
void lto_input_variable_constructor | ( | struct lto_file_decl_data * | file_data, |
struct varpool_node * | node, | ||
const char * | data ) |
Read the body of NODE using DATA. FILE_DATA holds the global decls and types.
References lto_read_body_or_constructor(), and LTO_section_function_body.
Referenced by varpool_node::get_constructor().
|
static |
Read the body from DATA for function NODE and fill it in. FILE_DATA are the global decls and types. SECTION_TYPE is either LTO_section_function_body or LTO_section_static_initializer. If section type is LTO_section_function_body, FN must be the decl for that function.
References lto_location_cache::apply_location_cache(), cache, canonical_type_used_p(), lto_function_header::cfg_size, lto_file_decl_data::current_decl_state, symtab_node::decl, dyn_cast(), lto_in_decl_state::fn_decl, gcc_assert, gcc_checking_assert, lto_file_decl_data::global_decl_state, i, input_constructor(), input_function(), data_in::location_cache, lto_data_in_create(), lto_data_in_delete(), lto_get_function_in_decl_state(), LTO_section_function_body, lto_simple_header::main_size, streamer_tree_cache_d::nodes, NULL_TREE, data_in::reader_cache, streamer_tree_cache_get_tree(), lto_simple_header_with_strings::string_size, TREE_CODE, TYPE_CANONICAL, TYPE_MAIN_VARIANT, TYPE_NEXT_VARIANT, TYPE_P, TYPE_STRUCTURAL_EQUALITY_P, type_with_alias_set_p(), and vNULL.
Referenced by lto_input_function_body(), and lto_input_variable_constructor().
|
static |
Read the physical representation of a tree node with tag TAG from input block IB using the per-file context in DATA_IN.
References lto_read_tree_1(), data_in::reader_cache, streamer_alloc_tree(), and streamer_tree_cache_append().
Referenced by lto_input_tree_1().
|
static |
Read the physical representation of a tree node EXPR from input block IB using the per-file context in DATA_IN.
References AGGREGATE_TYPE_P, DECL_ABSTRACT_ORIGIN, DECL_INITIAL, DECL_MODE, DECL_P, dref_queue, opt_mode< T >::else_blk(), expr, lto_input_tree_1(), mode_for_vector(), NULL_TREE, SCALAR_TYPE_MODE, SET_DECL_MODE, SET_TYPE_MODE, streamer_read_record_start(), streamer_read_string(), streamer_read_tree_bitfields(), streamer_read_tree_body(), streamer_read_uhwi(), TREE_CODE, TREE_TYPE, TYPE_MODE, TYPE_MODE_RAW, TYPE_VECTOR_SUBPARTS(), VAR_P, and VECTOR_TYPE_P.
Referenced by lto_input_scc(), and lto_read_tree().
void lto_reader_init | ( | void | ) |
Initialization for the LTO reader.
References file_name_hash_table, file_name_obstack, gcc_obstack_init, lto_streamer_init(), and string_slot_allocator.
void lto_tag_check_set | ( | enum LTO_tags | actual, |
int | ntags, | ||
... ) |
Check that tag ACTUAL has one of the given values. NUM_TAGS is the number of valid tag values to check.
References ap, i, internal_error(), and lto_tag_name().
Referenced by input_bb().
|
static |
Make a new basic block with index INDEX in function FN.
References alloc_block(), basic_block_def::index, n_basic_blocks_for_fn, and SET_BASIC_BLOCK_FOR_FN.
Referenced by input_cfg().
|
static |
Compute the relative path to get to DATA_WD (absolute directory name) from CWD (another absolute directory name). E.g. for DATA_WD of "/tmp/foo/bar" and CWD of "/tmp/baz/qux" return "../../foo/bar". Returned string should be freed by the caller. Return NULL if absolute file name needs to be used.
References DIR_SEPARATOR, i, and NULL.
Referenced by canon_relative_path_prefix().
tree stream_read_tree_ref | ( | lto_input_block * | ib, |
data_in * | data_in ) |
Read reference to tree from IB and DATA_IN. This is used for streaming tree bodies where we know that the tree is already in cache or is indexable and must be matched with stream_write_tree_ref.
References cfun, lto_file_decl_data::current_decl_state, data_in::file_data, LTO_DECL_STREAM, NULL_TREE, data_in::reader_cache, SSANAMES, streamer_read_hwi(), streamer_tree_cache_get_tree(), and lto_in_decl_state::streams.
Referenced by lto_input_tree_1(), lto_input_ts_binfo_tree_pointers(), lto_input_ts_block_tree_pointers(), lto_input_ts_common_tree_pointers(), lto_input_ts_complex_tree_pointers(), lto_input_ts_constructor_tree_pointers(), lto_input_ts_decl_common_tree_pointers(), lto_input_ts_decl_minimal_tree_pointers(), lto_input_ts_decl_with_vis_tree_pointers(), lto_input_ts_exp_tree_pointers(), lto_input_ts_field_decl_tree_pointers(), lto_input_ts_function_decl_tree_pointers(), lto_input_ts_list_tree_pointers(), lto_input_ts_omp_clause_tree_pointers(), lto_input_ts_poly_tree_pointers(), lto_input_ts_raw_data_cst_tree_pointers(), lto_input_ts_type_common_tree_pointers(), lto_input_ts_type_non_common_tree_pointers(), lto_input_ts_vec_tree_pointers(), lto_input_ts_vector_tree_pointers(), and streamer_read_chain().
|
static |
Read a chain of tree nodes from input block IB. DATA_IN contains tables and descriptors for the file being read.
References NULL_TREE, stream_read_tree, and TREE_CHAIN.
Referenced by input_function().
vec<dref_entry> dref_queue |
Queue of acummulated decl -> DIE mappings. Similar to locations those are only applied to prevailing tree nodes during tree merging.
Referenced by lto_input_tree(), and lto_read_tree_1().
|
static |
The table to hold the file names.
Referenced by canon_file_name(), lto_free_file_name_hash(), and lto_reader_init().
|
static |
The table to hold the relative pathname prefixes.
This obstack holds file names used in locators. Line map datastructures points here and thus it needs to be kept allocated as long as linemaps exists.
Referenced by canon_file_name(), canon_relative_file_name(), canon_relative_path_prefix(), and lto_reader_init().
|
static |
The table to hold the pairs of pathnames and corresponding resulting pathname. Used for both mapping of get_src_pwd () and recorded source working directory to relative path prefix from current working directory to the recorded one, and for mapping of that relative path prefix and some relative path to those concatenated.
Referenced by canon_relative_file_name(), canon_relative_path_prefix(), and lto_free_file_name_hash().
|
static |
Allocator used to hold string pair map entries for line map streaming.
Referenced by canon_relative_file_name(), canon_relative_path_prefix(), and lto_free_file_name_hash().
|
static |
Allocator used to hold string slot entries for line map streaming.
Referenced by canon_file_name(), lto_free_file_name_hash(), and lto_reader_init().