GCC Middle and Back End API Reference
|
Functions | |
rtvec | rtvec_alloc () |
rtvec | shallow_copy_rtvec () |
unsigned int | rtx_size () |
rtx | rtx_alloc_stat () |
bool | shared_const_p () |
rtx | copy_rtx () |
rtx | shallow_copy_rtx_stat () |
int | rtx_equal_p_cb () |
int | rtx_equal_p () |
hashval_t | iterative_hash_rtx () |
void | dump_rtx_statistics () |
void | rtl_check_failed_bounds (const_rtx r, int n, const char *file, int line, const char *func) |
void | rtl_check_failed_type1 (const_rtx r, int n, int c1, const char *file, int line, const char *func) |
void | rtl_check_failed_type2 (const_rtx r, int n, int c1, int c2, const char *file, int line, const char *func) |
void | rtl_check_failed_code1 (const_rtx r, enum rtx_code code, const char *file, int line, const char *func) |
void | rtl_check_failed_code2 (const_rtx r, enum rtx_code code1, enum rtx_code code2, const char *file, int line, const char *func) |
void | rtl_check_failed_code_mode (const_rtx r, enum rtx_code code, enum machine_mode mode, bool not_mode, const char *file, int line, const char *func) |
void | rtl_check_failed_block_symbol () |
void | rtvec_check_failed_bounds (const_rtvec r, int n, const char *file, int line, const char *func) |
void | rtl_check_failed_flag (const char *name, const_rtx r, const char *file, int line, const char *func) |
Variables | |
const unsigned char | rtx_length [NUM_RTX_CODE] |
const char *const | rtx_name [NUM_RTX_CODE] |
const char *const | rtx_format [NUM_RTX_CODE] |
enum rtx_class | rtx_class [NUM_RTX_CODE] |
const unsigned char | rtx_code_size [NUM_RTX_CODE] |
const char *const | note_insn_name [NOTE_INSN_MAX] |
const char *const | reg_note_name [REG_NOTE_MAX] |
static int | rtx_alloc_counts [(int) LAST_AND_UNUSED_RTX_CODE] |
static int | rtx_alloc_sizes [(int) LAST_AND_UNUSED_RTX_CODE] |
static int | rtvec_alloc_counts |
static int | rtvec_alloc_sizes |
int | generating_concat_p |
int | currently_expanding_to_rtl |
rtx copy_rtx | ( | ) |
Create a new copy of an rtx. Recursively copies the operands of the rtx, except for those few rtx codes that are sharable.
References copy(), rtvec_alloc(), and shared_const_p().
Referenced by add_equal_note(), adjust_address_1(), adjust_decomposed_uses(), analyze_insn_to_expand_var(), canon_reg_for_combine(), check_and_process_move(), cleanup_auto_inc_dec(), combine_instructions(), combine_simplify_rtx(), cond_exec_process_insns(), confirm_change_group(), copy_delay_slot_insn(), cprop_jump(), create_insn_rtx_with_lhs(), create_insn_rtx_with_rhs(), create_speculation_check(), cse_insn(), cse_process_notes_1(), curr_insn_transform(), doloop_modify(), doloop_optimize(), duplicate_insns_of_cycles(), eliminate_partially_redundant_load(), eliminate_regs_1(), emit_libcall_block_1(), emit_move_insn(), expand_absneg_bit(), expand_assignment(), expand_binop(), expand_debug_expr(), expand_debug_parm_decl(), expand_expr_real_1(), expand_expr_real_2(), expand_field_assignment(), expand_fix(), expand_operands(), find_cond_trap(), find_reloads_address(), find_shift_sequence(), fold_rtx(), force_const_mem(), forward_propagate_and_simplify(), get_last_value(), get_secondary_mem(), get_stored_val(), if_then_else_cond(), implicit_clobber_conflict_p(), inherit_in_ebb(), init_eliminable_invariants(), insert_base_initialization(), insert_restore(), insert_save(), insert_set_in_table(), insert_store(), instantiate_virtual_regs_in_insn(), iv_number_of_iterations(), make_memloc(), match_reload(), noce_try_cmove_arith(), plus_constant(), process_addr_reg(), process_address(), process_insert_insn(), process_one_cond_exec(), process_rtx(), process_substs_on_one_elem(), propagate_for_debug_subst(), propagate_rtx(), record_value_for_reg(), remove_pseudos(), replace_label(), replace_reg_with_saved_mem(), resolve_shift_zext(), resolve_simple_move(), save_call_clobbered_regs(), schedule_reg_moves(), simplify_binary_operation_1(), simplify_if_then_else(), simplify_relational_operation_1(), simplify_replace_fn_rtx(), split_insn(), split_iv(), store_constructor(), store_constructor_field(), store_field(), store_fixed_bit_field(), subst(), subst_dup(), substitute_reg_in_expr(), try_combine(), try_eliminate_compare(), try_fwprop_subst(), try_replace_reg(), unroll_loop_runtime_iterations(), update_equiv_regs(), and update_ld_motion_stores().
void dump_rtx_statistics | ( | void | ) |
References LAST_AND_UNUSED_RTX_CODE, rtvec_alloc_counts, rtvec_alloc_sizes, rtx_alloc_counts, and rtx_alloc_sizes.
Referenced by dump_memory_report().
hashval_t iterative_hash_rtx | ( | ) |
Iteratively hash rtx X.
References strlen().
Referenced by addr_table_entry_do_hash(), and hash_loc_operands().
void rtl_check_failed_block_symbol | ( | ) |
Report that line LINE of FILE tried to access the block symbol fields of a non-block symbol. FUNC is the function that contains the line.
References internal_error(), and trim_filename().
void rtl_check_failed_bounds | ( | const_rtx | r, |
int | n, | ||
const char * | file, | ||
int | line, | ||
const char * | func | ||
) |
References internal_error(), and trim_filename().
void rtl_check_failed_code1 | ( | const_rtx | r, |
enum rtx_code | code, | ||
const char * | file, | ||
int | line, | ||
const char * | func | ||
) |
References internal_error(), and trim_filename().
void rtl_check_failed_code2 | ( | const_rtx | r, |
enum rtx_code | code1, | ||
enum rtx_code | code2, | ||
const char * | file, | ||
int | line, | ||
const char * | func | ||
) |
References internal_error(), and trim_filename().
void rtl_check_failed_code_mode | ( | const_rtx | r, |
enum rtx_code | code, | ||
enum machine_mode | mode, | ||
bool | not_mode, | ||
const char * | file, | ||
int | line, | ||
const char * | func | ||
) |
References internal_error(), and trim_filename().
void rtl_check_failed_flag | ( | const char * | name, |
const_rtx | r, | ||
const char * | file, | ||
int | line, | ||
const char * | func | ||
) |
References internal_error(), and trim_filename().
void rtl_check_failed_type1 | ( | const_rtx | r, |
int | n, | ||
int | c1, | ||
const char * | file, | ||
int | line, | ||
const char * | func | ||
) |
References internal_error(), and trim_filename().
void rtl_check_failed_type2 | ( | const_rtx | r, |
int | n, | ||
int | c1, | ||
int | c2, | ||
const char * | file, | ||
int | line, | ||
const char * | func | ||
) |
References internal_error(), and trim_filename().
rtvec rtvec_alloc | ( | ) |
Allocate an rtx vector of N elements. Store the length, and initialize all elements to zero.
References rtvec_def::elem, memset(), rtvec_alloc_counts, and rtvec_alloc_sizes.
Referenced by adjust_insn(), alter_attrs_for_insn(), apply_subst_iterator(), assign_by_spills(), attr_copy_rtx(), cleanup_auto_inc_dec(), const_vector_from_tree(), convert_set_attr(), convert_set_attr_alternative(), copy_insn_1(), copy_rtx(), copy_rtx_for_iterators(), cselib_expand_value_rtx_1(), decompose_register(), emit_delay_sequence(), emit_group_load_into_temps(), emit_group_move_into_temps(), expand_asm_memory_barrier(), expand_asm_operands(), expand_debug_expr(), expand_delays(), expand_mult_highpart(), expand_vec_perm(), expand_vector_broadcast(), gen_const_vector(), gen_mnemonic_setattr(), gen_rtvec(), gen_rtvec_v(), insn_invalid_p(), instantiate_virtual_regs_in_insn(), main(), make_automaton_attrs(), make_canonical(), make_insn_sequence(), process_one_cond_exec(), process_rtx(), process_substs_on_one_elem(), read_rtx_code(), recog_for_combine(), replace_reg_with_saved_mem(), shallow_copy_rtvec(), simplify_binary_operation_1(), simplify_cond(), simplify_const_binary_operation(), simplify_const_unary_operation(), simplify_immed_subreg(), simplify_relational_operation(), simplify_ternary_operation(), store_constructor(), substitute_address(), try_combine(), and verify_changes().
void rtvec_check_failed_bounds | ( | const_rtvec | r, |
int | n, | ||
const char * | file, | ||
int | line, | ||
const char * | func | ||
) |
XXX Maybe print the vector?
References internal_error(), and trim_filename().
rtx rtx_alloc_stat | ( | ) |
Allocate an rtx of code CODE. The CODE is stored in the rtx; all the rest is initialized to zero.
References ggc_alloc_rtx_def_stat(), memset(), rtx_alloc_counts, and rtx_alloc_sizes.
int rtx_equal_p | ( | ) |
Return 1 if X and Y are identical-looking rtx's. This is the Lisp function EQUAL for rtx arguments. Whenever changing this function check if rtx_equal_p_cb above doesn't need changing as well.
Referenced by add_equal_note(), add_var_loc_to_decl(), addr_table_entry_eq(), all_uses_available_at(), allocate_dynamic_stack_space(), analyze_insn_to_expand_var(), apply_distributive_law(), attr_equal_p(), base_alias_check(), calculate_needs_all_insns(), can_combine_p(), can_replace_by(), canon_reg_for_combine(), canonicalize_condition(), canonicalize_insn(), change_address_1(), choose_reload_regs(), clobber_slot_part(), combinable_i3pat(), combine_reloads(), combine_simplify_rtx(), compare_and_jump_seq(), compare_loc_operands(), cond_move_process_if_block(), condition_dominates_p(), conditions_mutex_p(), const_desc_rtx_eq(), const_iteration_count(), count_occurrences(), cprop_jump(), cse_cc_succs(), cse_insn(), cselib_record_sets(), dbxout_reg_parms(), decompose_automod_address(), delegitimize_mem_from_attrs(), delete_address_reloads(), delete_address_reloads_1(), delete_output_reload(), delete_slot_part(), distribute_notes(), do_input_reload(), do_output_reload(), dw_val_equal_p(), eliminate_regs_in_insn(), emit_group_store(), emit_inc(), emit_input_reload_insns(), emit_move_insn(), emit_note_insn_var_location(), emit_output_reload_insns(), emit_store_flag(), invariant_group_base_hasher::equal(), equal_different_set_p(), expand_binop(), expand_call(), expand_mult(), expand_vec_perm_1(), fill_slots_from_thread(), final_scan_insn(), find_address(), find_args_size_adjust(), find_auto_inc(), find_btr_def_group(), find_call_crossed_cheap_reg(), find_call_stack_args(), find_comparisons_in_bb(), find_equiv_reg(), find_inc(), find_last_value(), find_loc_in_1pdv(), find_reg_fusage(), find_reloads(), find_reloads_address(), find_reloads_address_1(), find_reloads_subreg_address(), find_reloads_toplev(), find_src_set_src(), fold_rtx(), force_reg(), free_load_extend(), gcse_emit_move_after(), gen_reload(), get_attr_value(), get_biv_step_1(), get_dest_from_orig_ops(), get_hard_reg_initial_reg(), get_init_value(), get_reload_reg(), if_then_else_cond(), immune_p(), implies_p(), init_alias_analysis(), invariant_expr_equal_p(), ira_update_equiv_info_by_shuffle_insn(), iv_number_of_iterations(), kill_set_value(), known_cond(), lra_emit_move(), make_canonical(), make_compound_operation(), mark_referenced_resources(), match_asm_constraints_1(), may_unswitch_on(), maybe_propagate_label_ref(), merge_notes(), move2add_use_add3_insn(), noce_get_alt_condition(), noce_process_if_block(), noce_try_abs(), noce_try_addcc(), noce_try_bitop(), noce_try_cmove_arith(), noce_try_minmax(), noce_try_move(), noce_try_store_flag_mask(), nonoverlapping_memrefs_p(), old_insns_match_p(), optimize_reg_copy_3(), outgoing_edges_match(), parse_add_or_inc(), peep2_attempt(), propagate_for_debug_subst(), propagate_rtx_1(), push_reg_equiv_alt_mem(), push_reload(), record_jump_cond(), record_reg_classes(), record_store(), redundant_insn(), reg_mentioned_p(), reg_overlap_mentioned_for_reload_p(), relax_delay_slots(), reload_combine_note_use(), reload_combine_recognize_const_pattern(), reload_combine_recognize_pattern(), reload_cse_move2add(), reload_reg_free_for_value_p(), reloads_unique_chain_p(), reversed_comparison_code_parts(), rtx_equal_for_cselib_1(), rtx_equal_for_field_assignment_p(), rtx_equal_for_memref_p(), rtx_referenced_p_1(), rtx_renumbered_equal_p(), safe_from_p(), same_dw_val_p(), sdbout_reg_parms(), set_dest_equal_p(), set_noop_p(), set_of_1(), set_slot_part(), setup_reg_equiv(), should_replace_address(), simplify_binary_operation_1(), simplify_comparison(), simplify_const_relational_operation(), simplify_if_then_else(), simplify_relational_operation_1(), simplify_replace_fn_rtx(), simplify_rtx(), simplify_set(), simplify_shift_const_1(), simplify_ternary_operation(), simplify_using_condition(), split_insn(), store_expr(), subst_reg_equivs(), substitute(), swap_commutative_operands_with_target(), thread_jump(), try_back_substitute_reg(), try_combine(), try_eliminate_compare(), try_merge_delay_insns(), try_replace_in_use(), try_replace_reg(), try_split(), update_equiv_regs(), update_temp_slot_address(), use_related_value(), validate_change_1(), validate_replace_rtx_1(), validate_simplify_insn(), variable_part_different_p(), and variable_union().
int rtx_equal_p_cb | ( | ) |
Same as rtx_equal_p, but call CB on each pair of rtx if CB is not NULL. When the callback returns true, we continue with the new pair. Whenever changing this function check if rtx_equal_p below doesn't need changing as well.
unsigned int rtx_size | ( | ) |
Return the number of bytes occupied by rtx value X.
Referenced by shallow_copy_rtx_stat().
rtvec shallow_copy_rtvec | ( | ) |
Create a bitwise copy of VEC.
References rtvec_def::elem, memcpy(), and rtvec_alloc().
Referenced by cselib_subst_to_values(), and simplify_replace_fn_rtx().
rtx shallow_copy_rtx_stat | ( | ) |
Create a new copy of an rtx. Only copy just one level.
References copy(), ggc_alloc_rtx_def_stat(), memcpy(), and rtx_size().
bool shared_const_p | ( | ) |
Return true if ORIG is a sharable CONST.
Referenced by cleanup_auto_inc_dec(), copy_insn_1(), copy_rtx(), copy_rtx_if_shared_1(), cprop_constant_p(), cselib_expand_value_rtx_1(), and verify_rtx_sharing().
int currently_expanding_to_rtl |
Nonzero when we are expanding trees to RTL.
Referenced by expand_expr_real_1(), gimple_assign_rhs_to_tree(), gimple_expand_cfg(), patch_jump_insn(), and redirect_branch_edge().
int generating_concat_p |
Nonzero when we are generating CONCATs.
Referenced by avoid_likely_spilled_reg(), expand_asm_operands(), expand_function_end(), gen_reg_rtx(), gimple_expand_cfg(), pop_function_context(), and prepare_function_start().
const char* const note_insn_name[NOTE_INSN_MAX] |
Names for kinds of NOTEs and REG_NOTEs.
const char* const reg_note_name[REG_NOTE_MAX] |
Names for REG_NOTE's in EXPR_LIST insn's.
|
static |
Referenced by dump_rtx_statistics(), and rtvec_alloc().
|
static |
Referenced by dump_rtx_statistics(), and rtvec_alloc().
|
static |
Referenced by dump_rtx_statistics(), and rtx_alloc_stat().
|
static |
Referenced by dump_rtx_statistics(), and rtx_alloc_stat().
enum rtx_class rtx_class[NUM_RTX_CODE] |
Indexed by rtx code, gives a character representing the "class" of that rtx code. See rtl.def for documentation on the defined classes.
const unsigned char rtx_code_size[NUM_RTX_CODE] |
Indexed by rtx code, gives the size of the rtx in bytes.
const char* const rtx_format[NUM_RTX_CODE] |
Indexed by rtx code, gives a sequence of operand-types for rtx's of that code. The sequence is a C string in which each character describes one operand.
const unsigned char rtx_length[NUM_RTX_CODE] |
const char* const rtx_name[NUM_RTX_CODE] |