GCC Middle and Back End API Reference
function.h File Reference
#include "hard-reg-set.h"
#include "input.h"
Include dependency graph for function.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  sequence_stack
struct  emit_status
struct  expr_status
struct  rtl_eh
struct  varasm_status
struct  incoming_args
struct  function_subsections
struct  frame_space
struct  rtl_data
struct  stack_usage
struct  function
struct  types_used_by_vars_entry

Typedefs

typedef struct call_site_record_dcall_site_record
typedef struct temp_slottemp_slot_p
typedef struct ipa_opt_pass_dipa_opt_pass

Functions

static void add_local_decl ()
hashval_t types_used_by_vars_do_hash (const void *)
int types_used_by_vars_eq (const void *, const void *)
void types_used_by_var_decl_insert (tree type, tree var_decl)
void set_cfun (struct function *new_cfun)
void push_cfun (struct function *new_cfun)
void pop_cfun (void)
void instantiate_decl_rtl (rtx x)
struct loopsloops_for_fn ()
void set_loops_for_fn ()
void reorder_blocks (void)
void number_blocks (tree)
void clear_block_marks (tree)
tree blocks_nreverse (tree)
tree block_chainon (tree, tree)
HOST_WIDE_INT get_frame_size (void)
bool frame_offset_overflow (HOST_WIDE_INT, tree)
void free_after_parsing (struct function *)
void free_after_compilation (struct function *)
void init_varasm_status (void)
void diddle_return_value (void(*)(rtx, void *), void *)
void clobber_return_register (void)
rtx get_arg_pointer_save_area (void)
const char * fndecl_name (tree)
const char * function_name (struct function *)
const char * current_function_name (void)
void do_warn_unused_parameter (tree)
bool pass_by_reference (CUMULATIVE_ARGS *, enum machine_mode, tree, bool)
bool reference_callee_copied (CUMULATIVE_ARGS *, enum machine_mode, tree, bool)
void used_types_insert (tree)
int get_next_funcdef_no (void)
int get_last_funcdef_no (void)
bool requires_stack_frame_p (rtx, HARD_REG_SET, HARD_REG_SET)
rtx get_hard_reg_initial_val (enum machine_mode, unsigned int)
rtx has_hard_reg_initial_val (enum machine_mode, unsigned int)
rtx get_hard_reg_initial_reg (rtx)
bool initial_value_entry (int i, rtx *, rtx *)
unsigned int emit_initial_value_sets (void)
bool optimize_function_for_size_p (struct function *)
bool optimize_function_for_speed_p (struct function *)

Variables

rtxregno_reg_rtx
struct rtl_data x_rtl
struct functioncfun
int virtuals_instantiated
int trampolines_created
htab_t types_used_by_vars_hash
vec< tree, va_gc > * types_used_by_cur_var_decl
struct machine_function *(* init_machine_status )(void)

Typedef Documentation

typedef struct ipa_opt_pass_d* ipa_opt_pass
typedef struct temp_slot* temp_slot_p

Function Documentation

static void add_local_decl ( )
inlinestatic
tree block_chainon ( tree  ,
tree   
)
tree blocks_nreverse ( tree  )
void clear_block_marks ( tree  )
void clobber_return_register ( void  )
void diddle_return_value ( void(*)(rtx, void *)  doit,
void *  arg 
)
Call DOIT for each hard register used as a return value from
   the current function.   

Referenced by clobber_return_register(), df_get_exit_block_use_set(), and use_return_register().

void do_warn_unused_parameter ( tree  )
const char* fndecl_name ( tree  )
Returns the name of the current function.   
bool frame_offset_overflow ( HOST_WIDE_INT  ,
tree   
)
Issue an error message and return TRUE if frame OFFSET overflows in
   the signed target pointer arithmetics for function FUNC.  Otherwise
   return FALSE.   
void free_after_compilation ( struct function )
void free_after_parsing ( struct function )
Save and restore status information for a nested function.   
const char* function_name ( struct function )
HOST_WIDE_INT get_frame_size ( void  )
Return size needed for stack frame based on slots so far allocated.
   This size counts from zero.  It is not rounded to STACK_BOUNDARY;
   the caller may have to do that.   
Return size needed for stack frame based on slots so far allocated.
   This size counts from zero.  It is not rounded to PREFERRED_STACK_BOUNDARY;
   the caller may have to do that.   

Referenced by final_end_function(), final_start_function(), lra(), and reload().

rtx get_hard_reg_initial_reg ( rtx  )
rtx get_hard_reg_initial_val ( enum  machine_mode,
unsigned  int 
)
int get_last_funcdef_no ( void  )
Return value of funcdef.   

References funcdef_no.

int get_next_funcdef_no ( void  )
Return value of funcdef and increase it.   

References funcdef_no.

Referenced by allocate_struct_function().

rtx has_hard_reg_initial_val ( enum  machine_mode,
unsigned  int 
)
void init_varasm_status ( void  )
Initialize constant pool hashing for a new function.   

References create_constant_pool().

Referenced by prepare_function_start().

bool initial_value_entry ( int  i,
rtx ,
rtx  
)
void instantiate_decl_rtl ( rtx  x)
void number_blocks ( tree  )
Set BLOCK_NUMBER for all the blocks in FN.   
bool pass_by_reference ( CUMULATIVE_ARGS *  ca,
enum machine_mode  mode,
tree  type,
bool  named_arg 
)
void push_cfun ( struct function new_cfun)
bool reference_callee_copied ( CUMULATIVE_ARGS *  ca,
enum machine_mode  mode,
tree  type,
bool  named_arg 
)
Return true if TYPE, which is passed by reference, should be callee
   copied instead of caller copied.   

References pack_cumulative_args(), and targetm.

Referenced by emit_library_call_value_1(), gimplify_parameters(), and initialize_argument_information().

void reorder_blocks ( void  )
Identify BLOCKs referenced by more than one NOTE_INSN_BLOCK_{BEG,END},
   and create duplicate blocks.   
Identify BLOCKs referenced by more than one NOTE_INSN_BLOCK_{BEG,END},
   and create duplicate blocks.   
??? Need an option to either create block fragments or to create
   abstract origin duplicates of a source block.  It really depends
   on what optimization has been performed.   

References blocks_nreverse_all(), clear_block_marks(), current_function_decl, get_insns(), and reorder_blocks_1().

Referenced by reemit_insn_block_notes().

bool requires_stack_frame_p ( rtx  insn,
HARD_REG_SET  prologue_used,
HARD_REG_SET  set_up_by_prologue 
)
Return true if INSN requires the stack frame to be set up.
   PROLOGUE_USED contains the hard registers used in the function
   prologue.  SET_UP_BY_PROLOGUE is the set of registers we expect the
   prologue to set up for the function.   

References add_to_hard_reg_set(), can_throw_internal(), function::can_throw_non_call_exceptions, cfun, df_regs_ever_live_p(), and hard_reg_set_intersect_p().

Referenced by thread_prologue_and_epilogue_insns().

void set_cfun ( struct function new_cfun)
cfun shouldn't be set directly; use one of these functions instead.   
void set_loops_for_fn ( )
inline
Set the loop tree of FN to LOOPS.   

Referenced by init_lowered_empty_function(), input_cfg(), and move_sese_region_to_fn().

void types_used_by_var_decl_insert ( tree  type,
tree  var_decl 
)
hashval_t types_used_by_vars_do_hash ( const void *  )
int types_used_by_vars_eq ( const void *  ,
const void *   
)
void used_types_insert ( tree  )

Variable Documentation

struct function* cfun
The function currently being compiled.   
The currently compiled function.   

Referenced by account_profile_record(), add_cfis_to_fde(), add_ehspec_entry(), add_loop(), add_stmt_operand(), add_stmt_to_eh_lp(), add_to_evolution_1(), add_ttypes_entry(), add_virtual_operand(), alloc_stack_frame_space(), alloc_use(), allocate_dynamic_stack_space(), allocate_struct_function(), analyze_all_variable_accesses(), analyze_memory_references(), ao_ref_from_mem(), apply_args_size(), arg_needs_copy_p(), assemble_start_function(), assign_filter_values(), assign_parm_find_data_types(), assign_parms(), assign_parms_augmented_arg_list(), avoid_folding_inline_builtin(), based_loc_descr(), bb_has_well_behaved_predecessors(), bb_to_key(), better_edge_p(), build_cgraph_edges(), build_duplicate_type(), build_scop_iteration_domain(), build_scop_scattering(), call_can_make_abnormal_goto(), canonicalize_induction_variables(), cgraph_build_static_cdtor_1(), cgraph_debug_gimple_stmt(), cgraph_mark_address_taken_node(), cgraph_rebuild_references(), cgraph_update_edges_for_call_stmt(), cheap_bb_rtx_cost_p(), check_all_va_list_escapes(), check_call(), check_data_deps(), check_stmt(), chrec_component_in_loop_num(), chrec_contains_symbols_defined_in_loop(), chrec_evaluate(), cleanup_all_empty_eh(), cleanup_dead_labels_eh(), clear_last_verified(), clear_pending_stack_adjust(), clear_special_calls(), compute_alignments(), compute_antic(), compute_cases_per_edge(), compute_defs_uses_and_gen(), compute_function_frequency(), compute_may_aliases(), compute_points_to_sets(), compute_uninit_opnds_pos(), compute_value_histograms(), connect_better_edge_p(), connect_traces(), consider_split(), construct_exit_block(), control_flow_insn_p(), convert_cfa_to_fb_loc_list(), copy_bb(), copy_cfg_body(), copy_edges_for_bb(), copy_loop_headers(), copy_loops(), copy_rename_partition_coalesce(), copy_ssa_name(), count_reg_usage(), create_loop_fn(), create_loop_tree_nodes(), create_new_def_for(), create_omp_child_function(), create_trace_edges(), cse_extended_basic_block(), cse_find_path(), current_function_has_exception_handlers(), current_function_name(), debug_loop_num(), decide_copy_try_finally(), decide_one_param_reduction(), declare_inline_vars(), decompose_multiword_subregs(), deletable_insn_p(), delete_tree_ssa(), delink_stmt_imm_use(), distribute_notes(), do_pre(), do_tablejump(), do_warn_aggressive_loop_optimizations(), dse_step0(), dump_alias_info(), dump_function_to_file(), dump_update_ssa(), dump_variable(), duplicate_eh_regions(), duplicate_loop(), duplicate_ssa_name(), dw2_build_landing_pads(), dw_loc_list(), dwarf2out_alloc_current_fde(), dwarf2out_begin_prologue(), dwarf2out_end_epilogue(), dwarf2out_frame_debug(), dwarf2out_frame_debug_expr(), dwarf2out_switch_text_section(), dwarf2out_vms_begin_epilogue(), dwarf2out_vms_end_prologue(), early_inliner(), eliminate_partially_redundant_loads(), emit_call_1(), emit_input_reload_insns(), emit_libcall_block_1(), emit_output_reload_insns(), estimate_function_body_sizes(), estimate_loops(), estimate_reg_pressure_cost(), evolution_function_is_invariant_rec_p(), execute_all_ipa_transforms(), execute_cleanup_eh(), execute_cleanup_eh_1(), execute_cse_reciprocals(), execute_cse_sincos(), execute_fixup_cfg(), execute_fold_all_builtins(), execute_fre(), execute_function_dump(), execute_function_todo(), execute_init_datastructures(), execute_ipa_pass_list(), execute_one_ipa_transform_pass(), execute_one_pass(), execute_optimize_bswap(), execute_optimize_stdarg(), execute_optimize_widening_mul(), execute_sink_code(), execute_todo(), execute_update_addresses_taken(), execute_warn_function_return(), expand_assignment(), expand_block_edges(), expand_builtin_apply(), expand_builtin_apply_args_1(), expand_builtin_eh_common(), expand_builtin_setjmp_setup(), expand_builtin_va_copy(), expand_call(), expand_call_inline(), expand_case(), expand_complex_div_wide(), expand_complex_libcall(), expand_complex_operations_1(), expand_dummy_function_end(), expand_function_end(), expand_function_start(), expand_gimple_stmt(), expand_omp_atomic_fetch_op(), expand_omp_atomic_load(), expand_omp_atomic_mutex(), expand_omp_atomic_pipeline(), expand_omp_atomic_store(), expand_omp_for(), expand_omp_for_init_counts(), expand_omp_for_static_chunk(), expand_omp_for_static_nochunk(), expand_omp_simd(), expand_omp_taskreg(), expand_parallel_call(), expand_stack_alignment(), expand_thunk(), expand_used_vars(), extract_range_from_binary_expr_1(), final(), finalize_ssa_defs(), finalize_ssa_uses(), finalize_task_copyfn(), find_decls_types_in_node(), find_func_aliases(), find_func_aliases_for_builtin_call(), find_func_clobbers(), find_moveable_store(), find_rarely_executed_basic_blocks_and_crossing_edges(), find_tail_calls(), find_traces_1_round(), find_var_candidates(), fini_reassoc(), fini_ssa_operands(), fini_ssa_renamer(), fini_ssanames(), fix_loop_structure(), flow_loops_dump(), flow_loops_find(), fold_builtin_alloca_with_align(), fold_builtin_cabs(), fold_builtin_constant_p(), fold_builtin_fputs(), fold_builtin_stpcpy(), fold_builtin_strcpy(), fold_truth_andor_1(), for_each_eh_label(), force_gimple_operand_1(), forward_propagate_into(), free_histograms(), free_stmt_operands(), gate_call_cdce(), gate_cleanup_eh(), gate_convert_to_eh_region_ranges(), gate_duplicate_computed_gotos(), gate_expand_vector_operations_ssa(), gate_handle_gcse2(), gate_handle_loop2(), gate_handle_partition_blocks(), gate_lower_eh_dispatch(), gate_no_optimization(), gate_optimize_stdarg(), gate_rtl_cprop(), gate_rtl_hoist(), gate_rtl_pre(), gate_rtl_store_motion(), gate_tree_if_conversion(), gate_tree_vectorize(), gcse_after_reload_main(), gen_eh_landing_pad(), gen_eh_region(), gen_rtx_REG(), gen_tmp_stack_mem(), get_chrec_loop(), get_component_ssa_name(), get_eh_landing_pad_from_number(), get_eh_region_and_lp_from_rtx(), get_eh_region_from_lp_number(), get_eh_region_from_number(), get_loop_copy(), get_reaching_def(), get_repl_default_def_ssa_name(), gimple_add_tmp_var(), gimple_divmod_fixed_value_transform(), gimple_divmod_values_to_profile(), gimple_duplicate_bb(), gimple_duplicate_loop_to_header_edge(), gimple_duplicate_sese_tail(), gimple_expand_builtin_pow(), gimple_expand_builtin_powi(), gimple_expand_cfg(), gimple_ic_transform(), gimple_indirect_call_to_profile(), gimple_mod_pow2_value_transform(), gimple_mod_subtract_transform(), gimple_purge_dead_abnormal_call_edges(), gimple_regimplify_operands(), gimple_set_bb(), gimple_stringops_transform(), gimple_stringops_values_to_profile(), gimple_value_profile_transformations(), gimplify_and_update_call_from_tree(), gimplify_bind_expr(), gimplify_function_tree(), gimplify_init_constructor(), graphite_copy_stmts_from_block(), graphite_initialize(), graphite_transform_loops(), gsi_remove(), gsi_replace(), hide_evolution_in_other_loops_than_loop(), indirect_refs_may_alias_p(), init_eh_for_function(), init_empty_tree_cfg(), init_lowered_empty_function(), init_parameter_lattice_values(), init_ssa_renamer(), initialize_cfun(), initialize_inlined_parameters(), inline_transform(), input_bb(), input_cfg(), input_function(), input_ssa_names(), insert(), insn_could_throw_p(), insn_live_p(), instantiate_decls(), instrument_func_entry(), intra_create_variable_infos(), ipa_early_sra(), ipa_read_optimization_summaries_1(), ipa_read_summaries_1(), ipa_sra_preliminary_function_checks(), ipa_write_optimization_summaries_1(), ipa_write_summaries_2(), ipcp_transform_function(), ira(), ira_build(), ira_setup_eliminable_regset(), is_unused_scalar_param(), local_pure_const(), local_variable_can_escape(), lookup_stmt_eh_lp(), loop_optimizer_finalize(), loop_optimizer_init(), lower_eh_constructs(), lower_function_body(), lower_gimple_return(), lra(), lto_input_tree_1(), main_tree_if_conversion(), make_edges(), make_ssa_name(), make_temp_ssa_name(), mark_addressable(), mark_all_loops_for_removal(), mark_irreducible_loops(), mark_loop_exit_edges(), mark_loops_for_removal(), mark_reachable_handlers(), mark_stmt_if_obviously_necessary(), mark_threaded_blocks(), mark_transaction_restart_calls(), mark_virtual_operand_for_renaming(), maybe_clean_eh_stmt(), maybe_hot_edge_p(), maybe_output_constant_def_contents(), maybe_remove_unreachable_handlers(), more_one_region_p(), move_block_to_fn(), move_computations(), move_sese_region_to_fn(), move_ssa_defining_stmt_for_defs(), name_registered_for_update_p(), new_label_mapper(), new_omp_context(), nonnull_arg_p(), notice_special_calls(), notice_stack_pointer_modification(), optimize_bb_for_size_p(), optimize_edge_for_size_p(), optimize_inline_calls(), optimize_insn_for_size_p(), output_cfg(), output_function(), output_gimple_stmt(), output_one_function_exception_table(), output_used_types(), parallelize_loops(), parse_ssa_operands(), partition_hot_cold_basic_blocks(), pass_init_dump_file(), perform_intra_sra(), perform_tree_ssa_dce(), pop_cfun(), prepare_block_for_update(), prepare_cmp_insn(), prepare_function_start(), print_rtl_with_bb(), process_assert_insertions(), process_bb_lives(), process_bb_node_lives(), process_scc(), profile_function(), propagate_dereference_distances(), pt_solution_empty_p(), pt_solution_includes_1(), pt_solution_includes_global(), pt_solutions_intersect_1(), ptr_parm_has_direct_uses(), push_cfun(), push_struct_function(), push_to_next_round_p(), rdg_flag_loop_exits(), rebuild_cgraph_edges(), rebuild_regno_allocno_maps(), record_loop_exits(), record_stmt_eh_region(), record_vars_into(), reemit_insn_block_notes(), reg_save(), relax_delay_slots(), release_dead_ssa_names(), release_defs(), release_function_body(), release_ssa_name(), release_ssa_name_after_update_ssa(), reload(), reload_as_needed(), remap_decls(), remap_ssa_name(), remove_bb(), remove_eh_handler(), remove_eh_handler_splicer(), remove_eh_landing_pad(), remove_stmt_from_eh_lp(), remove_unnecessary_regions(), remove_unreachable_eh_regions(), remove_unreachable_handlers(), remove_unreachable_handlers_no_lp(), remove_unused_locals(), rename_ssa_copies(), renumber_gimple_stmt_uids(), renumber_gimple_stmt_uids_in_blocks(), replace_ref_with(), requires_stack_frame_p(), reset_evolution_in_loop(), rest_of_clean_state(), rest_of_handle_postreload(), rewrite_into_loop_closed_ssa(), rewrite_into_ssa(), rewrite_stmt(), rtl_doloop(), rtl_loop_done(), rtl_move_loop_invariants(), rtl_profile_for_bb(), rtl_unroll_and_peel_loops(), rtl_unswitch(), run_scc_vn(), scan_insn(), scev_const_prop(), secname_for_decl(), set_cfun(), setup_entered_from_non_parent_p(), setup_incoming_promotions(), setup_one_parameter(), simple_mem(), simplify_binary_operation_1(), sink_clobbers(), sjlj_assign_call_site_values(), sjlj_build_landing_pads(), sjlj_emit_dispatch_table(), sms_schedule(), split_bb_make_tm_edge(), split_bbs_on_noreturn_calls(), split_function(), sra_initialize(), sra_ipa_reset_debug_stmts(), ssa_operand_alloc(), stabilize_va_list_loc(), statement_sink_location(), stmt_could_throw_p(), stream_in_histogram_value(), stringop_block_profile(), substitute_and_fold(), suitable_for_tail_call_opt_p(), suitable_for_tail_opt_p(), swap_tree_operands(), tail_merge_optimize(), thread_prologue_and_epilogue_insns(), thread_through_all_blocks(), translate_clast_user(), tree_call_cdce(), tree_complete_unroll(), tree_complete_unroll_inner(), tree_could_throw_p(), tree_estimate_probability(), tree_estimate_probability_driver(), tree_function_versioning(), tree_if_conversion(), tree_loop_distribution(), tree_optimize_tail_calls_1(), tree_parallelize_loops(), tree_ssa_dominator_optimize(), tree_ssa_lim_initialize(), tree_ssa_loop_bounds(), tree_ssa_loop_im(), tree_ssa_loop_init(), tree_ssa_loop_ivcanon(), tree_ssa_loop_ivopts(), tree_ssa_loop_prefetch(), tree_ssa_loop_unswitch(), tree_swap_operands_p(), tree_vectorize(), unshare_all_rtl_again(), unsplit_all_eh(), update_alias_info_with_stack_vars(), update_call_from_tree(), update_complex_assignment(), update_modified_stmt(), update_modified_stmts(), update_nonlocal_goto_save_area(), update_parameter_components(), update_properties_after_pass(), update_ssa(), update_stmt_operands(), used_types_insert(), va_list_counter_bump(), va_list_counter_op(), va_list_ptr_write(), vect_is_simple_iv_evolution(), vectorize_loops(), verify_curr_properties(), verify_gimple_in_cfg(), verify_gimple_label(), verify_gimple_phi(), verify_gimple_return(), verify_histograms(), verify_live_on_entry(), verify_loop_closed_ssa(), verify_loop_structure(), verify_ssa(), verify_ssa_name(), vt_find_locations(), walk_to_nondebug_insn(), want_to_gcse_p(), and warn_uninit().

struct machine_function*(* init_machine_status)(void)
A pointer to a function to create target specific, per-function
   data structures.   
These variables hold pointers to functions to create and destroy
   target specific, per-function data structures.   

Referenced by allocate_struct_function().

rtx* regno_reg_rtx
Indexed by register number, gives an rtx for that register (and only
   that register).  For pseudo registers, it is the unique rtx for
   that pseudo.  For hard registers, it is an rtx of the mode specified
   by reg_raw_mode.

   FIXME: We could put it into emit_status struct, but gengtype is not
   able to deal with length attribute nested in top level structures.   
Indexed by pseudo register number, gives the rtx for that pseudo.
   Allocated in parallel with regno_pointer_align.
   FIXME: We could put it into emit_status struct, but gengtype is not able to deal
   with length attribute nested in top level structures.   

Referenced by allocno_reload_assign(), allocnos_conflict_by_live_ranges_p(), alter_reg(), assign_by_spills(), assign_mem_slot(), assign_parm_setup_reg(), canon_reg(), compute_defs_uses_and_gen(), cse_insn(), dead_debug_insert_temp(), decompose_multiword_subregs(), decompose_register(), df_bb_refs_collect(), df_entry_block_defs_collect(), df_exit_block_uses_collect(), df_get_call_refs(), df_insn_refs_collect(), df_ref_change_reg_with_loc_1(), df_ref_record(), df_set_dead_notes_for_mw(), df_set_unused_notes_for_mw(), distribute_notes(), do_input_reload(), dump_reg_info(), emit_reload_insns(), find_costs_and_classes(), find_split_point(), free_after_compilation(), gen_reg_rtx(), gen_rtx_REG(), inherit_reload_reg(), init_alias_analysis(), init_emit(), init_live_subregs(), init_virtual_regs(), ira_build_conflicts(), ira_emit(), lra_constraints(), lra_create_live_ranges(), lra_final_code_change(), move_deaths(), process_bb_lives(), reload(), remove_inheritance_pseudos(), replace_pseudos_in(), save_call_clobbered_regs(), setup_preferred_alternate_classes_for_new_pseudos(), setup_save_areas(), simplify_set(), split_reg(), substitute(), target_reinit(), try_combine(), undo_optional_reloads(), update_equiv_regs(), and use_regs().

int trampolines_created
Nonzero if at least one trampoline has been created.   
This is a generic routine suitable for use as TARGET_ASM_FILE_END
   which emits a special section directive used to indicate whether or
   not this object file needs an executable stack.  This is primarily
   a GNU extension to ELF but could be used on other targets.   

Referenced by expand_builtin_init_trampoline(), and file_end_indicate_exec_stack().

vec<tree, va_gc>* types_used_by_cur_var_decl
During parsing of a global variable, this vector contains the types
   referenced by the global variable.   

Referenced by used_types_insert().

htab_t types_used_by_vars_hash
Hash table making the relationship between a global variable
   and the types it references in its initializer. The key of the
   entry is a referenced type, and the value is the DECL of the global
   variable. types_use_by_vars_do_hash and types_used_by_vars_eq below are
   the hash and equality functions to use for this hash table.   

Referenced by premark_types_used_by_global_vars(), and types_used_by_var_decl_insert().

int virtuals_instantiated
Nonzero if we've already converted virtual regs to hard regs.   
Nonzero once virtual register instantiation has been done.
   assign_stack_local uses frame_pointer_rtx when this is nonzero.
   calls.c:emit_library_call_value_1 uses it to set up
   post-instantiation libcalls.   

Referenced by assign_stack_local_1(), assign_stack_temp_for_type(), emit_library_call_value_1(), instantiate_virtual_regs(), pop_function_context(), and prepare_function_start().

struct rtl_data x_rtl
Datastructures maintained for currently processed function in RTL form.