GCC Middle and Back End API Reference
|
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_d * | call_site_record |
typedef struct temp_slot * | temp_slot_p |
typedef struct ipa_opt_pass_d * | ipa_opt_pass |
Variables | |
rtx * | regno_reg_rtx |
struct rtl_data | x_rtl |
struct function * | cfun |
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 struct call_site_record_d* call_site_record |
typedef struct ipa_opt_pass_d* ipa_opt_pass |
typedef struct temp_slot* temp_slot_p |
|
inlinestatic |
Add the decl D to the local_decls list of FUN.
void clear_block_marks | ( | tree | ) |
void clobber_return_register | ( | void | ) |
In case we do use pseudo to return value, clobber it too.
const char* current_function_name | ( | void | ) |
Returns the name of the current function.
Referenced by find_taken_edge_computed_goto(), and pre_insert_copies().
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.
References copy(), epilogue_insn_hash, and prologue_insn_hash.
Referenced by init_dummy_function_start().
void do_warn_unused_parameter | ( | tree | ) |
unsigned int emit_initial_value_sets | ( | void | ) |
Called from gimple_expand_cfg.
References cfa_offset.
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 * | ) |
rtx get_arg_pointer_save_area | ( | void | ) |
Save the arg pointer at the beginning of the function. The generated stack slot may not be a valid memory address, so we have to check it and fix it if necessary.
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.
References error_at().
rtx get_hard_reg_initial_val | ( | enum | machine_mode, |
unsigned | int | ||
) |
int get_last_funcdef_no | ( | void | ) |
Return value of funcdef.
int get_next_funcdef_no | ( | void | ) |
Return value of funcdef and increase it.
References hard_function_value().
rtx has_hard_reg_initial_val | ( | enum | machine_mode, |
unsigned | int | ||
) |
void init_varasm_status | ( | void | ) |
Initialize constant pool hashing for a new function.
Referenced by blocks_nreverse().
void instantiate_decl_rtl | ( | rtx | x | ) |
|
read |
Return the loop tree of FN.
Referenced by move_stmt_eh_region_tree_nr().
void number_blocks | ( | tree | ) |
Set BLOCK_NUMBER for all the blocks in FN.
bool optimize_function_for_size_p | ( | struct function * | ) |
In predict.c
Referenced by cgraph_optimize_for_size_p(), delete_prior_computation(), optimize_bb_for_speed_p(), and optimize_function_for_speed_p().
bool optimize_function_for_speed_p | ( | struct function * | ) |
Referenced by find_rtx_in_ldst().
bool pass_by_reference | ( | CUMULATIVE_ARGS * | ca, |
enum machine_mode | mode, | ||
tree | type, | ||
bool | named_arg | ||
) |
Return true if TYPE should be passed by invisible reference.
If this type contains non-trivial constructors, then it is forbidden for the middle-end to create any new copies.
GCC post 3.4 passes *all* variable sized types by reference.
If a record type should be passed the same as its first (and only) member, use the type and mode of that member.
Referenced by initialize_argument_information().
void pop_cfun | ( | void | ) |
Pop cfun from the stack. Also set current_function_decl accordingly.
When in_dummy_function, we do have a cfun but current_function_decl is NULL. We also allow pushing NULL cfun and subsequently changing current_function_decl to something else and have both restored by pop_cfun.
Referenced by cgraph_process_new_functions(), and gcc::pass_manager::pass_manager().
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 targetm.
Referenced by assign_parms(), 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.
Reset the TREE_ASM_WRITTEN bit for all blocks.
Prune the old trees away, so that they don't get in the way.
Recreate the block tree from the note nesting.
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.
We need a frame to get the unique CFA expected by the unwinder.
References delete_insn(), emit_return_into_block(), and emit_use_return_register_into_block().
void set_cfun | ( | struct function * | new_cfun | ) |
cfun shouldn't be set directly; use one of these functions instead.
|
inline |
Set the loop tree of FN to LOOPS.
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 | ) |
struct function* cfun |
The function currently being compiled.
The currently compiled function.
Referenced by add_partitioned_vars_to_ptset(), add_stmt_to_eh_lp(), add_ttypes_entry(), adjust_return_value(), ao_ref_from_mem(), calculate_bb_reg_pressure(), cgraph_release_function_body(), choose_inner_scope(), chrec_contains_undetermined(), cleanup_empty_eh_unsplit(), compute_hash_table(), compute_uninit_opnds_pos(), copy_decl_maybe_to_var(), copy_decl_no_change(), copy_ssa_name(), create_function_info_for(), debug_solution_for_var(), default_ctor_section_asm_out_constructor(), delete_prior_computation(), discard_pending_stack_adjust(), dump_live_info(), duplicate_computed_gotos(), dwarf2out_frame_debug_cfa_window_save(), ehspec_hasher::equal(), execute_function_todo(), execute_init_datastructures(), expand_omp_atomic_load(), expand_omp_sections(), finalize_ssa_defs(), finalize_ssa_uses(), find_case_label_for_value(), find_pbb_via_hash(), find_rtx_in_ldst(), find_switch_asserts(), find_uses_to_rename(), fixup_noreturn_call(), fold_gimple_cond(), get_eh_region_from_lp_number_fn(), get_fi_for_callee(), get_frame_arg(), gimple_call_arg_flags(), gimple_purge_dead_eh_edges(), gimple_redirect_edge_and_branch(), gimplify_omp_workshare(), gsi_split_seq_before(), init_ssa_operands(), initialize_parameter_reductions(), insert_phi_nodes(), instrument_memory_accesses(), is_too_expensive(), load_assign_lhs_subreplacements(), loop_canon_p(), lower_send_clauses(), lto_read_tree(), make_goto_expr_edges(), make_pass_tree_loop_init(), make_pass_vectorize(), make_ssa_name(), mark_ref_stored(), move_allocno_live_ranges(), move_stmt_r(), optimize_bb_for_speed_p(), optimize_function_for_speed_p(), output_eh_regions(), prepare_block_for_update(), print_graphite_statistics(), process_bb_node_lives(), profile_function(), record_stmt_eh_region(), release_defs(), release_ssa_name(), remove_eh_handler_splicer(), remove_unnecessary_allocnos(), remove_unreachable_eh_regions(), renumber_gimple_stmt_uids(), renumber_gimple_stmt_uids_in_blocks(), replace_ssa_name(), sanitize_hot_paths(), special_builtin_state(), split_live_ranges_for_shrink_wrap(), standard_iv_increment_position(), stmt_overflow_infinity(), store_killed_before(), stringop_block_profile(), suitable_for_tail_opt_p(), tree_could_trap_p(), tree_loop_vectorize(), update_alias_info_with_stack_vars(), update_complex_components_on_edge(), vectorize_loops(), verify_curr_properties(), and visit_hist().
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.
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 assign_parm_setup_reg(), df_remove_dead_eq_notes(), find_costs_and_classes(), record_value_for_reg(), save_call_clobbered_regs(), and use_crosses_set_p().
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.
During parsing of a global variable, this vector contains the types referenced by the global variable.
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.
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 emit_library_call_value_1(), and push_function_context().
struct rtl_data x_rtl |
Datastructures maintained for currently processed function in RTL form.