GCC Middle and Back End API Reference
lto-streamer.h File Reference
#include "plugin-api.h"
#include "gcov-io.h"
#include "diagnostic.h"
#include "version.h"
Include dependency graph for lto-streamer.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

class  lto_location_cache
 
struct  lto_location_cache::cached_location
 
class  lto_input_block
 
struct  lto_section
 
struct  lto_simple_header
 
struct  lto_simple_header_with_strings
 
struct  lto_function_header
 
struct  lto_decl_header
 
struct  lto_stats_d
 
struct  lto_encoder_entry
 
struct  lto_symtab_encoder_d
 
struct  lto_symtab_encoder_iterator
 
struct  lto_tree_ref_encoder
 
struct  lto_in_decl_state
 
struct  decl_state_hasher
 
struct  lto_out_decl_state
 
struct  res_pair
 
struct  lto_file_decl_data
 
struct  lto_char_ptr_base
 
struct  lto_output_stream
 
struct  lto_simple_output_block
 
struct  string_slot
 
struct  string_slot_hasher
 
struct  output_block
 
class  data_in
 
struct  dref_entry
 

Macros

#define LTO_major_version   GCC_major_version
 
#define LTO_minor_version   0
 
#define LCC_NOT_FOUND   (-1)
 

Typedefs

typedef unsigned char lto_decl_flags_t
 
typedef enum ld_plugin_symbol_resolution ld_plugin_symbol_resolution_t
 
typedef const charlto_get_section_data_f(struct lto_file_decl_data *, enum lto_section_type, const char *, int, size_t *)
 
typedef void lto_free_section_data_f(struct lto_file_decl_data *, enum lto_section_type, const char *, const char *, size_t)
 
typedef struct lto_symtab_encoder_dlto_symtab_encoder_t
 
typedef struct lto_in_decl_statelto_in_decl_state_ptr
 
typedef struct lto_out_decl_statelto_out_decl_state_ptr
 
typedef struct lto_file_decl_datalto_file_decl_data_ptr
 

Enumerations

enum  LTO_tags {
  LTO_null = 0 , LTO_tree_pickle_reference , LTO_global_stream_ref , LTO_ssa_name_ref ,
  LTO_tree_scc , LTO_trees , LTO_integer_cst , LTO_first_tree_tag ,
  LTO_first_gimple_tag = LTO_first_tree_tag + MAX_TREE_CODES , LTO_bb0 = LTO_first_gimple_tag + LAST_AND_UNUSED_GIMPLE_CODE , LTO_bb1 , LTO_eh_region ,
  LTO_function , LTO_eh_table , LTO_ert_cleanup , LTO_ert_try ,
  LTO_ert_allowed_exceptions , LTO_ert_must_not_throw , LTO_eh_landing_pad , LTO_eh_catch ,
  LTO_NUM_TAGS
}
 
enum  lto_section_type {
  LTO_section_decls = 0 , LTO_section_function_body , LTO_section_static_initializer , LTO_section_symtab ,
  LTO_section_symtab_extension , LTO_section_refs , LTO_section_asm , LTO_section_jump_functions ,
  LTO_section_ipa_pure_const , LTO_section_ipa_reference , LTO_section_ipa_profile , LTO_section_symtab_nodes ,
  LTO_section_opts , LTO_section_cgraph_opt_sum , LTO_section_ipa_fn_summary , LTO_section_ipcp_transform ,
  LTO_section_ipa_icf , LTO_section_offload_table , LTO_section_mode_table , LTO_section_lto ,
  LTO_section_ipa_sra , LTO_section_odr_types , LTO_section_ipa_modref , LTO_N_SECTION_TYPES
}
 
enum  lto_decl_stream_e_t { LTO_DECL_STREAM = 0 , LTO_N_DECL_STREAMS }
 
enum  lto_compression { ZLIB , ZSTD }
 

Functions

 STATIC_ASSERT (sizeof(lto_section)==8)
 
class lto_input_blocklto_create_simple_input_block (struct lto_file_decl_data *, enum lto_section_type, const char **, size_t *)
 
void lto_destroy_simple_input_block (struct lto_file_decl_data *, enum lto_section_type, class lto_input_block *, const char *, size_t)
 
void lto_set_in_hooks (struct lto_file_decl_data **, lto_get_section_data_f *, lto_free_section_data_f *)
 
struct lto_file_decl_data ** lto_get_file_decl_data (void)
 
const charlto_get_section_data (struct lto_file_decl_data *, enum lto_section_type, const char *, int, size_t *, bool decompress=false)
 
const charlto_get_summary_section_data (struct lto_file_decl_data *, enum lto_section_type, size_t *)
 
const charlto_get_raw_section_data (struct lto_file_decl_data *, enum lto_section_type, const char *, int, size_t *)
 
void lto_free_section_data (struct lto_file_decl_data *, enum lto_section_type, const char *, const char *, size_t, bool decompress=false)
 
void lto_free_raw_section_data (struct lto_file_decl_data *, enum lto_section_type, const char *, const char *, size_t)
 
htab_t lto_create_renaming_table (void)
 
void lto_record_renamed_decl (struct lto_file_decl_data *, const char *, const char *)
 
const charlto_get_decl_name_mapping (struct lto_file_decl_data *, const char *)
 
struct lto_in_decl_statelto_new_in_decl_state (void)
 
void lto_delete_in_decl_state (struct lto_in_decl_state *)
 
struct lto_in_decl_statelto_get_function_in_decl_state (struct lto_file_decl_data *, tree)
 
void lto_free_function_in_decl_state (struct lto_in_decl_state *)
 
void lto_free_function_in_decl_state_for_node (symtab_node *)
 
void lto_section_overrun (class lto_input_block *) ATTRIBUTE_NORETURN
 
void lto_value_range_error (const char *, HOST_WIDE_INT, HOST_WIDE_INT, HOST_WIDE_INT) ATTRIBUTE_NORETURN
 
void lto_begin_section (const char *, bool)
 
void lto_end_section (void)
 
void lto_write_data (const void *, unsigned int)
 
void lto_write_raw_data (const void *, unsigned int)
 
void lto_write_stream (struct lto_output_stream *)
 
struct lto_simple_output_blocklto_create_simple_output_block (enum lto_section_type)
 
void lto_destroy_simple_output_block (struct lto_simple_output_block *)
 
struct lto_out_decl_statelto_new_out_decl_state (void)
 
void lto_delete_out_decl_state (struct lto_out_decl_state *)
 
struct lto_out_decl_statelto_get_out_decl_state (void)
 
void lto_push_out_decl_state (struct lto_out_decl_state *)
 
struct lto_out_decl_statelto_pop_out_decl_state (void)
 
void lto_record_function_out_decl_state (tree, struct lto_out_decl_state *)
 
void lto_append_block (struct lto_output_stream *)
 
const charlto_tag_name (enum LTO_tags)
 
charlto_get_section_name (int, const char *, int, struct lto_file_decl_data *)
 
void print_lto_report (const char *)
 
void lto_streamer_init (void)
 
bool gate_lto_out (void)
 
void lto_check_version (int, int, const char *)
 
void lto_streamer_hooks_init (void)
 
void lto_input_cgraph (struct lto_file_decl_data *, const char *)
 
void lto_reader_init (void)
 
void lto_free_file_name_hash (void)
 
void lto_input_function_body (struct lto_file_decl_data *, struct cgraph_node *, const char *)
 
void lto_input_variable_constructor (struct lto_file_decl_data *, struct varpool_node *, const char *)
 
void lto_input_constructors_and_inits (struct lto_file_decl_data *, const char *)
 
void lto_input_toplevel_asms (struct lto_file_decl_data *, int)
 
void lto_input_mode_table (struct lto_file_decl_data *)
 
class data_inlto_data_in_create (struct lto_file_decl_data *, const char *, unsigned, vec< ld_plugin_symbol_resolution_t >)
 
void lto_data_in_delete (class data_in *)
 
void lto_input_data_block (class lto_input_block *, void *, size_t)
 
void lto_input_location (location_t *, struct bitpack_d *, class data_in *)
 
tree lto_input_tree_ref (class lto_input_block *, class data_in *, struct function *, enum LTO_tags)
 
void lto_tag_check_set (enum LTO_tags, int,...)
 
void lto_init_eh (void)
 
hashval_t lto_input_scc (class lto_input_block *, class data_in *, unsigned *, unsigned *, bool)
 
tree lto_input_tree_1 (class lto_input_block *, class data_in *, enum LTO_tags, hashval_t hash)
 
tree lto_input_tree (class lto_input_block *, class data_in *)
 
tree stream_read_tree_ref (class lto_input_block *, class data_in *)
 
void lto_register_decl_definition (tree, struct lto_file_decl_data *)
 
struct output_blockcreate_output_block (enum lto_section_type)
 
void destroy_output_block (struct output_block *)
 
void lto_output_tree (struct output_block *, tree, bool, bool)
 
void stream_write_tree_ref (struct output_block *, tree)
 
void lto_output_var_decl_ref (struct lto_out_decl_state *, struct lto_output_stream *, tree)
 
void lto_output_fn_decl_ref (struct lto_out_decl_state *, struct lto_output_stream *, tree)
 
tree lto_input_var_decl_ref (lto_input_block *, lto_file_decl_data *)
 
tree lto_input_fn_decl_ref (lto_input_block *, lto_file_decl_data *)
 
void lto_output_toplevel_asms (void)
 
void produce_asm (struct output_block *ob, tree fn)
 
void lto_output ()
 
void produce_asm_for_decls ()
 
void lto_output_decl_state_streams (struct output_block *, struct lto_out_decl_state *)
 
void lto_output_decl_state_refs (struct output_block *, struct lto_output_stream *, struct lto_out_decl_state *)
 
void lto_output_location (struct output_block *, struct bitpack_d *, location_t)
 
void lto_output_location_and_block (struct output_block *, struct bitpack_d *, location_t)
 
void lto_output_init_mode_table (void)
 
void lto_prepare_function_for_streaming (cgraph_node *)
 
lto_symtab_encoder_t lto_symtab_encoder_new (bool)
 
int lto_symtab_encoder_encode (lto_symtab_encoder_t, symtab_node *)
 
void lto_symtab_encoder_delete (lto_symtab_encoder_t)
 
bool lto_symtab_encoder_delete_node (lto_symtab_encoder_t, symtab_node *)
 
bool lto_symtab_encoder_encode_body_p (lto_symtab_encoder_t, struct cgraph_node *)
 
bool lto_symtab_encoder_in_partition_p (lto_symtab_encoder_t, symtab_node *)
 
void lto_set_symtab_encoder_in_partition (lto_symtab_encoder_t, symtab_node *)
 
bool lto_symtab_encoder_encode_initializer_p (lto_symtab_encoder_t, varpool_node *)
 
void output_symtab (void)
 
void input_symtab (void)
 
void output_offload_tables (void)
 
void input_offload_tables (bool)
 
bool referenced_from_other_partition_p (struct ipa_ref_list *, lto_symtab_encoder_t)
 
bool reachable_from_other_partition_p (struct cgraph_node *, lto_symtab_encoder_t)
 
bool referenced_from_this_partition_p (symtab_node *, lto_symtab_encoder_t)
 
bool reachable_from_this_partition_p (struct cgraph_node *, lto_symtab_encoder_t)
 
lto_symtab_encoder_t compute_ltrans_boundary (lto_symtab_encoder_t encoder)
 
void select_what_to_stream (void)
 
void omp_lto_output_declare_variant_alt (lto_simple_output_block *, cgraph_node *, lto_symtab_encoder_t)
 
void omp_lto_input_declare_variant_alt (lto_input_block *, cgraph_node *, vec< symtab_node * >)
 
void cl_target_option_stream_out (struct output_block *, struct bitpack_d *, struct cl_target_option *)
 
void cl_target_option_stream_in (class data_in *, struct bitpack_d *, struct cl_target_option *)
 
void cl_optimization_stream_out (struct output_block *, struct bitpack_d *, struct cl_optimization *)
 
void cl_optimization_stream_in (class data_in *, struct bitpack_d *, struct cl_optimization *)
 
void lto_write_options (void)
 
bool lto_tag_is_tree_code_p (enum LTO_tags tag)
 
bool lto_tag_is_gimple_code_p (enum LTO_tags tag)
 
enum LTO_tags lto_gimple_code_to_tag (enum gimple_code code)
 
enum gimple_code lto_tag_to_gimple_code (enum LTO_tags tag)
 
enum LTO_tags lto_tree_code_to_tag (enum tree_code code)
 
enum tree_code lto_tag_to_tree_code (enum LTO_tags tag)
 
void lto_tag_check (enum LTO_tags actual, enum LTO_tags expected)
 
void lto_tag_check_range (enum LTO_tags actual, enum LTO_tags tag1, enum LTO_tags tag2)
 
void lto_init_tree_ref_encoder (struct lto_tree_ref_encoder *encoder)
 
void lto_destroy_tree_ref_encoder (struct lto_tree_ref_encoder *encoder)
 
unsigned int lto_tree_ref_encoder_size (struct lto_tree_ref_encoder *encoder)
 
tree lto_tree_ref_encoder_get_tree (struct lto_tree_ref_encoder *encoder, unsigned int idx)
 
int lto_symtab_encoder_size (lto_symtab_encoder_t encoder)
 
int lto_symtab_encoder_lookup (lto_symtab_encoder_t encoder, symtab_node *node)
 
bool lsei_end_p (lto_symtab_encoder_iterator lsei)
 
void lsei_next (lto_symtab_encoder_iterator *lsei)
 
symtab_nodelsei_node (lto_symtab_encoder_iterator lsei)
 
struct cgraph_nodelsei_cgraph_node (lto_symtab_encoder_iterator lsei)
 
varpool_nodelsei_varpool_node (lto_symtab_encoder_iterator lsei)
 
symtab_nodelto_symtab_encoder_deref (lto_symtab_encoder_t encoder, int ref)
 
lto_symtab_encoder_iterator lsei_start (lto_symtab_encoder_t encoder)
 
void lsei_next_in_partition (lto_symtab_encoder_iterator *lsei)
 
lto_symtab_encoder_iterator lsei_start_in_partition (lto_symtab_encoder_t encoder)
 
void lsei_next_function_in_partition (lto_symtab_encoder_iterator *lsei)
 
lto_symtab_encoder_iterator lsei_start_function_in_partition (lto_symtab_encoder_t encoder)
 
void lsei_next_variable_in_partition (lto_symtab_encoder_iterator *lsei)
 
lto_symtab_encoder_iterator lsei_start_variable_in_partition (lto_symtab_encoder_t encoder)
 

Variables

static const bool streamer_debugging = false
 
bool lto_stream_offload_p
 
bool asm_nodes_output
 
struct lto_stats_d lto_stats
 
const charlto_section_name []
 
vec< lto_out_decl_state_ptrlto_function_decl_states
 
vec< dref_entrydref_queue
 
FILEstreamer_dump_file
 

Macro Definition Documentation

◆ LCC_NOT_FOUND

◆ LTO_major_version

#define LTO_major_version   GCC_major_version
Data structures and declarations used for reading and writing
   GIMPLE to a file stream.

   Copyright (C) 2009-2024 Free Software Foundation, Inc.
   Contributed by Doug Kwan <dougkwan@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/>.   
The encoding for a function consists of the following sections:

1)    The header.
2)    FIELD_DECLS.
3)    FUNCTION_DECLS.
4)    global VAR_DECLS.
5)    type_decls
6)    types.
7)    Names for the labels that have names
8)    The SSA names.
9)    The control flow graph.
10-11)Gimple for local decls.
12)   Gimple for the function.
13)   Strings.

1) THE HEADER.
2-6) THE GLOBAL DECLS AND TYPES.

   The global decls and types are encoded in the same way.  For each
   entry, there is word with the offset within the section to the
   entry.

7) THE LABEL NAMES.

   Since most labels do not have names, this section my be of zero
   length.  It consists of an array of string table references, one
   per label.  In the lto code, the labels are given either
   positive or negative indexes.  the positive ones have names and
   the negative ones do not.  The positive index can be used to
   find the name in this array.

9) THE CFG.

10) Index into the local decls.  Since local decls can have local
   decls inside them, they must be read in randomly in order to
   properly restore them.

11-12) GIMPLE FOR THE LOCAL DECLS AND THE FUNCTION BODY.

  The gimple consists of a set of records.

  THE FUNCTION

  At the top level of (8) is the function. It consists of five
  pieces:

  LTO_function     - The tag.
  eh tree          - This is all of the exception handling regions
                     put out in a post order traversial of the
                     tree.  Siblings are output as lists terminated
                by a 0.  The set of fields matches the fields
                defined in except.cc.

  last_basic_block - in uleb128 form.

  basic blocks     - This is the set of basic blocks.

  zero             - The termination of the basic blocks.

  BASIC BLOCKS

  There are two forms of basic blocks depending on if they are
  empty or not.

  The basic block consists of:

  LTO_bb1 or LTO_bb0 - The tag.

  bb->index          - the index in uleb128 form.

  #succs             - The number of successors un uleb128 form.

  the successors     - For each edge, a pair.  The first of the
                       pair is the index of the successor in
                       uleb128 form and the second are the flags in
                       uleb128 form.

  the statements     - A gimple tree, as described above.
                       These are only present for LTO_BB1.
                       Following each statement is an optional
                       exception handling record LTO_eh_region
                  which contains the region number (for
                  regions >= 0).

  zero               - This is only present for LTO_BB1 and is used
                  to terminate the statements and exception
                  regions within this block.

12) STRINGS

  String are represented in the table as pairs, a length in ULEB128
  form followed by the data for the string.   

Referenced by lto_check_version(), and produce_lto_section().

◆ LTO_minor_version

#define LTO_minor_version   0

Typedef Documentation

◆ ld_plugin_symbol_resolution_t

◆ lto_decl_flags_t

◆ lto_file_decl_data_ptr

◆ lto_free_section_data_f

Return the data found from the above call.  The first three
parameters are the same as above.  The fourth parameter is the data
itself and the fifth is the length of the data.  

◆ lto_get_section_data_f

typedef const char * lto_get_section_data_f(struct lto_file_decl_data *, enum lto_section_type, const char *, int, size_t *)
Return a char pointer to the start of a data stream for an lto pass
or function.  The first parameter is the file data that contains
the information.  The second parameter is the type of information
to be obtained.  The third parameter is the name of the function
and is only used when finding a function body; otherwise it is
NULL.  The fourth parameter is the length of the data returned.   

◆ lto_in_decl_state_ptr

◆ lto_out_decl_state_ptr

◆ lto_symtab_encoder_t

Enumeration Type Documentation

◆ lto_compression

Compression algorithm used for compression of LTO bytecode.   
Enumerator
ZLIB 
ZSTD 

◆ lto_decl_stream_e_t

Indices to the various function, type and symbol streams.  
Enumerator
LTO_DECL_STREAM 
LTO_N_DECL_STREAMS 

◆ lto_section_type

Set of section types that are in an LTO file.  This list will grow
as the number of IPA passes grows since each IPA pass will need its
own section type to store its summary information.

When adding a new section type, you must also extend the
LTO_SECTION_NAME array in lto-section-in.cc.   
Enumerator
LTO_section_decls 
LTO_section_function_body 
LTO_section_static_initializer 
LTO_section_symtab 
LTO_section_symtab_extension 
LTO_section_refs 
LTO_section_asm 
LTO_section_jump_functions 
LTO_section_ipa_pure_const 
LTO_section_ipa_reference 
LTO_section_ipa_profile 
LTO_section_symtab_nodes 
LTO_section_opts 
LTO_section_cgraph_opt_sum 
LTO_section_ipa_fn_summary 
LTO_section_ipcp_transform 
LTO_section_ipa_icf 
LTO_section_offload_table 
LTO_section_mode_table 
LTO_section_lto 
LTO_section_ipa_sra 
LTO_section_odr_types 
LTO_section_ipa_modref 
LTO_N_SECTION_TYPES 

◆ LTO_tags

Tags representing the various IL objects written to the bytecode file
(GIMPLE statements, basic blocks, EH regions, tree nodes, etc).

NOTE, when adding new LTO tags, also update lto_tag_name.   
Enumerator
LTO_null 
LTO_tree_pickle_reference 
LTO_global_stream_ref 
LTO_ssa_name_ref 
LTO_tree_scc 
LTO_trees 
LTO_integer_cst 
LTO_first_tree_tag 
LTO_first_gimple_tag 
LTO_bb0 
LTO_bb1 
LTO_eh_region 
LTO_function 
LTO_eh_table 
LTO_ert_cleanup 
LTO_ert_try 
LTO_ert_allowed_exceptions 
LTO_ert_must_not_throw 
LTO_eh_landing_pad 
LTO_eh_catch 
LTO_NUM_TAGS 

Function Documentation

◆ cl_optimization_stream_in()

void cl_optimization_stream_in ( class data_in * ,
struct bitpack_d * ,
struct cl_optimization *  )

◆ cl_optimization_stream_out()

void cl_optimization_stream_out ( struct output_block * ,
struct bitpack_d * ,
struct cl_optimization *  )

◆ cl_target_option_stream_in()

void cl_target_option_stream_in ( class data_in * ,
struct bitpack_d * ,
struct cl_target_option *  )

◆ cl_target_option_stream_out()

void cl_target_option_stream_out ( struct output_block * ,
struct bitpack_d * ,
struct cl_target_option *  )
In options-save.cc.   

Referenced by streamer_write_tree_bitfields().

◆ compute_ltrans_boundary()

◆ create_output_block()

◆ destroy_output_block()

◆ gate_lto_out()

bool gate_lto_out ( void )
extern
Gate function for all LTO streaming passes.   

References ggc_alloc(), and seen_error().

◆ input_offload_tables()

◆ input_symtab()

◆ lsei_cgraph_node()

◆ lsei_end_p()

◆ lsei_next()

◆ lsei_next_function_in_partition()

◆ lsei_next_in_partition()

◆ lsei_next_variable_in_partition()

void lsei_next_variable_in_partition ( lto_symtab_encoder_iterator * lsei)
inline

◆ lsei_node()

◆ lsei_start()

◆ lsei_start_function_in_partition()

◆ lsei_start_in_partition()

lto_symtab_encoder_iterator lsei_start_in_partition ( lto_symtab_encoder_t encoder)
inline

◆ lsei_start_variable_in_partition()

lto_symtab_encoder_iterator lsei_start_variable_in_partition ( lto_symtab_encoder_t encoder)
inline

◆ lsei_varpool_node()

varpool_node * lsei_varpool_node ( lto_symtab_encoder_iterator lsei)
inline
Return the node pointed to by LSI.   

References ggc_alloc().

Referenced by compute_ltrans_boundary().

◆ lto_append_block()

void lto_append_block ( struct lto_output_stream * obs)
extern
Routines for saving various data types to a file stream.  This deals
   with various data types like strings, integers, enums, etc.

   Copyright (C) 2011-2024 Free Software Foundation, Inc.
   Contributed 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/>.   
Adds a new block to output stream OBS.   

References gcc_assert, ggc_alloc(), NULL, and lto_char_ptr_base::ptr.

Referenced by streamer_write_char_stream(), streamer_write_data_stream(), streamer_write_hwi_stream(), and streamer_write_uhwi_stream().

◆ lto_begin_section()

◆ lto_check_version()

void lto_check_version ( int major,
int minor,
const char * file_name )
extern
Check that the version MAJOR.MINOR is the correct version number.   

References fatal_error(), ggc_alloc(), input_location, LTO_major_version, and LTO_minor_version.

◆ lto_create_renaming_table()

htab_t lto_create_renaming_table ( void )
extern
Create an empty hash table for recording declaration renamings.   

References eq_name(), ggc_alloc(), hash_name(), and renaming_slot_free().

◆ lto_create_simple_input_block()

class lto_input_block * lto_create_simple_input_block ( struct lto_file_decl_data * file_data,
enum lto_section_type section_type,
const char ** datar,
size_t * len )
extern
In lto-section-in.cc   
Load a section of type SECTION_TYPE from FILE_DATA, parse the
header and then return an input block pointing to the section.  The
raw pointer to the section is returned in DATAR and LEN.  These are
used to free the section.  Return NULL if the section is not present.   

References lto_input_block::file_data, ggc_alloc(), lto_input_block::len, lto_get_section_data(), lto_simple_header::main_size, and NULL.

Referenced by input_offload_tables(), input_symtab(), ipa_profile_read_summary(), ipa_reference_read_optimization_summary(), and pure_const_read_summary().

◆ lto_create_simple_output_block()

◆ lto_data_in_create()

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 )
extern

◆ lto_data_in_delete()

◆ lto_delete_in_decl_state()

void lto_delete_in_decl_state ( struct lto_in_decl_state * state)
extern
Delete STATE and its components.  

References ggc_free(), i, LTO_N_DECL_STREAMS, and vec_free().

◆ lto_delete_out_decl_state()

void lto_delete_out_decl_state ( struct lto_out_decl_state * state)
extern

◆ lto_destroy_simple_input_block()

void lto_destroy_simple_input_block ( struct lto_file_decl_data * file_data,
enum lto_section_type section_type,
class lto_input_block * ib,
const char * data,
size_t len )
extern
Close the section returned from a call to
LTO_CREATE_SIMPLE_INPUT_BLOCK.  IB is the input block returned from
that call.  The FILE_DATA and SECTION_TYPE are the same as what was
passed to that call and the DATA and LEN are what was returned from
that call.   

References ggc_alloc(), lto_free_section_data(), and NULL.

Referenced by input_offload_tables(), input_symtab(), ipa_profile_read_summary(), ipa_reference_read_optimization_summary(), and pure_const_read_summary().

◆ lto_destroy_simple_output_block()

◆ lto_destroy_tree_ref_encoder()

void lto_destroy_tree_ref_encoder ( struct lto_tree_ref_encoder * encoder)
inline
Destroy an lto_tree_ref_encoder ENCODER by freeing its contents.  The
memory used by ENCODER is not freed by this function.   

References NULL, lto_tree_ref_encoder::tree_hash_table, and lto_tree_ref_encoder::trees.

Referenced by lto_delete_out_decl_state().

◆ lto_end_section()

◆ lto_free_file_name_hash()

void lto_free_file_name_hash ( void )
extern
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.

◆ lto_free_function_in_decl_state()

void lto_free_function_in_decl_state ( struct lto_in_decl_state * state)
extern
Free decl_states.   

References ggc_free(), i, LTO_N_DECL_STREAMS, and vec_free().

Referenced by lto_free_function_in_decl_state_for_node().

◆ lto_free_function_in_decl_state_for_node()

◆ lto_free_raw_section_data()

void lto_free_raw_section_data ( struct lto_file_decl_data * file_data,
enum lto_section_type section_type,
const char * name,
const char * data,
size_t len )
extern
Free data allocated by lto_get_raw_section_data.   

References free_section_f, and lto_data_header::len.

Referenced by copy_function_or_variable().

◆ lto_free_section_data()

void lto_free_section_data ( struct lto_file_decl_data * file_data,
enum lto_section_type section_type,
const char * name,
const char * data,
size_t len,
bool decompress )
extern

◆ lto_get_decl_name_mapping()

const char * lto_get_decl_name_mapping ( struct lto_file_decl_data * decl_data,
const char * name )
extern
Given a string NAME, return the string that it has been mapped to
by lto_record_renamed_decl.  If NAME was not renamed, it is
returned unchanged.  DECL_DATA holds the renaming hash table to use.   

References ggc_alloc().

Referenced by copy_function_or_variable(), varpool_node::get_constructor(), and cgraph_node::get_untransformed_body().

◆ lto_get_file_decl_data()

◆ lto_get_function_in_decl_state()

struct lto_in_decl_state * lto_get_function_in_decl_state ( struct lto_file_decl_data * file_data,
tree func )
extern

◆ lto_get_out_decl_state()

◆ lto_get_raw_section_data()

const char * lto_get_raw_section_data ( struct lto_file_decl_data * file_data,
enum lto_section_type section_type,
const char * name,
int order,
size_t * len )
extern
Get the section data without any header parsing or uncompression.   

References get_section_f, and lto_data_header::len.

Referenced by copy_function_or_variable().

◆ lto_get_section_data()

const char * lto_get_section_data ( struct lto_file_decl_data * file_data,
enum lto_section_type section_type,
const char * name,
int order,
size_t * len,
bool decompress )
extern
Return a char pointer to the start of a data stream for an LTO pass
or function.  FILE_DATA indicates where to obtain the data.
SECTION_TYPE is the type of information to be obtained.  NAME is
the name of the function and is only used when finding a function
body; otherwise it is NULL.  LEN is the size of the data
returned.   

References lto_buffer::data, lto_data_header::data, lto_section::get_compression(), get_section_f, ggc_alloc(), lto_data_header::len, lto_buffer::length, lto_append_data(), lto_end_uncompression(), lto_file_decl_data::lto_section_header, LTO_section_lto, lto_start_uncompression(), lto_stats, lto_uncompress_block(), NULL, and lto_stats_d::section_size.

Referenced by varpool_node::get_constructor(), cgraph_node::get_untransformed_body(), lto_create_simple_input_block(), and lto_get_summary_section_data().

◆ lto_get_section_name()

char * lto_get_section_name ( int section_type,
const char * name,
int node_order,
struct lto_file_decl_data * f )
extern
Get a section name for a particular type or name.  The NAME field
is only used if SECTION_TYPE is LTO_section_function_body. For all
others it is ignored.  The callee of this function is responsible
to free the returned name.   

References free(), gcc_assert, get_random_seed(), ggc_alloc(), HOST_WIDE_INT_PRINT_HEX_PURE, lto_file_decl_data::id, internal_error(), LTO_N_SECTION_TYPES, LTO_section_function_body, lto_section_name, LTO_section_opts, NULL, and section_name_prefix.

Referenced by copy_function_or_variable(), lto_destroy_simple_output_block(), lto_output_toplevel_asms(), lto_write_mode_table(), lto_write_options(), produce_asm(), produce_asm_for_decls(), produce_lto_section(), produce_symtab(), and produce_symtab_extension().

◆ lto_get_summary_section_data()

const char * lto_get_summary_section_data ( struct lto_file_decl_data * file_data,
enum lto_section_type section_type,
size_t * len )
extern
Return a char pointer to the start of a data stream for an LTO pass.
FILE_DATA indicates where to obtain the data.
SECTION_TYPE is the type of information to be obtained.
LEN is the size of the data returned.   

References lto_data_header::len, lto_get_section_data(), and NULL.

Referenced by input_cgraph_opt_summary(), ipa_fn_summary_read(), ipa_odr_summary_read(), ipa_prop_read_jump_functions(), ipcp_read_transformation_summaries(), lto_input_mode_table(), lto_input_toplevel_asms(), and ipa_icf::sem_item_optimizer::read_summary().

◆ lto_gimple_code_to_tag()

enum LTO_tags lto_gimple_code_to_tag ( enum gimple_code code)
inline
Return the LTO tag corresponding to gimple code CODE.  See enum
LTO_tags for details on the conversion.   

References ggc_alloc(), and LTO_first_gimple_tag.

Referenced by output_gimple_stmt(), and output_phi().

◆ lto_init_eh()

void lto_init_eh ( void )
Initialize EH support.   

References ggc_alloc(), and init_eh().

◆ lto_init_tree_ref_encoder()

void lto_init_tree_ref_encoder ( struct lto_tree_ref_encoder * encoder)
inline
Initialize an lto_out_decl_buffer ENCODER.   

References lto_tree_ref_encoder::tree_hash_table, and lto_tree_ref_encoder::trees.

Referenced by lto_new_out_decl_state().

◆ lto_input_cgraph()

void lto_input_cgraph ( struct lto_file_decl_data * ,
const char *  )
extern
In lto-streamer-in.cc  

◆ lto_input_constructors_and_inits()

void lto_input_constructors_and_inits ( struct lto_file_decl_data * ,
const char *  )
extern

◆ lto_input_data_block()

void lto_input_data_block ( class lto_input_block * ib,
void * addr,
size_t length )
extern
Read LENGTH bytes from STREAM to ADDR.   

References ggc_alloc(), i, and streamer_read_uchar().

◆ lto_input_fn_decl_ref()

tree lto_input_fn_decl_ref ( lto_input_block * ib,
lto_file_decl_data * file_data )
extern

◆ lto_input_function_body()

void lto_input_function_body ( struct lto_file_decl_data * file_data,
struct cgraph_node * node,
const char * data )
extern
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().

◆ lto_input_location()

void lto_input_location ( location_t * loc,
struct bitpack_d * bp,
class data_in * data_in )
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 ggc_alloc(), lto_location_cache::input_location(), and data_in::location_cache.

Referenced by lto_streamer_hooks_init().

◆ lto_input_mode_table()

◆ lto_input_scc()

hashval_t lto_input_scc ( class lto_input_block * ib,
class data_in * data_in,
unsigned * len,
unsigned * entry_len,
bool shared_scc )

◆ lto_input_toplevel_asms()

◆ lto_input_tree()

◆ lto_input_tree_1()

◆ lto_input_tree_ref()

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, ggc_alloc(), 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().

◆ lto_input_var_decl_ref()

◆ lto_input_variable_constructor()

void lto_input_variable_constructor ( struct lto_file_decl_data * file_data,
struct varpool_node * node,
const char * data )
extern
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().

◆ lto_new_in_decl_state()

struct lto_in_decl_state * lto_new_in_decl_state ( void )
extern
Input decl state object.                                                   
Return a newly created in-decl state object.  

References ggc_alloc().

◆ lto_new_out_decl_state()

struct lto_out_decl_state * lto_new_out_decl_state ( void )
extern

◆ lto_output()

◆ lto_output_decl_state_refs()

void lto_output_decl_state_refs ( struct output_block * ,
struct lto_output_stream * ,
struct lto_out_decl_state *  )

◆ lto_output_decl_state_streams()

void lto_output_decl_state_streams ( struct output_block * ob,
struct lto_out_decl_state * state )
Write all the streams in an lto_out_decl_state STATE using
output block OB and output stream OUT_STREAM.   

References i, LTO_N_DECL_STREAMS, and write_global_stream().

Referenced by produce_asm_for_decls().

◆ lto_output_fn_decl_ref()

void lto_output_fn_decl_ref ( struct lto_out_decl_state * decl_state,
struct lto_output_stream * obs,
tree decl )
extern

◆ lto_output_init_mode_table()

void lto_output_init_mode_table ( void )
Init the streamer_mode_table for output, where we collect info on what
machine_mode values have been streamed.   

References ggc_alloc(), and streamer_mode_table.

Referenced by ipa_write_optimization_summaries(), and ipa_write_summaries_1().

◆ lto_output_location()

void lto_output_location ( struct output_block * ob,
struct bitpack_d * bp,
location_t loc )
Output info about new location into bitpack BP.
After outputting bitpack, lto_output_location_data has
to be done to output actual data.   

References ggc_alloc(), and lto_output_location_1().

Referenced by ipa_odr_summary_write(), and lto_streamer_hooks_init().

◆ lto_output_location_and_block()

void lto_output_location_and_block ( struct output_block * ob,
struct bitpack_d * bp,
location_t loc )
Output info about new location into bitpack BP.
After outputting bitpack, lto_output_location_data has
to be done to output actual data.  Like lto_output_location, but
additionally output LOCATION_BLOCK info too and write the BP bitpack.   

References ggc_alloc(), and lto_output_location_1().

Referenced by lto_streamer_hooks_init().

◆ lto_output_toplevel_asms()

◆ lto_output_tree()

void lto_output_tree ( struct output_block * ob,
tree expr,
bool ref_p,
bool this_ref_p )
extern

◆ lto_output_var_decl_ref()

◆ lto_pop_out_decl_state()

struct lto_out_decl_state * lto_pop_out_decl_state ( void )
extern
Pop the currently used out-decl state from top of stack.  

References decl_state_stack.

Referenced by ipa_write_optimization_summaries(), ipa_write_summaries_1(), and lto_output().

◆ lto_prepare_function_for_streaming()

◆ lto_push_out_decl_state()

void lto_push_out_decl_state ( struct lto_out_decl_state * state)
extern
Push STATE to top of out decl stack.  

References decl_state_stack.

Referenced by ipa_write_optimization_summaries(), ipa_write_summaries_1(), and lto_output().

◆ lto_reader_init()

void lto_reader_init ( void )
extern

◆ lto_record_function_out_decl_state()

void lto_record_function_out_decl_state ( tree fn_decl,
struct lto_out_decl_state * state )
extern
Record STATE after it has been used in serializing the body of
FN_DECL.  STATE should no longer be used by the caller.  The ownership
of it is taken over from this point.   

References lto_out_decl_state::fn_decl, i, lto_function_decl_states, LTO_N_DECL_STREAMS, and NULL.

Referenced by lto_output().

◆ lto_record_renamed_decl()

void lto_record_renamed_decl ( struct lto_file_decl_data * decl_data,
const char * old_name,
const char * new_name )
extern
Record a declaration name mapping OLD_NAME -> NEW_NAME.  DECL_DATA
holds the renaming hash table to use.   

References gcc_unreachable, ggc_alloc(), lto_renaming_slot::new_name, NULL, and lto_renaming_slot::old_name.

◆ lto_register_decl_definition()

void lto_register_decl_definition ( tree ,
struct lto_file_decl_data *  )
extern
In lto-streamer-out.cc   

◆ lto_section_overrun()

void lto_section_overrun ( class lto_input_block * ib)
extern
Report read pass end of the section.   

References fatal_error(), ggc_alloc(), and input_location.

Referenced by read_identifier(), read_string(), streamer_read_uchar(), and streamer_read_uhwi().

◆ lto_set_in_hooks()

void lto_set_in_hooks ( struct lto_file_decl_data ** data,
lto_get_section_data_f * get_f,
lto_free_section_data_f * free_f )
extern
This is called from the lto front end to set up the hooks that are
used by the ipa passes to get the data that they will
deserialize.   

References file_decl_data, free_section_f, get_section_f, and ggc_alloc().

◆ lto_set_symtab_encoder_in_partition()

void lto_set_symtab_encoder_in_partition ( lto_symtab_encoder_t encoder,
symtab_node * node )
Specify that NODE is in this partition.   

References lto_symtab_encoder_encode(), and lto_symtab_encoder_d::nodes.

Referenced by compute_ltrans_boundary(), and ipa_write_summaries().

◆ lto_streamer_hooks_init()

◆ lto_streamer_init()

void lto_streamer_init ( void )
extern
Initialization common to the LTO reader and writer.   

References ggc_alloc(), and streamer_check_handled_ts_structures().

Referenced by lto_output(), and lto_reader_init().

◆ lto_symtab_encoder_delete()

void lto_symtab_encoder_delete ( lto_symtab_encoder_t encoder)
Delete ENCODER and its components.   

References free(), lto_symtab_encoder_d::map, and lto_symtab_encoder_d::nodes.

Referenced by compute_ltrans_boundary(), and produce_asm_for_decls().

◆ lto_symtab_encoder_delete_node()

◆ lto_symtab_encoder_deref()

◆ lto_symtab_encoder_encode()

◆ lto_symtab_encoder_encode_body_p()

bool lto_symtab_encoder_encode_body_p ( lto_symtab_encoder_t encoder,
struct cgraph_node * node )
Return TRUE if we should encode the body of NODE (if any).   

References lto_symtab_encoder_lookup(), and lto_symtab_encoder_d::nodes.

Referenced by ipcp_write_transformation_summaries(), lto_output(), and lto_output_node().

◆ lto_symtab_encoder_encode_initializer_p()

bool lto_symtab_encoder_encode_initializer_p ( lto_symtab_encoder_t encoder,
varpool_node * node )
Return TRUE if we should encode initializer of NODE (if any).   

References LCC_NOT_FOUND, lto_symtab_encoder_lookup(), and lto_symtab_encoder_d::nodes.

Referenced by compute_ltrans_boundary(), get_symbol_initial_value(), lto_output(), and lto_output_varpool_node().

◆ lto_symtab_encoder_in_partition_p()

◆ lto_symtab_encoder_lookup()

◆ lto_symtab_encoder_new()

lto_symtab_encoder_t lto_symtab_encoder_new ( bool for_input)
Create a new symtab encoder.
if FOR_INPUT, the encoder allocate only datastructures needed
to read the symtab.   

References ggc_alloc(), lto_symtab_encoder_d::map, and lto_symtab_encoder_d::nodes.

Referenced by compute_ltrans_boundary(), input_symtab(), and ipa_write_summaries().

◆ lto_symtab_encoder_size()

◆ lto_tag_check()

void lto_tag_check ( enum LTO_tags actual,
enum LTO_tags expected )
inline
Check that tag ACTUAL == EXPECTED.   

References ggc_alloc(), internal_error(), and lto_tag_name().

Referenced by input_function(), and streamer_read_tree_bitfields().

◆ lto_tag_check_range()

void lto_tag_check_range ( enum LTO_tags actual,
enum LTO_tags tag1,
enum LTO_tags tag2 )
inline
Check that tag ACTUAL is in the range [TAG1, TAG2].   

References ggc_alloc(), internal_error(), and lto_tag_name().

Referenced by input_eh_lp(), input_eh_regions(), and lto_input_eh_catch_list().

◆ lto_tag_check_set()

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, ggc_alloc(), i, internal_error(), and lto_tag_name().

Referenced by input_bb().

◆ lto_tag_is_gimple_code_p()

bool lto_tag_is_gimple_code_p ( enum LTO_tags tag)
inline
Return true if LTO tag TAG corresponds to a gimple code.   

References ggc_alloc(), LAST_AND_UNUSED_GIMPLE_CODE, and LTO_first_gimple_tag.

Referenced by lto_tag_name(), and lto_tag_to_gimple_code().

◆ lto_tag_is_tree_code_p()

bool lto_tag_is_tree_code_p ( enum LTO_tags tag)
inline
Return true if LTO tag TAG corresponds to a tree code.   

References ggc_alloc(), LTO_first_tree_tag, and MAX_TREE_CODES.

Referenced by lto_tag_name(), and lto_tag_to_tree_code().

◆ lto_tag_name()

◆ lto_tag_to_gimple_code()

enum gimple_code lto_tag_to_gimple_code ( enum LTO_tags tag)
inline
Return the GIMPLE code corresponding to TAG.  See enum LTO_tags for
details on the conversion.   

References gcc_assert, ggc_alloc(), LTO_first_gimple_tag, and lto_tag_is_gimple_code_p().

Referenced by input_gimple_stmt(), and lto_tag_name().

◆ lto_tag_to_tree_code()

enum tree_code lto_tag_to_tree_code ( enum LTO_tags tag)
inline
Return the tree code corresponding to TAG.  See enum LTO_tags for
details on the conversion.   

References gcc_assert, ggc_alloc(), LTO_first_tree_tag, and lto_tag_is_tree_code_p().

Referenced by lto_tag_name(), streamer_alloc_tree(), and streamer_get_pickled_tree().

◆ lto_tree_code_to_tag()

enum LTO_tags lto_tree_code_to_tag ( enum tree_code code)
inline
Return the LTO tag corresponding to tree code CODE.  See enum
LTO_tags for details on the conversion.   

References ggc_alloc(), and LTO_first_tree_tag.

Referenced by lto_output_tree(), streamer_read_tree_bitfields(), and streamer_write_tree_header().

◆ lto_tree_ref_encoder_get_tree()

tree lto_tree_ref_encoder_get_tree ( struct lto_tree_ref_encoder * encoder,
unsigned int idx )
inline
Return the IDX-th tree in ENCODER.  

References lto_tree_ref_encoder::trees.

Referenced by write_global_references(), and write_global_stream().

◆ lto_tree_ref_encoder_size()

unsigned int lto_tree_ref_encoder_size ( struct lto_tree_ref_encoder * encoder)
inline

◆ lto_value_range_error()

void lto_value_range_error ( const char * purpose,
HOST_WIDE_INT val,
HOST_WIDE_INT min,
HOST_WIDE_INT max )
extern
Report out of range value.   

References fatal_error(), and input_location.

Referenced by bp_unpack_int_in_range(), and streamer_read_hwi_in_range().

◆ lto_write_data()

◆ lto_write_options()

◆ lto_write_raw_data()

void lto_write_raw_data ( const void * data,
unsigned int size )
extern
Write SIZE bytes starting at DATA to the assembler.   

References lang_hooks_for_lto::append_data, lang_hooks::lto, and NULL.

Referenced by copy_function_or_variable().

◆ lto_write_stream()

void lto_write_stream ( struct lto_output_stream * obs)
extern

◆ omp_lto_input_declare_variant_alt()

◆ omp_lto_output_declare_variant_alt()

◆ output_offload_tables()

◆ output_symtab()

◆ print_lto_report()

◆ produce_asm()

◆ produce_asm_for_decls()

◆ reachable_from_other_partition_p()

◆ reachable_from_this_partition_p()

bool reachable_from_this_partition_p ( struct cgraph_node * node,
lto_symtab_encoder_t encoder )
Return true when node is reachable from other partition.   

References cgraph_edge::caller, cgraph_node::callers, lto_symtab_encoder_in_partition_p(), and cgraph_edge::next_caller.

Referenced by write_node_summary_p().

◆ referenced_from_other_partition_p()

bool referenced_from_other_partition_p ( struct ipa_ref_list * ,
lto_symtab_encoder_t  )

◆ referenced_from_this_partition_p()

bool referenced_from_this_partition_p ( symtab_node * node,
lto_symtab_encoder_t encoder )
Return if NODE contain references from other partitions.   

References i, symtab_node::iterate_referring(), lto_symtab_encoder_in_partition_p(), NULL, and ipa_ref::referring.

Referenced by ipa_reference_write_optimization_summary(), and write_node_summary_p().

◆ select_what_to_stream()

void select_what_to_stream ( void )
Select what needs to be streamed out.  In regular lto mode stream everything.
In offload lto mode stream only nodes marked as offloadable.   

References FOR_EACH_SYMBOL, ggc_alloc(), and lto_stream_offload_p.

Referenced by ipa_write_summaries().

◆ STATIC_ASSERT()

STATIC_ASSERT ( sizeof(lto_section) = =8)

◆ stream_read_tree_ref()

◆ stream_write_tree_ref()

Variable Documentation

◆ asm_nodes_output

bool asm_nodes_output
extern
In lto-cgraph.cc   
Write and read the cgraph to the memory mapped representation of a
   .o file.

   Copyright (C) 2009-2024 Free Software Foundation, Inc.
   Contributed by Kenneth Zadeck <zadeck@naturalbridge.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/>.   
True when asm nodes has been output.   

Referenced by output_symtab().

◆ dref_queue

vec<dref_entry> dref_queue
extern
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().

◆ lto_function_decl_states

vec<lto_out_decl_state_ptr> lto_function_decl_states
extern
Holds all the out decl states of functions output so far in the
current output file.   
List of out decl states used by functions.  We use this to
generate the decl directory later.  

Referenced by lto_record_function_out_decl_state(), and produce_asm_for_decls().

◆ lto_section_name

const char* lto_section_name[]
extern
Section names corresponding to the values of enum lto_section_type.   
Input functions for reading LTO sections.

   Copyright (C) 2009-2024 Free Software Foundation, Inc.
   Contributed by Kenneth Zadeck <zadeck@naturalbridge.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/>.   
Section names.  These must correspond to the values of
enum lto_section_type.   

Referenced by create_output_block(), lto_get_section_name(), lto_write_tree_1(), print_lto_report(), and streamer_write_tree_header().

◆ lto_stats

struct lto_stats_d lto_stats
extern
Statistics gathered during LTO, WPA and LTRANS.   
Miscellaneous utilities for GIMPLE streaming.  Things that are used
   in both input and output are here.

   Copyright (C) 2009-2024 Free Software Foundation, Inc.
   Contributed by Doug Kwan <dougkwan@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/>.   
Statistics gathered during LTO, WPA and LTRANS.   

Referenced by varpool_node::get_constructor(), cgraph_node::get_untransformed_body(), lto_compress_block(), lto_compression_zlib(), lto_get_section_data(), lto_output_tree(), lto_uncompress_block(), lto_uncompression_zlib(), print_lto_report(), and streamer_write_tree_body().

◆ lto_stream_offload_p

bool lto_stream_offload_p
extern

◆ streamer_debugging

const bool streamer_debugging = false
static
Stream additional data to LTO object files to make it easier to debug
streaming code.  This changes object files.   

Referenced by lto_output_tree(), pack_ts_base_value_fields(), stream_write_tree_ref(), streamer_get_pickled_tree(), and streamer_read_tree_bitfields().

◆ streamer_dump_file