GCC Middle and Back End API Reference
toplev.cc File 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 "alloc-pool.h"
#include "timevar.h"
#include "memmodel.h"
#include "tm_p.h"
#include "optabs-libfuncs.h"
#include "insn-config.h"
#include "ira.h"
#include "recog.h"
#include "cgraph.h"
#include "coverage.h"
#include "diagnostic.h"
#include "varasm.h"
#include "tree-inline.h"
#include "realmpfr.h"
#include "version.h"
#include "flags.h"
#include "insn-attr.h"
#include "output.h"
#include "toplev.h"
#include "expr.h"
#include "intl.h"
#include "tree-diagnostic.h"
#include "reload.h"
#include "lra.h"
#include "dwarf2asm.h"
#include "debug.h"
#include "common/common-target.h"
#include "langhooks.h"
#include "cfgloop.h"
#include "hosthooks.h"
#include "opts.h"
#include "opts-diagnostic.h"
#include "stringpool.h"
#include "attribs.h"
#include "asan.h"
#include "tsan.h"
#include "plugin.h"
#include "context.h"
#include "pass_manager.h"
#include "auto-profile.h"
#include "dwarf2out.h"
#include "ipa-reference.h"
#include "symbol-summary.h"
#include "tree-vrp.h"
#include "sreal.h"
#include "ipa-cp.h"
#include "ipa-prop.h"
#include "ipa-utils.h"
#include "gcse.h"
#include "omp-offload.h"
#include "edit-context.h"
#include "tree-pass.h"
#include "dumpfile.h"
#include "ipa-fnsummary.h"
#include "dump-context.h"
#include "print-tree.h"
#include "optinfo-emit-json.h"
#include "ipa-modref-tree.h"
#include "ipa-modref.h"
#include "ipa-param-manipulation.h"
#include "dbgcnt.h"
#include "gcc-urlifier.h"
#include "selftest.h"

Macros

#define this_target_flag_state   (&default_target_flag_state)
 
#define __VERSION__   "[?]"
 
#define GCC_GMP_STRINGIFY_VERSION3(X)   #X
 
#define GCC_GMP_STRINGIFY_VERSION2(X)   GCC_GMP_STRINGIFY_VERSION3 (X)
 
#define GCC_GMP_VERSION_NUM(X, Y, Z)   (((X) << 16L) | ((Y) << 8) | (Z))
 
#define GCC_GMP_VERSION    GCC_GMP_VERSION_NUM(__GNU_MP_VERSION, __GNU_MP_VERSION_MINOR, __GNU_MP_VERSION_PATCHLEVEL)
 
#define GCC_GMP_STRINGIFY_VERSION
 
#define INDIRECT_CALL_NAME   "__indirect_call"
 

Functions

static void general_init (const char *, bool)
 
static void backend_init (void)
 
static int lang_dependent_init (const char *)
 
static void init_asm_output (const char *)
 
static void finalize ()
 
static void crash_signal (int) ATTRIBUTE_NORETURN
 
static void compile_file (void)
 
bool set_src_pwd (const char *pwd)
 
const charget_src_pwd (void)
 
void announce_function (tree decl)
 
static void init_local_tick (void)
 
HOST_WIDE_INT get_random_seed (bool noinit)
 
void set_random_seed (const char *val)
 
void wrapup_global_declaration_1 (tree decl)
 
bool wrapup_global_declaration_2 (tree decl)
 
bool wrapup_global_declarations (tree *vec, int len)
 
void print_version (FILE *file, const char *indent, bool show_global_state)
 
static voidrealloc_for_line_map (void *ptr, size_t len)
 
static voidalloc_for_identifier_to_locale (size_t len)
 
static void output_stack_usage_1 (FILE *cf)
 
static void dump_final_node_vcg_start (FILE *f, tree decl)
 
static void dump_final_callee_vcg (FILE *f, location_t location, tree callee)
 
static void dump_final_node_vcg (FILE *f)
 
void output_stack_usage (void)
 
static FILEopen_auxiliary_file (const char *ext)
 
static void internal_error_reentered (diagnostic_context *, const char *, va_list *)
 
static void internal_error_function (diagnostic_context *, const char *, va_list *)
 
static bool target_supports_section_anchors_p (void)
 
static void read_log_maxskip (auto_vec< unsigned > &values, align_flags_tuple *a)
 
static void parse_N_M (const char *flag, align_flags &a)
 
void parse_alignment_opts (void)
 
static void process_options ()
 
static void backend_init_target (void)
 
static void lang_dependent_init_target (void)
 
void initialize_rtl (void)
 
void target_reinit (void)
 
void dump_memory_report (const char *header)
 
static bool standard_type_bitsize (int bitsize)
 
static void do_compile ()
 

Variables

struct cl_decoded_optionsave_decoded_options
 
unsigned int save_decoded_options_count
 
vec< cl_decoded_option > * save_opt_decoded_options
 
const struct gcc_debug_hooksdebug_hooks
 
tree current_function_decl
 
const charcurrent_function_func_begin_label
 
static const charflag_random_seed
 
unsigned local_tick
 
HOST_WIDE_INT random_seed
 
rtx stack_limit_rtx
 
class target_flag_state default_target_flag_state
 
const charuser_label_prefix
 
FILEasm_out_file
 
FILEaux_info_file
 
FILEcallgraph_info_file = NULL
 
static bitmap callgraph_info_external_printed
 
FILEstack_usage_file = NULL
 
static bool no_backend = false
 
static const charsrc_pwd
 
static int rtl_initialized
 

Macro Definition Documentation

◆ __VERSION__

#define __VERSION__   "[?]"

◆ GCC_GMP_STRINGIFY_VERSION

#define GCC_GMP_STRINGIFY_VERSION
Value:
T * ggc_alloc(ALONE_CXX_MEM_STAT_INFO)
Definition ggc.h:184
#define GCC_GMP_STRINGIFY_VERSION2(X)

◆ GCC_GMP_STRINGIFY_VERSION2

#define GCC_GMP_STRINGIFY_VERSION2 ( X)    GCC_GMP_STRINGIFY_VERSION3 (X)

◆ GCC_GMP_STRINGIFY_VERSION3

#define GCC_GMP_STRINGIFY_VERSION3 ( X)    #X

◆ GCC_GMP_VERSION

◆ GCC_GMP_VERSION_NUM

#define GCC_GMP_VERSION_NUM ( X,
Y,
Z )   (((X) << 16L) | ((Y) << 8) | (Z))

◆ INDIRECT_CALL_NAME

#define INDIRECT_CALL_NAME   "__indirect_call"
Dump placeholder node for indirect calls in VCG format.   

Referenced by dump_final_callee_vcg(), and dump_final_node_vcg_start().

◆ this_target_flag_state

#define this_target_flag_state   (&default_target_flag_state)

Function Documentation

◆ alloc_for_identifier_to_locale()

static void * alloc_for_identifier_to_locale ( size_t len)
static
A helper function: used as the allocator function for
identifier_to_locale.   

References ggc_alloc_atomic().

Referenced by general_init().

◆ announce_function()

void announce_function ( tree decl)
Called when the start of a function definition is parsed,
this function prints on stderr the name of the function.   

References DECL_NAME, lang_hooks::decl_printable_name, diagnostic_set_last_function, ggc_alloc(), global_dc, IDENTIFIER_POINTER, identifier_to_locale(), NULL, pp_needs_newline, and diagnostic_context::printer.

Referenced by cgraph_node::expand().

◆ backend_init()

static void backend_init ( void )
static
Initialize the compiler back end.  This function is called only once,
when starting the compiler.   

References init_emit_once(), init_emit_regs(), init_inline_once(), init_regs(), init_rtlanal(), init_varasm_once(), and save_register_info().

Referenced by do_compile().

◆ backend_init_target()

static void backend_init_target ( void )
static
This function can be called multiple times to reinitialize the compiler
back end when register classes or instruction sets have changed,
before each function.   

References caller_save_initialized_p, expand_dummy_function_end(), init_alias_target(), init_dummy_function_start(), init_expmed(), init_expr_target(), init_fake_stack_mems(), init_lower_subreg(), init_reload(), init_set_costs(), ira_init(), ira_use_lra_p, and recog_init().

Referenced by initialize_rtl().

◆ compile_file()

◆ crash_signal()

static void crash_signal ( int signo)
static
Handler for fatal signals, such as SIGSEGV.  These are transformed
into ICE messages, which is much more user friendly.  In case the
error printer crashes, reset the signal to prevent infinite recursion.   

References FATAL_EXIT_CODE, ggc_alloc(), internal_error(), output_operand_lossage(), strsignal(), and this_is_asm_operands.

Referenced by general_init().

◆ do_compile()

◆ dump_final_callee_vcg()

◆ dump_final_node_vcg()

◆ dump_final_node_vcg_start()

◆ dump_memory_report()

◆ finalize()

◆ general_init()

static void general_init ( const char * argv0,
bool init_signals )
static
Top level of GCC compilers (cc1, cc1plus, etc.)
   Copyright (C) 1987-2024 Free Software Foundation, Inc.

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/>.   
This is the top level of cc1/c++.
It parses command args, opens files, invokes the various passes
in the proper order, and counts the time used by each.
Error messages and low-level interface to malloc also handled here.   
Initialization of the front end environment, before command line
options are parsed.  Signal handlers, internationalization etc.
ARGV0 is main's argv[0].   

References alloc_for_identifier_to_locale(), BUILTINS_LOCATION, crash_signal(), debuginfo_early_init(), diagnostic_initialize(), diagnostic_source_printing_options::enabled, host_hooks::extra_signals, g, gcc_init_libintl, gcc::context::get_dumps(), get_option_url(), ggc_alloc(), ggc_free(), ggc_round_alloc_size(), global_dc, global_options, identifier_to_locale_alloc, identifier_to_locale_free, init_ggc(), init_reg_sets(), init_stringpool(), init_ttree(), input_location, internal_error_function(), line_table, diagnostic_context::m_internal_error, diagnostic_context::m_show_column, diagnostic_context::m_source_printing, make_gcc_urlifier(), diagnostic_source_printing_options::min_margin_width, option_enabled(), lang_hooks::option_lang_mask, option_name(), progname, realloc_for_line_map(), gcc::dump_manager::register_dumps(), diagnostic_context::set_option_hooks(), gcc::context::set_passes(), diagnostic_context::set_path_format(), diagnostic_context::set_show_cwe(), diagnostic_context::set_show_option_requested(), diagnostic_context::set_show_path_depths(), diagnostic_context::set_show_rules(), diagnostic_context::set_urlifier(), diagnostic_source_printing_options::show_event_links_p, diagnostic_source_printing_options::show_labels_p, diagnostic_source_printing_options::show_line_numbers_p, statistics_early_init(), symtab, tree_diagnostics_defaults(), and UNKNOWN_LOCATION.

Referenced by toplev::main().

◆ get_random_seed()

HOST_WIDE_INT get_random_seed ( bool noinit)
Obtain the random_seed.  Unless NOINIT, initialize it if
it's not provided in the command line.   

References ggc_alloc(), local_tick, O_RDONLY, and random_seed.

Referenced by get_file_function_name(), and lto_get_section_name().

◆ get_src_pwd()

const char * get_src_pwd ( void )
Return the directory from which the translation unit was initiated,
in case set_src_pwd() was not called before to assign it a
different value.   

References ggc_alloc(), and src_pwd.

Referenced by comp_dir_string(), ctf_add_cuname(), lto_location_cache::input_location_and_block(), and lto_output_location_1().

◆ init_asm_output()

static void init_asm_output ( const char * name)
static
Open assembly code output file.  Do this even if -fsyntax-only is
on, because then the driver will have provided the name of a
temporary file or bit bucket for us.  NAME is the file specified on
the command line, possibly NULL.   

References ASM_COMMENT_START, asm_out_file, fatal_error(), fopen, fputc(), free(), gen_command_line_string(), gen_producer_string(), diagnostic_context::get_lang_mask(), ggc_alloc(), global_dc, HOST_BIT_BUCKET, inform(), lang_hooks::name, NULL, print_version, save_decoded_options, save_decoded_options_count, strip_off_ending(), targetm, and UNKNOWN_LOCATION.

Referenced by lang_dependent_init().

◆ init_local_tick()

static void init_local_tick ( void )
static
Initialize local_tick with the time of day, or -1 if
flag_random_seed is set.   

References flag_random_seed, ggc_alloc(), local_tick, and NULL.

Referenced by toplev::main().

◆ initialize_rtl()

◆ internal_error_function()

static void internal_error_function ( diagnostic_context * ,
const char * ,
va_list *  )
static
Auxiliary callback for the diagnostics code.   

References emergency_dump_function(), global_dc, internal_error_reentered(), diagnostic_context::m_internal_error, and warn_if_plugins().

Referenced by general_init().

◆ internal_error_reentered()

static void internal_error_reentered ( diagnostic_context * ,
const char * ,
va_list *  )
static
Alternative diagnostics callback for reentered ICE reporting.   

References dump_file, and ggc_alloc().

Referenced by internal_error_function().

◆ lang_dependent_init()

◆ lang_dependent_init_target()

static void lang_dependent_init_target ( void )
static
Initialize things that are both lang-dependent and target-dependent.
This function can be called more than once if target parameters change.   

References gcc_assert, init_optabs(), and this_target_rtl.

Referenced by lang_dependent_init(), and target_reinit().

◆ open_auxiliary_file()

static FILE * open_auxiliary_file ( const char * ext)
static
Open an auxiliary output file.   

References fatal_error(), fopen, free(), ggc_alloc(), input_location, and NULL.

Referenced by lang_dependent_init().

◆ output_stack_usage()

void output_stack_usage ( void )
Output stack usage and callgraph info, as requested.   

References callgraph_info_file, dump_final_node_vcg(), ggc_alloc(), NULL, and output_stack_usage_1().

Referenced by rest_of_handle_thread_prologue_and_epilogue().

◆ output_stack_usage_1()

◆ parse_alignment_opts()

void parse_alignment_opts ( void )
Process -falign-foo=N[:M[:N2[:M2]]] options.   

References align_functions, align_jumps, align_labels, align_loops, ggc_alloc(), and parse_N_M().

Referenced by invoke_set_current_function_hook().

◆ parse_N_M()

static void parse_N_M ( const char * flag,
align_flags & a )
static
Parse "N[:M[:N2[:M2]]]" string FLAG into a pair of struct align_flags.   

References a, cache, ggc_alloc(), NULL, parse_and_check_align_values(), r, read_log_maxskip(), and UNKNOWN_LOCATION.

Referenced by parse_alignment_opts().

◆ print_version()

void print_version ( FILE * file,
const char * indent,
bool show_global_state )
Print version information to FILE.
Each line begins with INDENT (for the case where FILE is the
assembler output file).

If SHOW_GLOBAL_STATE is true (for cc1 etc), we are within the compiler
proper and can print pertinent state (e.g. params and plugins).

If SHOW_GLOBAL_STATE is false (for use by libgccjit), we are outside the
compiler, and we don't hold the mutex on the compiler's global state:
we can't print params and plugins, since they might not be initialized,
or might be being manipulated by a compile running in another
thread.   

References _, __VERSION__, GCC_GMP_STRINGIFY_VERSION, ggc_alloc(), N_, lang_hooks::name, and print_plugins_versions().

◆ process_options()

static void process_options ( )
static
Process the options that have been parsed.   

References abi_version_at_least, asan_shadow_offset_set_p(), aux_info_file, btf_debuginfo_p(), build_optimization_node(), CF_BRANCH, CF_FULL, CF_NONE, CF_RETURN, CF_SET, codeview_debuginfo_p(), diagnostic_context::create_edit_context(), ctf_debuginfo_p(), CTFINFO_LEVEL_NONE, debug_hooks, debug_set_count(), debug_set_to_format(), debug_type_names, diagnose_options(), diagnostic_classify_diagnostic(), diagnostic_inhibit_notes(), DINFO_LEVEL_NONE, DINFO_LEVEL_NORMAL, dump_go_spec_init(), DWARF2_DEBUG, dwarf2_debug_hooks, dwarf2_lineno_debug_hooks, dwarf2out_default_as_loc_support(), dwarf2out_default_as_locview_support(), dwarf_debuginfo_p(), error_at(), fatal_error(), flag_stack_protector_set_by_fhardened_p, fopen, fputc(), FRAME_GROWS_DOWNWARD, free(), gcc_assert, gen_command_line_string(), ggc_alloc(), global_dc, global_options, global_options_set, hash_table_sanitize_eq_limit, inform(), input_location, IRA_REGION_MIXED, IRA_REGION_ONE, lang_GNU_C(), line_table, maximum_field_alignment, lang_hooks::name, no_backend, NO_DEBUG, NO_STACK_CHECK, NULL, optimization_current_node, optimization_default_node, OPTION_SET_P, option_unspecified_p(), parse_and_check_patch_area(), SANITIZE_ADDRESS, SANITIZE_HWADDRESS, SANITIZE_KERNEL_ADDRESS, SANITIZE_SHADOW_CALL_STACK, SANITIZE_USER_ADDRESS, save_decoded_options, save_decoded_options_count, sorry(), STACK_GROWS_DOWNWARD, startswith(), target_supports_section_anchors_p(), targetm, UNKNOWN_LOCATION, USER_LABEL_PREFIX, user_label_prefix, VMS_AND_DWARF2_DEBUG, VMS_DEBUG, vmsdbg_debug_hooks, and warning_at().

Referenced by toplev::main().

◆ read_log_maxskip()

static void read_log_maxskip ( auto_vec< unsigned > & values,
align_flags_tuple * a )
static
Parse "N[:M][:...]" into struct align_flags A.
VALUES contains parsed values (in reverse order), all processed
values are popped.   

References a, and floor_log2().

Referenced by parse_N_M().

◆ realloc_for_line_map()

static void * realloc_for_line_map ( void * ptr,
size_t len )
static
A helper function; used as the reallocator function for cpp's line
table.   

References ggc_realloc().

Referenced by general_init().

◆ set_random_seed()

void set_random_seed ( const char * val)
Set flag_random_seed to VAL, and if non-null, reinitialize random_seed.   

References crc32_string(), flag_random_seed, ggc_alloc(), and random_seed.

Referenced by handle_common_deferred_options().

◆ set_src_pwd()

bool set_src_pwd ( const char * pwd)
Initialize src_pwd with the given string, and return true.  If it
was already initialized, return false.  As a special case, it may
be called with a NULL argument to test whether src_pwd has NOT been
initialized yet.   

References ggc_alloc(), and src_pwd.

◆ standard_type_bitsize()

static bool standard_type_bitsize ( int bitsize)
static

◆ target_reinit()

◆ target_supports_section_anchors_p()

static bool target_supports_section_anchors_p ( void )
static
Return true if the current target supports -fsection-anchors.   

References NULL, and targetm.

Referenced by process_options().

◆ wrapup_global_declaration_1()

void wrapup_global_declaration_1 ( tree decl)
A subroutine of wrapup_global_declarations.  We've come to the end of
the compilation unit.  All deferred variables should be undeferred,
and all incomplete decls should be finalized.   

References DECL_DEFER_OUTPUT, DECL_SIZE, lang_hooks::finish_incomplete_decl, HAS_DECL_ASSEMBLER_NAME_P, and VAR_P.

Referenced by wrapup_global_declarations().

◆ wrapup_global_declaration_2()

bool wrapup_global_declaration_2 ( tree decl)

◆ wrapup_global_declarations()

bool wrapup_global_declarations ( tree * vec,
int len )
Do any final processing required for the declarations in VEC, of
which there are LEN.  We write out inline functions and variables
that have been deferred until this point, but which are required.
Returns nonzero if anything was put out.   

References ggc_alloc(), i, wrapup_global_declaration_1(), and wrapup_global_declaration_2().

Referenced by global_decl_processing().

Variable Documentation

◆ asm_out_file

FILE* asm_out_file
Output files for assembler code (real compiler output)
and debugging dumps.   

Referenced by app_disable(), app_enable(), asan_function_start(), asm_fprintf(), asm_show_source(), assemble_align(), assemble_asm(), assemble_constant_contents(), assemble_end_function(), assemble_external(), assemble_integer_with_op(), assemble_start_function(), assemble_static_space(), assemble_string(), assemble_trampoline_template(), assemble_undefined_decl(), assemble_variable(), assemble_variable_contents(), assemble_zeros(), compile_file(), default_asm_output_ident_directive(), default_assemble_visibility(), default_coff_asm_named_section(), default_elf_asm_named_section(), default_external_libcall(), default_file_start(), default_pe_asm_named_section(), do_assemble_alias(), do_assemble_symver(), dump_basic_block_info(), dw2_asm_output_addr(), dw2_asm_output_addr_rtx(), dw2_asm_output_data(), dw2_asm_output_data_raw(), dw2_asm_output_data_sleb128(), dw2_asm_output_data_sleb128_raw(), dw2_asm_output_data_uleb128(), dw2_asm_output_data_uleb128_raw(), dw2_asm_output_delta(), dw2_asm_output_delta_uleb128(), dw2_asm_output_encoded_addr_rtx(), dw2_asm_output_nstring(), dw2_asm_output_offset(), dw2_asm_output_offset(), dw2_asm_output_symname_uleb128(), dw2_assemble_integer(), dwarf2out_begin_prologue(), dwarf2out_do_cfi_startproc(), dwarf2out_emit_cfi(), dwarf2out_end_epilogue(), dwarf2out_switch_text_section(), dwarf2out_vms_begin_epilogue(), dwarf2out_vms_end_prologue(), elf_record_gcc_switches(), emit_common(), emit_local(), emit_tls_common(), expand_thunk(), final_end_function(), final_scan_insn_1(), finalize(), find_empty_loc_ranges_at_text_label(), generic_type_p(), globalize_decl(), init_asm_output(), make_decl_rtl(), output_addr_table(), output_address(), output_asm_insn(), output_asm_label(), output_asm_name(), output_asm_operand_names(), output_btf_header(), output_call_frame_info(), output_cfa_loc_raw(), output_cfi_directive(), output_comp_unit(), output_constant(), output_constant_def_contents(), output_constant_pool(), output_constant_pool_1(), output_constant_pool_contents(), output_constructor(), output_ctf_header(), output_die(), output_fde(), output_function_exception_table(), output_line_info(), output_loc_list(), output_loc_operands(), output_loc_operands_raw(), output_loc_sequence_raw(), output_one_function_exception_table(), output_operand(), output_ranges(), output_rnglists(), output_section_asm_op(), output_skeleton_debug_sections(), rest_of_decl_compilation(), rest_of_handle_final(), switch_to_eh_frame_section(), weak_finish(), and weak_finish_1().

◆ aux_info_file

FILE* aux_info_file

Referenced by finalize(), and process_options().

◆ callgraph_info_external_printed

bitmap callgraph_info_external_printed
static

◆ callgraph_info_file

FILE* callgraph_info_file = NULL

◆ current_function_decl

tree current_function_decl
The FUNCTION_DECL for the function currently being compiled,
or 0 if between functions.   

Referenced by add_call_edges_for_seq(), adjust_assumption_stmt_r(), adjust_context_and_scope(), adjust_return_value_with_ops(), autofdo::afdo_annotate_cfg(), autofdo::afdo_indirect_call(), autofdo::afdo_vpt_for_early_inline(), asan_emit_stack_protection(), assemble_start_function(), assign_parm_find_data_types(), assign_parm_find_entry_rtl(), assign_parm_setup_reg(), assign_parms(), assign_parms_augmented_arg_list(), assign_parms_initialize_all(), assign_stack_local_1(), autofdo::auto_profile(), branch_prob(), build_duplicate_type(), build_instrumentation_call(), can_implement_as_sibling_call_p(), cfg_layout_merge_blocks(), cgraph_build_static_cdtor_1(), cgraph_debug_gimple_stmt(), check_bb_profile(), check_call(), check_counter(), check_omp_nesting_restrictions(), clobber_return_register(), collect_fn_hard_reg_usage(), computable_teams_clause(), computation_cost(), compute_discriminator(), compute_fn_summary_for_current(), compute_frame_pointer_to_fb_displacement(), compute_function_frequency(), consider_split(), const_ok_for_output_1(), convert_cfa_to_fb_loc_list(), convert_local_reference_op(), convert_nonlocal_reference_op(), convert_to_integer_1(), copy_fn(), copy_gimple_seq_and_replace_locals(), coverage_begin_function(), coverage_compute_lineno_checksum(), coverage_counter_alloc(), coverage_end_function(), create_access_replacement(), create_artificial_label(), create_asan_shadow_var(), create_assumption_fn(), create_coalesce_list_for_region(), function_reader::create_function(), create_omp_child_function(), create_omp_child_function_name(), create_stack_guard(), create_tailcall_accumulator(), current_function_section(), decide_function_section(), decl_address_invariant_p(), default_print_patchable_function_entry(), detect_type_change(), detect_type_change_ssa(), determine_unlikely_bbs(), df_get_entry_block_def_set(), diagnose_omp_structured_block_errors(), diagnose_tm_blocks(), do_per_function(), do_per_function_toporder(), do_reload(), dump_alias_info(), dump_bb_info(), dump_dfa_stats(), dump_final_callee_vcg(), dump_final_node_vcg(), dump_function_to_file(), dump_loc(), dump_loc(), dump_one_pass(), gcc::pass_manager::dump_passes(), dump_ranger(), dump_scope_blocks(), dump_tree_ssa(), dw_loc_list(), dwarf2out_alloc_current_fde(), dwarf2out_begin_prologue(), dwarf2out_do_cfi_startproc(), autofdo::early_inline(), early_inliner(), eliminate_regs_1(), eliminate_dom_walker::eliminate_stmt(), eliminate_tail_call(), tree_switch_conversion::switch_decision_tree::emit(), estimate_bb_frequencies(), execute_all_ipa_transforms(), execute_build_cfg(), execute_fixup_cfg(), execute_ipa_pass_list(), execute_lower_coro_builtins(), execute_lower_omp(), execute_lower_tm(), execute_oacc_device_lower(), execute_oacc_loop_designation(), execute_omp_oacc_neuter_broadcast(), execute_one_pass(), execute_ranger_vrp(), execute_split_functions(), execute_todo(), expand_block_edges(), expand_builtin(), expand_builtin_goacc_parlevel_id_size(), expand_builtin_setjmp_receiver(), expand_builtin_strub_leave(), expand_builtin_strub_update(), expand_call(), expand_debug_source_expr(), expand_expr_real_1(), expand_function_end(), expand_function_start(), expand_gimple_stmt_1(), expand_goto(), expand_oacc_for(), expand_omp(), expand_omp_target(), expand_omp_taskreg(), expand_one_var(), expand_regions_1(), expand_return(), expand_thunk(), expand_used_vars(), expand_value_return(), final_end_function(), final_scan_insn_1(), final_start_function_1(), symbol_table::finalize_compilation_unit(), find_empty_loc_ranges_at_text_label(), find_obviously_necessary_stmts(), find_return_bb(), find_tail_calls(), find_var_candidates(), finite_loop_p(), fixup_reorder_chain(), fold_builtin_FUNCTION(), fold_builtin_next_arg(), fold_internal_goacc_dim(), cfn_goacc_dim::fold_range(), for_all_parms(), function_called_by_processed_nodes_p(), function_mergeable_rodata_prefix(), gate_tm_init(), gen_call_used_regs_seq(), generate_setjmp_warnings(), get_coverage_counts(), compiler_data_hooks::get_current_logical_location(), autofdo::get_inline_stack(), current_fndecl_logical_location::get_internal_name(), current_fndecl_logical_location::get_kind(), get_loop_location(), get_modref_function_summary(), current_fndecl_logical_location::get_name_with_scope(), autofdo::get_relative_location_for_stmt(), current_fndecl_logical_location::get_short_name(), get_spill_slot_decl(), get_stack_dynamic_offset(), gimple_add_tmp_var(), gimple_dump_bb_buff(), gimple_dump_cfg(), gimple_gen_ic_func_profiler(), gimple_verify_flow_info(), gimplify_bind_expr(), gimplify_body(), gimplify_cond_expr(), gimplify_expr(), gimplify_function_tree(), gimplify_label_expr(), gimplify_modify_expr(), gimplify_oacc_declare(), gimplify_omp_loop(), gimplify_return_expr(), gimplify_var_or_parm_decl(), in_initial_view_p(), infer_nonnull_range_by_attribute(), init_lowered_empty_function(), initialize_inlined_parameters(), initialize_parameter_reductions(), inline_transform(), instantiate_virtual_regs(), instrument_derefs(), instrument_object_size(), ipa_analyze_call_uses(), ipa_passes(), ipa_polymorphic_call_context::ipa_polymorphic_call_context(), ipa_read_optimization_summaries_1(), ipa_read_summaries_1(), ipa_record_return_value_range(), ipa_reference_get_read_global(), ipa_reference_get_written_global(), ipa_tm_insert_gettmclone_call(), ipa_tm_scan_irr_block(), ipa_tm_scan_irr_function(), ipa_tm_transform_calls_redirect(), ipa_write_optimization_summaries_1(), ipa_write_summaries_2(), ipcp_get_parm_bits(), ipcp_transform_function(), is_redundant_typedef(), lhd_print_error_function(), loc_list_from_tree_1(), lower_assumption(), lower_function_body(), lower_gimple_bind(), lower_lastprivate_conditional_clauses(), lower_omp_critical(), lra_eliminate_regs_1(), mark_all_vars_used_1(), mark_nonssa_use(), maybe_add_sra_candidate(), maybe_build_inner_data_region(), maybe_inline_call_in_expr(), maybe_remove_omp_member_access_dummy_vars(), ipa_param_adjustments::modify_call(), needs_to_live_in_memory(), new_omp_context(), noncall_stmt_may_be_vtbl_ptr_store(), note_no_context_vars(), note_simd_array_uses_cb(), oacc_do_neutering(), oacc_loop_discovery(), omp_construct_selector_matches(), omp_context_selector_matches(), omp_copy_decl(), omp_copy_decl_2(), omp_default_clause(), omp_maybe_offloaded(), omp_maybe_offloaded_ctx(), omp_member_access_dummy_var(), omp_notice_variable(), omp_oacc_kernels_decompose(), optimize_atomic_compare_exchange_p(), optimize_inline_calls(), optimize_va_list_gpr_fpr_size(), optrecord_json_writer::optinfo_to_json(), output_function(), output_function_exception_table(), output_stack_usage_1(), pass_init_dump_file(), points_to_local_or_readonly_memory_p(), points_to_possible_sra_candidate_p(), pop_cfun(), pop_function_context(), possible_polymorphic_call_target_p(), possible_polymorphic_call_targets(), predict_loops(), process_assignment(), profile_function(), promote_decl_mode(), push_cfun(), push_struct_function(), read_thunk_profile(), cgraph_edge::rebuild_edges(), cgraph_edge::rebuild_references(), record_vars(), refs_local_or_readonly_memory_p(), remove_unused_locals(), reorder_blocks(), ipa_param_body_adjustments::reset_debug_stmts(), rest_of_clean_state(), rest_of_decl_compilation(), rest_of_handle_final(), cgraph_node::rtl_info(), rtl_merge_blocks(), rtx_addr_can_trap_p_1(), rtx_for_function_call(), scan_omp_for(), scan_omp_simd(), secname_for_decl(), self_recursive_call_p(), set_nothrow_function_flags(), setjmp_args_warning(), setup_incoming_promotions(), sjlj_emit_function_enter(), split_function(), stack_protect_decl_phase(), suitable_for_tail_call_opt_p(), switch_to_exception_section(), tail_merge_optimize(), test_nonssa_use(), tree_bb_level_predictions(), tree_optimize_tail_calls_1(), ubsan_create_edge(), ubsan_encode_value(), unlikely_executed_stmt_p(), unlikely_text_section(), unlikely_text_section_p(), update_call_edge_frequencies(), use_register_for_decl(), verify_gimple_label(), vt_add_function_parameter(), vt_add_function_parameters(), vt_init_cfa_base(), and vt_initialize().

◆ current_function_func_begin_label

const char* current_function_func_begin_label
Set to the FUNC_BEGIN label of the current function, or NULL
if none.   

Referenced by dw2_output_call_site_table(), and dwarf2out_begin_prologue().

◆ debug_hooks

◆ default_target_flag_state

class target_flag_state default_target_flag_state

◆ flag_random_seed

const char* flag_random_seed
static
A random sequence of characters, unless overridden by user.   

Referenced by init_local_tick(), and set_random_seed().

◆ local_tick

unsigned local_tick
A local time stamp derived from the time of compilation. It will be
zero if the system cannot provide a time.  It will be -1u, if the
user has specified a particular random seed.   

Referenced by coverage_finish(), coverage_init(), get_random_seed(), and init_local_tick().

◆ no_backend

◆ random_seed

HOST_WIDE_INT random_seed
Random number for this compilation  

Referenced by compare_debug_dump_opt_spec_function(), get_random_seed(), and set_random_seed().

◆ rtl_initialized

int rtl_initialized
static
Perform initializations that are lang-dependent or target-dependent.
but matters only for late optimizations and RTL generation.   

Referenced by toplev::finalize(), and initialize_rtl().

◆ save_decoded_options

struct cl_decoded_option* save_decoded_options
Decoded options, and number of such options.   

Referenced by toplev::finalize(), init_asm_output(), lto_write_options(), toplev::main(), and process_options().

◆ save_decoded_options_count

◆ save_opt_decoded_options

vec<cl_decoded_option>* save_opt_decoded_options
Vector of saved Optimization decoded command line options.   

Referenced by toplev::main().

◆ src_pwd

const char* src_pwd
static
The current working directory of a translation.  It's generally the
directory from which compilation was initiated, but a preprocessed
file may specify the original directory in which it was
created.   

Referenced by get_src_pwd(), lto_location_cache::input_location_and_block(), and set_src_pwd().

◆ stack_limit_rtx

rtx stack_limit_rtx
-f flags.   
When non-NULL, indicates that whenever space is allocated on the
stack, the resulting stack pointer must not pass this
address---that is, for stacks that grow downward, the stack pointer
must always be greater than or equal to this address; for stacks
that grow upward, the stack pointer must be less than this address.
At present, the rtx may be either a REG or a SYMBOL_REF, although
the support provided depends on the backend.   

Referenced by allocate_dynamic_stack_space(), expand_function_start(), handle_common_deferred_options(), and init_emit_regs().

◆ stack_usage_file

FILE* stack_usage_file = NULL

◆ user_label_prefix

const char* user_label_prefix