GCC Middle and Back End API Reference
|
#include "hard-reg-set.h"
#include "rtl.def"
#include "reg-notes.def"
#include "insn-notes.def"
#include "genrtl.h"
Go to the source code of this file.
Data Structures | |
struct | addr_diff_vec_flags |
class | mem_attrs |
class | reg_attrs |
union | rtunion |
struct | reg_info |
struct | block_symbol |
struct | object_block |
struct | hwivec_def |
struct | const_poly_int_def |
struct | rtx_def |
union | rtx_def::u |
struct | rtx_expr_list |
struct | rtx_insn_list |
struct | rtx_sequence |
struct | rtx_insn |
struct | rtx_debug_insn |
struct | rtx_nonjump_insn |
struct | rtx_jump_insn |
struct | rtx_call_insn |
struct | rtx_jump_table_data |
struct | rtx_barrier |
struct | rtx_code_label |
struct | rtx_note |
struct | rtvec_def |
struct | full_rtx_costs |
class | subreg_shape |
struct | address_info |
struct | wi::int_traits< rtx_mode_t > |
class | simplify_context |
struct | subreg_info |
struct | target_rtl |
struct | rtl_hooks |
struct | cgraph_rtl_info |
struct | rtx_comparison |
Namespaces | |
namespace | wi |
Typedefs | |
typedef std::pair< rtx, machine_mode > | rtx_mode_t |
typedef poly_int< NUM_POLY_INT_COEFFS, generic_wide_int< wide_int_ref_storage< false, false > > > | wi::rtx_to_poly_wide_ref |
typedef bool(* | rtx_equal_p_callback_function) (const_rtx *, const_rtx *, rtx *, rtx *) |
typedef int(* | for_each_inc_dec_fn) (rtx mem, rtx op, rtx dest, rtx src, rtx srcoff, void *arg) |
typedef bool(* | hash_rtx_callback_function) (const_rtx, machine_mode, rtx *, machine_mode *) |
Enumerations | |
enum | rtx_code : unsigned { LAST_AND_UNUSED_RTX_CODE } |
enum | rtx_class { RTX_COMPARE , RTX_COMM_COMPARE , RTX_BIN_ARITH , RTX_COMM_ARITH , RTX_UNARY , RTX_EXTRA , RTX_MATCH , RTX_INSN , RTX_OBJ , RTX_CONST_OBJ , RTX_TERNARY , RTX_BITFIELD_OPS , RTX_AUTOINC } |
enum | reg_note { REG_NOTE_MAX } |
enum | insn_note { NOTE_INSN_MAX } |
enum | label_kind { LABEL_NORMAL = 0 , LABEL_STATIC_ENTRY , LABEL_GLOBAL_ENTRY , LABEL_WEAK_ENTRY } |
enum | global_rtl_index { GR_STACK_POINTER , GR_FRAME_POINTER , GR_ARG_POINTER = GR_FRAME_POINTER , GR_HARD_FRAME_POINTER = GR_FRAME_POINTER , GR_VIRTUAL_INCOMING_ARGS , GR_VIRTUAL_STACK_ARGS , GR_VIRTUAL_STACK_DYNAMIC , GR_VIRTUAL_OUTGOING_ARGS , GR_VIRTUAL_CFA , GR_VIRTUAL_PREFERRED_STACK_BOUNDARY , GR_MAX } |
enum | memop_ret { RETURN_BEGIN , RETURN_END , RETURN_END_MINUS_ONE } |
enum | libcall_type { LCT_NORMAL = 0 , LCT_CONST = 1 , LCT_PURE = 2 , LCT_NORETURN = 3 , LCT_THROW = 4 , LCT_RETURNS_TWICE = 5 } |
#define ADDR_DIFF_VEC_FLAGS | ( | RTX | ) |
In an ADDR_DIFF_VEC, the flags for RTX for use by branch shortening. See the comments for ADDR_DIFF_VEC in rtl.def.
Referenced by shorten_branches().
#define alloca_raw_REG | ( | mode, | |
regno ) |
Referenced by can_vec_extract_var_idx_p(), can_vec_set_var_idx_p(), and insn_predicate_matches_p().
#define ANY_RETURN_P | ( | X | ) |
Predicate yielding nonzero iff X is a return or simple_return.
Referenced by bb_is_just_return(), classify_insn(), condjump_in_parallel_p(), condjump_p(), dbr_schedule(), duplicate_insn_chain(), fill_simple_delay_slots(), fill_slots_from_thread(), first_active_target_insn(), follow_jumps(), get_branch_condition(), get_jump_flags(), jump_to_label_p(), make_return_insns(), mark_target_live_regs(), optimize_skip(), own_thread_p(), redirect_exp_1(), redirect_jump_2(), redirect_target(), relax_delay_slots(), reload_combine(), return_insn_p(), set_return_jump_label(), simplejump_or_return_p(), simplify_set(), skip_consecutive_labels(), and tablejump_p().
#define arg_pointer_rtx (global_rtl[GR_ARG_POINTER]) |
Referenced by add_stores(), based_loc_descr(), compute_frame_pointer_to_fb_displacement(), const_or_frame_p(), expand_expr_real_2(), expand_function_start(), find_base_value(), find_reloads_address(), fixed_base_plus_p(), function_invariant_p(), gen_rtx_REG(), get_group_info(), hash_rtx(), init_eliminable_invariants(), init_emit(), init_emit_regs(), instantiate_new_reg(), lookup_global_register(), mem_loc_descriptor(), nonzero_address_p(), nonzero_bits1(), reg_loc_descriptor(), rtx_addr_can_trap_p_1(), rtx_unstable_p(), rtx_varies_p(), setup_reg_equiv(), simplify_context::simplify_plus_minus(), vt_add_function_parameter(), vt_init_cfa_base(), and vt_initialize().
#define ARITHMETIC_P | ( | X | ) |
1 if X is an arithmetic operator.
Referenced by distribute_and_simplify_rtx(), force_operand(), get_last_value_validate(), noce_can_force_operand(), nonzero_bits_binary_arith_p(), num_sign_bit_copies_binary_arith_p(), record_value_for_reg(), and update_table_tick().
#define ASM_INPUT_SOURCE_LOCATION | ( | RTX | ) |
Referenced by decode_asm_operands(), final_scan_insn_1(), and rtx_writer::print_rtx_operand_code_L().
#define ASM_OPERANDS_INPUT | ( | RTX, | |
N ) |
Referenced by insn_propagation::apply_to_pattern_1(), canon_asm_operands(), count_reg_usage(), decode_asm_operands(), df_uses_record(), exp_equiv_p(), expand_asm_stmt(), fold_rtx(), hash_rtx(), mark_jump_label_asm(), mark_referenced_resources(), mark_set_resources(), note_uses(), reg_referenced_p(), and rtx_properties::try_to_add_pattern().
#define ASM_OPERANDS_INPUT_CONSTRAINT | ( | RTX, | |
N ) |
Referenced by decode_asm_operands(), exp_equiv_p(), hash_rtx(), and match_asm_constraints_1().
#define ASM_OPERANDS_INPUT_CONSTRAINT_EXP | ( | RTX, | |
N ) |
Referenced by expand_asm_stmt().
#define ASM_OPERANDS_INPUT_CONSTRAINT_VEC | ( | RTX | ) |
Referenced by adjust_insn(), copy_insn_1(), and instantiate_virtual_regs_in_insn().
#define ASM_OPERANDS_INPUT_LENGTH | ( | RTX | ) |
Referenced by insn_propagation::apply_to_pattern_1(), asm_noperands(), canon_asm_operands(), count_reg_usage(), decode_asm_operands(), df_uses_record(), exp_equiv_p(), fold_rtx(), hash_rtx(), mark_jump_label_asm(), mark_referenced_resources(), mark_set_resources(), match_asm_constraints_1(), note_uses(), reg_referenced_p(), and rtx_properties::try_to_add_pattern().
#define ASM_OPERANDS_INPUT_MODE | ( | RTX, | |
N ) |
Referenced by decode_asm_operands().
#define ASM_OPERANDS_INPUT_VEC | ( | RTX | ) |
Referenced by adjust_insn(), asm_noperands(), copy_insn_1(), instantiate_virtual_regs_in_insn(), match_asm_constraints_1(), and validate_replace_rtx_1().
#define ASM_OPERANDS_LABEL | ( | RTX, | |
N ) |
#define ASM_OPERANDS_LABEL_LENGTH | ( | RTX | ) |
Referenced by asm_labels_ok(), asm_noperands(), classify_insn(), create_trace_edges(), decode_asm_operands(), force_nonfallthru_and_redirect(), make_edges(), mark_jump_label_asm(), patch_jump_insn(), and redirect_jump_1().
#define ASM_OPERANDS_LABEL_VEC | ( | RTX | ) |
Referenced by adjust_insn(), and ira_nullify_asm_goto().
#define ASM_OPERANDS_OUTPUT_CONSTRAINT | ( | RTX | ) |
Referenced by decode_asm_operands(), exp_equiv_p(), expand_asm_stmt(), hash_rtx(), instantiate_virtual_regs_in_insn(), and match_asm_constraints_1().
#define ASM_OPERANDS_OUTPUT_IDX | ( | RTX | ) |
Referenced by adjust_insn(), adjust_mems(), exp_equiv_p(), hash_rtx(), and instantiate_virtual_regs_in_insn().
#define ASM_OPERANDS_SOURCE_LOCATION | ( | RTX | ) |
Referenced by decode_asm_operands(), ira_nullify_asm_goto(), location_for_asm(), and rtx_writer::print_rtx_operand_code_L().
#define ASM_OPERANDS_TEMPLATE | ( | RTX | ) |
Access various components of an ASM_OPERANDS rtx.
Referenced by decode_asm_operands(), exp_equiv_p(), expand_asm_stmt(), hash_rtx(), and instantiate_virtual_regs_in_insn().
#define AUTO_INC_DEC 0 |
Indicate whether the machine has any sort of auto increment addressing. If not, we can avoid checking for REG_INC notes.
Referenced by asm_operand_ok(), calculate_loop_reg_pressure(), can_combine_p(), combine_instructions(), constrain_operands(), delete_output_reload(), emit_input_reload_insns(), peep2_attempt(), reg_inc_found_and_valid_p(), reload(), resolve_simple_move(), scan_rtx_address(), try_combine(), try_split(), update_auto_inc_notes(), and update_inc_notes().
#define BARRIER_P | ( | X | ) |
Predicate yielding nonzero iff X is a barrier insn.
Referenced by add_insn_after(), add_insn_before(), build_insn_chain(), cfg_layout_delete_block(), cleanup_barriers(), clear_hashed_info_until_next_barrier(), create_pseudo_cfg(), delete_from_delay_slot(), delete_related_insns(), duplicate_insn_chain(), emit_barrier_after_bb(), emit_insn_after_1(), emit_note_after(), emit_note_before(), emit_to_new_bb_before(), expand_function_end(), expand_gimple_basic_block(), expand_gimple_cond(), expand_gimple_tailcall(), find_basic_block(), find_bb_boundaries(), find_end_label(), fix_crossing_unconditional_branches(), fixup_abnormal_edges(), follow_jumps(), free_bb_for_insn(), get_last_bb_insn(), maybe_cleanup_end_of_block(), merge_blocks_move_predecessor_nojumps(), merge_blocks_move_successor_nojumps(), merge_if_block(), own_thread_p(), print_rtl_with_bb(), rtx_writer::print_rtx_operand_code_u(), redundant_insn(), relax_delay_slots(), reload_combine(), remove_barriers_from_footer(), remove_insn(), reorder_insns(), rtl_merge_blocks(), rtl_split_edge(), rtl_verify_bb_insn_chain(), rtl_verify_bb_layout(), rtl_verify_bb_pointers(), rtl_verify_fallthru(), scan_trace(), set_label_offsets(), shorten_branches(), skip_consecutive_labels(), is_a_helper< const T * >::test(), is_a_helper< const T * >::test(), try_optimize_cfg(), try_redirect_by_replacing_jump(), update_bb_for_insn_chain(), and update_cfg_for_uncondjump().
#define BINARY_P | ( | X | ) |
1 if X is a binary operator.
Referenced by combine_simplify_rtx(), contains_muldiv(), ext_dce_process_uses(), find_split_point(), if_then_else_cond(), simplify_context::simplify_merge_mask(), and try_combine().
#define BLOCK_SYMBOL_CHECK | ( | RTX | ) |
#define CALL_INSN_FUNCTION_USAGE | ( | INSN | ) |
This field is only present on CALL_INSNs. It holds a chain of EXPR_LIST of USE, CLOBBER and SET expressions. USE expressions list the registers filled with arguments that are passed to the function. CLOBBER expressions document the registers explicitly clobbered by this CALL_INSN. SET expressions say that the return value of the call (the SET_DEST) is equivalent to a value available before the call (the SET_SRC). This kind of SET is used when the return value is predictable in advance. It is purely an optimisation hint; unlike USEs and CLOBBERs, it does not affect register liveness. Pseudo registers cannot be mentioned in this list.
Referenced by add_function_usage_to(), build_def_use(), canonicalize_insn(), copyprop_hardreg_forward_1(), count_reg_usage(), cse_insn(), cselib_process_insn(), delete_output_reload(), df_get_call_refs(), emit_call_1(), emit_copy_of_insn_after(), ext_dce_process_bb(), find_call_crossed_cheap_reg(), find_call_stack_args(), find_equiv_reg(), find_first_parameter_load(), find_reg_fusage(), find_regno_fusage(), get_call_args(), insert_one_insn(), instantiate_virtual_regs(), invalidate_from_sets_and_clobbers(), lra_set_insn_recog_data(), lra_update_insn_regno_info(), make_call_insn_raw(), mark_referenced_resources(), mark_set_resources(), note_stores(), old_insns_match_p(), peep2_attempt(), prepare_call_arguments(), reload(), reload_combine(), reset_insn_used_flags(), scan_insn(), spill_pseudos(), try_combine(), try_split(), rtx_properties::try_to_add_insn(), unshare_all_rtl_again(), unshare_all_rtl_in_chain(), and verify_insn_sharing().
#define CALL_P | ( | X | ) |
Predicate yielding nonzero iff X is a call insn.
Referenced by active_insn_p(), add_function_usage_to(), add_with_sets(), asan_clear_shadow(), block_jumps_and_fallthru(), build_def_use(), calculate_gen_cands(), call_from_call_insn(), can_combine_p(), can_delete_call(), can_move_insns_across(), can_nonlocal_goto(), canonicalize_insn(), cheap_bb_rtx_cost_p(), collect_fn_hard_reg_usage(), combine_reload_insn(), combine_stack_adjustments_for_block(), compute_hash_table_work(), cond_exec_process_insns(), contains_call_div_mod(), copyprop_hardreg_forward_1(), create_trace_edges(), cse_insn(), cselib_process_insn(), curr_insn_transform(), dead_or_set_regno_p(), decrease_live_ranges_number(), default_invalid_within_doloop(), deletable_insn_p(), delete_output_reload(), delete_prior_computation(), df_insn_refs_collect(), df_note_bb_compute(), df_scan_start_dump(), df_update_entry_exit_and_calls(), distribute_links(), distribute_notes(), do_remat(), emit_libcall_block_1(), emit_library_call_value_1(), expand_builtin_apply(), expand_builtin_longjmp(), expand_builtin_nonlocal_goto(), expand_call(), expand_call_stmt(), expand_doubleword_divmod(), expand_doubleword_mod(), expand_function_end(), expand_gimple_tailcall(), ext_dce_process_bb(), ext_dce_process_sets(), fill_simple_delay_slots(), final_scan_insn_1(), find_active_insn_after(), find_active_insn_before(), find_all_hard_reg_sets(), find_args_size_adjust(), find_call_stack_args(), find_equiv_reg(), find_exits(), find_first_parameter_load(), find_invariants_bb(), find_reg_fusage(), find_regno_fusage(), find_reloads(), finish_eh_generation(), fixup_abnormal_edges(), fixup_args_size_notes(), force_move_args_size_note(), if_test_bypass_p(), inherit_in_ebb(), insert_insn_end_basic_block(), insert_one_insn(), insert_prologue_epilogue_for_components(), insn_callee_abi(), insn_could_throw_p(), instantiate_virtual_regs(), invalidate_from_sets_and_clobbers(), last_call_insn(), leaf_function_p(), load_killed_in_block_p(), load_killed_in_block_p(), load_modified_by_store_p(), lra_set_insn_recog_data(), lra_update_insn_regno_info(), mark_insn(), mark_target_live_regs(), mark_transaction_restart_calls(), memory_modified_in_insn_p(), memref_used_between_p(), merge_if_block(), need_fake_edge_p(), next_insn_no_annul(), no_conflict_move_test(), noce_convert_multiple_sets(), note_stores(), old_insns_match_p(), operand_to_remat(), outgoing_edges_match(), peep2_attempt(), rtx_writer::print_rtx_operand_code_e(), process_bb_lives(), process_bb_node_lives(), prune_expressions(), purge_dead_edges(), function_reader::read_rtx_operand(), record_dead_and_set_regs(), record_last_mem_set_info_common(), record_opr_changes(), record_out_operands(), redundant_insn(), reg_set_p(), reg_used_between_p(), regstat_bb_compute_calls_crossed(), regstat_bb_compute_ri(), reload(), reload_as_needed(), reload_combine(), reload_cse_move2add_invalidate(), reload_cse_simplify(), requires_stack_frame_p(), reset_insn_used_flags(), rest_of_clean_state(), rtl_block_ends_with_call_p(), rtl_flow_call_edges_add(), rtl_make_eh_edge(), rtl_verify_edges(), scan_insn(), set_bb_regs(), set_nothrow_function_flags(), setup_save_areas(), simplify_using_initial_values(), sjlj_mark_call_sites(), spill_pseudos(), split_live_ranges_for_shrink_wrap(), store_killed_in_insn(), is_a_helper< const T * >::test(), is_a_helper< const T * >::test(), thread_prologue_and_epilogue_insns(), try_combine(), try_split(), rtx_properties::try_to_add_insn(), unshare_all_rtl_again(), unshare_all_rtl_in_chain(), update_equiv_regs_prescan(), validate_equiv_mem(), verify_insn_sharing(), and vt_initialize().
#define can_create_pseudo_p | ( | ) |
This macro indicates whether you may create a new pseudo-register.
Referenced by canonicalize_comparison(), emit_conditional_move(), gen_reg_rtx(), and prepare_cmp_insn().
#define CASE_CONST_ANY |
Match all CONST_* rtxes.
Referenced by canon_reg(), check_maybe_invariant(), cleanup_auto_inc_dec(), clear_struct_flag(), compute_transp(), computed_jump_p_1(), copy_insn_1(), copy_rtx(), copy_rtx_if_shared_1(), count_occurrences(), count_reg_usage(), cselib_expand_value_rtx_1(), cselib_subst_to_values(), df_uses_record(), eliminate_regs_1(), elimination_effects(), equiv_init_varies_p(), find_single_use_1(), fold_rtx(), hash_invariant_expr_1(), invariant_expr_equal_p(), lra_eliminate_regs_1(), mark_referenced_resources(), mark_set_resources(), mark_used_flags(), mark_used_regs_combine(), may_trap_p_1(), memref_referenced_p(), modified_between_p(), modified_in_p(), oprs_unchanged_p(), oprs_unchanged_p(), reg_mentioned_p(), reg_scan_mark_refs(), rtx_moveable_p(), rtx_unstable_p(), rtx_varies_p(), scan_paradoxical_subregs(), scan_rtx(), shallow_copy_rtx(), side_effects_p(), subst_reg_equivs(), verify_rtx_sharing(), volatile_insn_p(), volatile_refs_p(), and want_to_gcse_p().
#define CASE_CONST_SCALAR_INT |
Match CONST_*s that can represent compile-time constant integers.
Referenced by convert_memory_address_addr_space_1(), plus_constant(), and simplify_context::simplify_plus_minus().
#define CASE_CONST_UNIQUE |
Match CONST_*s for which pointer equality corresponds to value equality.
Referenced by exp_equiv_p(), operands_match_p(), operands_match_p(), rtvec_all_equal_p(), rtx_equal_for_cselib_1(), rtx_equal_for_memref_p(), rtx_equal_p(), rtx_renumbered_equal_p(), and uses_rtx_reuse_p().
#define CODE_LABEL_NUMBER | ( | INSN | ) |
The label-number of a code-label. The assembler label is made from `L' and the label-number printed in decimal. Label numbers are unique in a compilation.
Referenced by add_call_src_coords_attributes(), add_high_low_attributes(), compare_constant(), const_hash_1(), const_rtx_hash_1(), cselib_hash_rtx(), delete_vta_debug_insn(), dw2_output_call_site_table(), final_scan_insn_1(), hash_rtx(), label_to_alignment(), maybe_set_first_label_num(), maybe_set_max_label_num(), output_addr_const(), output_asm_label(), rest_of_clean_state(), set_label_offsets(), and set_offsets_for_label().
#define COMMUTATIVE_ARITH_P | ( | X | ) |
1 if X is an arithmetic operator.
Referenced by apply_distributive_law(), combine_simplify_rtx(), known_cond(), maybe_swap_commutative_operands(), noce_bbs_ok_for_cond_zero_arith(), and simplify_while_replacing().
#define COMMUTATIVE_P | ( | X | ) |
1 if X is a commutative operator on integers.
Referenced by canonicalize_change_group(), cselib_hash_rtx(), hook_bool_const_rtx_commutative_p(), and rtx_equal_for_memref_p().
#define COMPARISON_P | ( | X | ) |
1 if X is a relational operator.
Referenced by bb_estimate_probability_locally(), canonicalize_condition(), combine_simplify_rtx(), comparison_operator(), emit_conditional_add(), emit_conditional_move(), emit_conditional_move_1(), expand_compound_operation(), find_comparison_args(), find_flags_uses_in_insn(), gen_lowpart_for_combine(), if_then_else_cond(), iv_number_of_iterations(), known_cond(), make_compound_operation(), mention_regs(), reversed_comparison_code(), simplify_context::simplify_binary_operation_1(), simplify_comparison(), simplify_if_then_else(), simplify_context::simplify_logical_relational_operation(), simplify_context::simplify_merge_mask(), simplify_context::simplify_relational_operation_1(), simplify_set(), simplify_context::simplify_subreg(), simplify_context::simplify_ternary_operation(), simplify_context::simplify_unary_operation_1(), simplify_using_condition(), and try_combine().
#define COND_EXEC_CODE | ( | RTX | ) |
Referenced by adjust_insn(), insn_propagation::apply_to_pattern_1(), call_from_call_insn(), cond_exec_process_insns(), cselib_record_sets(), dead_or_set_regno_p(), df_defs_record(), df_find_hard_reg_defs(), find_equiv_reg(), noop_move_p(), note_pattern_stores(), note_uses(), print_pattern(), reg_referenced_p(), and rtx_properties::try_to_add_pattern().
#define COND_EXEC_TEST | ( | RTX | ) |
For a COND_EXEC rtx, COND_EXEC_TEST is the condition to base conditionally executing the code on, COND_EXEC_CODE is the code to execute if the condition is true.
Referenced by insn_propagation::apply_to_pattern_1(), cond_exec_process_insns(), cselib_record_sets(), final_scan_insn_1(), note_uses(), print_pattern(), reg_referenced_p(), and rtx_properties::try_to_add_pattern().
#define CONST0_RTX | ( | MODE | ) |
Returns a constant 0 rtx in mode MODE. Integer modes are treated the same as VOIDmode.
Referenced by anti_adjust_stack_and_probe_stack_clash(), canonicalize_condition(), clear_storage_hints(), combine_simplify_rtx(), compute_costs(), compute_stack_clash_protection_loop_data(), const_vec_series_p_1(), const_vector_from_tree(), const_vector_mask_from_tree(), copy_blkmode_to_reg(), default_zero_call_used_regs(), do_compare_rtx_and_jump(), do_jump(), emit_cmp_and_jump_insns(), emit_group_store(), expand_abs(), expand_binop(), expand_doubleword_clz_ctz_ffs(), expand_doubleword_shift(), expand_expr_real(), expand_ffs(), expand_mult(), expand_mult_const(), expand_one_ssa_partition(), expand_sjlj_dispatch_table(), expand_superword_shift(), expand_unop(), expand_vec_perm_const(), expand_widening_mult(), rtx_vector_builder::find_cached_value(), find_comparison_args(), fold_rtx(), get_supported_else_vals(), initialize_uninitialized_regs(), inline_string_cmp(), insert_var_expansion_initialization(), known_cond(), noce_try_abs(), relational_result(), resolve_shift_zext(), resolve_simple_move(), simplify_context::simplify_binary_operation_1(), simplify_const_relational_operation(), simplify_gen_subreg_concatn(), simplify_context::simplify_relational_operation_1(), simplify_set(), simplify_context::simplify_subreg(), simplify_context::simplify_ternary_operation(), store_constructor(), and try_merge_compare().
#define const0_rtx (const_int_rtx[MAX_SAVED_CONST_INT]) |
Referenced by addr_for_mem_ref(), adjust_stack(), allocate_dynamic_stack_space(), analyze_iv_to_split_insn(), anti_adjust_stack(), anti_adjust_stack_and_probe(), asan_clear_shadow(), asan_emit_stack_protection(), assemble_zeros(), assign_parm_find_entry_rtl(), assign_parm_find_stack_rtl(), assign_parms(), autoinc_split(), base_to_reg(), bb_estimate_probability_locally(), find_comparison_dom_walker::before_dom_children(), biv_p(), bswap_loc_descriptor(), builtin_strncpy_read_str(), can_assign_to_reg_without_clobbers_p(), can_compare_p(), canonicalize_iv_subregs(), carry_backpropagate(), ceil_sdiv_adjust(), ceil_udiv_adjust(), choose_reload_regs(), clear_storage_hints(), clz_loc_descriptor(), combine_simplify_rtx(), compare_by_pieces(), comparison_result(), convert_mode_scalar(), cselib_record_sets(), cselib_subst_to_values(), decompose(), default_expand_builtin_saveregs(), do_compare_rtx_and_jump(), do_jump_by_parts_equality_rtx(), do_jump_by_parts_greater_rtx(), do_jump_by_parts_zero_rtx(), do_store_flag(), doloop_condition_get(), doloop_modify(), dump_iv_info(), dw2_asm_output_encoded_addr_rtx(), dw2_asm_output_nstring(), dw2_assemble_integer(), eliminate_constant_term(), eliminate_implied_condition(), eliminate_regs_1(), emit_block_cmp_hints(), emit_block_cmp_via_loop(), emit_block_move_via_loop(), emit_call_1(), emit_case_dispatch_table(), emit_conditional_add(), emit_conditional_move(), emit_libcall_block_1(), emit_stack_probe(), emit_store_flag(), emit_store_flag_1(), emit_store_flag_force(), emit_store_flag_int(), expand_addsub_overflow(), expand_arith_overflow(), expand_assignment(), expand_atomic_compare_and_swap(), expand_atomic_fetch_op(), expand_atomic_fetch_op_no_fallback(), expand_atomic_load(), expand_atomic_store(), expand_atomic_test_and_set(), expand_binop(), expand_builtin(), expand_builtin_apply(), expand_builtin_assume_aligned(), expand_builtin_atomic_always_lock_free(), expand_builtin_atomic_clear(), expand_builtin_atomic_compare_exchange(), expand_builtin_bzero(), expand_builtin_compare_and_swap(), expand_builtin_eh_copy_values(), expand_BUILTIN_EXPECT(), expand_builtin_expect(), expand_builtin_expect_with_probability(), expand_builtin_frame_address(), expand_builtin_goacc_parlevel_id_size(), expand_builtin_init_descriptor(), expand_builtin_init_trampoline(), expand_builtin_int_roundingfn_2(), expand_builtin_issignaling(), expand_builtin_longjmp(), expand_builtin_mathfn_3(), expand_builtin_mathfn_ternary(), expand_builtin_memory_chk(), expand_builtin_memory_copy_args(), expand_builtin_memset_args(), expand_builtin_nonlocal_goto(), expand_builtin_object_size(), expand_builtin_prefetch(), expand_builtin_sincos(), expand_builtin_stpcpy_1(), expand_builtin_strcmp(), expand_builtin_strlen(), expand_builtin_strncmp(), expand_builtin_strub_enter(), expand_builtin_strub_leave(), expand_builtin_strub_update(), expand_builtin_sync_lock_release(), expand_builtin_thread_pointer(), expand_builtin_va_copy(), expand_builtin_va_end(), expand_builtin_va_start(), expand_call(), expand_call_stmt(), expand_ccmp_expr(), expand_compare_and_swap_loop(), expand_cond_expr_using_cmove(), expand_copysign_absneg(), expand_debug_expr(), expand_divmod(), expand_doubleword_clz_ctz_ffs(), expand_doubleword_shift(), expand_eh_return(), expand_expr_real(), expand_expr_real_1(), expand_expr_real_2(), expand_float(), expand_gimple_basic_block(), expand_GOACC_DIM_POS(), expand_ifn_atomic_bit_test_and(), expand_ifn_atomic_op_fetch_cmp_0(), expand_movstr(), expand_mul_overflow(), expand_neg_overflow(), expand_one_error_var(), expand_POPCOUNT(), expand_return(), expand_sdiv_pow2(), expand_shift_1(), expand_single_bit_test(), expand_smod_pow2(), expand_speculation_safe_value(), expand_subword_shift(), expand_UNIQUE(), expand_vec_perm_const(), expand_vector_ubsan_overflow(), extract_integral_bit_field(), rtx_vector_builder::find_cached_value(), find_comparison_args(), find_dummy_reload(), find_flags_uses_in_insn(), find_moveable_pseudos(), find_reloads(), find_split_point(), compare_by_pieces_d::finish_mode(), floor_sdiv_adjust(), fold_rtx(), force_int_to_mode(), force_move_args_size_note(), force_to_mode(), gen_addr_rtx(), gen_lowpart_for_combine(), gen_vec_series(), compare_by_pieces_d::generate(), get_biv_step(), get_biv_step_1(), get_iv_value(), get_last_value_validate(), get_stored_val(), if_then_else_cond(), implies_p(), init_emit_once(), init_expmed(), init_lower_subreg(), inline_expand_builtin_bytecmp(), internal_arg_pointer_based_exp(), is_parallel_of_n_reg_sets(), iv_add(), iv_constant(), iv_extend(), iv_number_of_iterations(), iv_subreg(), known_cond(), lra_asm_insn_error(), lra_substitute_pseudo(), make_compound_operation(), make_extraction(), make_field_assignment(), make_reg_eh_region_note(), may_trap_p_1(), maybe_emit_op(), maybe_legitimize_operand(), maybe_optimize_fetch_op(), memory_address_addr_space(), memrefs_conflict_p(), move2add_note_store(), move2add_use_add2_insn(), move2add_use_add3_insn(), noce_bbs_ok_for_cond_zero_arith(), noce_emit_cmove(), noce_emit_czero(), noce_try_bitop(), noce_try_sign_mask(), noce_try_store_flag(), noce_try_store_flag_mask(), operand_subword(), output_ttype(), plus_constant(), popcount_loc_descriptor(), prepare_call_address(), prepare_cmp_insn(), prepare_float_lib_cmp(), print_pattern(), probe_stack_range(), profile_function(), push_reload(), recog_for_combine_1(), record_store(), record_value_for_reg(), relational_result(), reload_combine_note_use(), reload_combine_recognize_pattern(), reload_cse_move2add(), reload_reg_free_for_value_p(), round_sdiv_adjust(), round_udiv_adjust(), rtl_flow_call_edges_add(), rtl_for_decl_location(), scratch_equal(), set_noop_p(), setup_incoming_promotions(), shorten_into_mode(), simplify_and_const_int_1(), simplify_context::simplify_binary_operation_1(), simplify_context::simplify_binary_operation_series(), simplify_comparison(), simplify_const_relational_operation(), simplify_const_unary_operation(), simplify_if_then_else(), simplify_context::simplify_logical_relational_operation(), simplify_context::simplify_relational_operation(), simplify_context::simplify_relational_operation_1(), simplify_set(), simplify_shift_const_1(), simplify_context::simplify_ternary_operation(), simplify_context::simplify_unary_operation_1(), simplify_using_condition(), simplify_using_initial_values(), simplify_while_replacing(), sjlj_emit_function_enter(), split_const(), split_double(), stack_protect_epilogue(), stack_protect_prologue(), store_expr(), store_field(), store_split_bit_field(), store_unaligned_arguments_into_pseudos(), string_cst_read_str(), strip_offset(), subst(), try_combine(), try_merge_compare(), and unroll_loop_runtime_iterations().
#define CONST1_RTX | ( | MODE | ) |
Likewise, for the constants 1 and 2 and -1.
Referenced by expand_mult(), expand_sjlj_dispatch_table(), extract_ashift_operands_p(), rtx_vector_builder::find_cached_value(), insert_var_expansion_initialization(), relational_result(), simplify_context::simplify_binary_operation_1(), and simplify_context::simplify_unary_operation_1().
#define const1_rtx (const_int_rtx[MAX_SAVED_CONST_INT+1]) |
Referenced by bb_estimate_probability_locally(), canonicalize_iv_subregs(), carry_backpropagate(), ceil_sdiv_adjust(), ceil_udiv_adjust(), clz_loc_descriptor(), combine_simplify_rtx(), compare_by_pieces(), control_flow_insn_p(), convert_mode_scalar(), doloop_condition_get(), doloop_modify(), doloop_simplify_count(), dump_iv_info(), dw2_asm_output_encoded_addr_rtx(), emit_block_cmp_via_loop(), emit_conditional_add(), emit_conditional_move(), emit_cstore(), emit_store_flag_1(), emit_store_flag_force(), emit_store_flag_int(), expand_arith_set_overflow(), expand_atomic_test_and_set(), expand_builtin(), expand_builtin_atomic_always_lock_free(), expand_builtin_atomic_is_lock_free(), expand_builtin_goacc_parlevel_id_size(), expand_builtin_longjmp(), expand_builtin_memory_copy_args(), expand_builtin_signbit(), expand_clrsb_using_clz(), expand_divmod(), expand_doubleword_divmod(), expand_eh_return(), expand_expr_real_2(), expand_float(), expand_ifn_atomic_bit_test_and(), expand_mul_overflow(), expand_parity(), expand_POPCOUNT(), expand_single_bit_test(), expand_smod_pow2(), expand_subword_shift(), expand_sync_lock_test_and_set(), rtx_vector_builder::find_cached_value(), implies_p(), init_emit_once(), ira(), iv_analyze_biv(), iv_constant(), iv_extend(), iv_number_of_iterations(), iv_subreg(), local_cprop_pass(), lra_final_code_change(), lshift_cheap_p(), make_field_assignment(), noce_try_abs(), noce_try_addcc(), noce_try_bitop(), one_cprop_pass(), optimize_bitfield_assignment_op(), popcount_loc_descriptor(), prefer_and_bit_test(), prepare_cmp_insn(), prepare_float_lib_cmp(), relational_result(), round_sdiv_adjust(), round_udiv_adjust(), simplify_context::simplify_binary_operation_1(), simplify_comparison(), simplify_context::simplify_relational_operation_1(), simplify_context::simplify_unary_operation_1(), try_combine(), and unroll_loop_runtime_iterations().
#define CONST2_RTX | ( | MODE | ) |
#define const2_rtx (const_int_rtx[MAX_SAVED_CONST_INT+2]) |
Referenced by expand_POPCOUNT().
#define CONST_DOUBLE_AS_FLOAT_P | ( | X | ) |
Predicate yielding true iff X is an rtx for a double-int.
Referenced by avoid_constant_pool_reference(), expand_copysign(), expand_copysign_absneg(), expand_mult(), find_equiv_reg(), gen_lowpart_common(), implicit_set_cond_p(), loc_descriptor(), output_constant_pool_2(), rtx_writer::print_rtx(), simplify_context::simplify_binary_operation_1(), simplify_const_binary_operation(), simplify_const_relational_operation(), simplify_const_unary_operation(), simplify_context::simplify_gen_subreg(), simplify_context::simplify_subreg(), simplify_context::simplify_unary_operation_1(), and valid_for_const_vector_p().
#define CONST_DOUBLE_AS_INT_P | ( | X | ) |
Predicate yielding true iff X is an rtx for a double-int.
Referenced by expand_mult(), mode_signbit_p(), output_addr_const(), and rtx_to_double_int().
#define CONST_DOUBLE_HIGH | ( | r | ) |
#define CONST_DOUBLE_LOW | ( | r | ) |
For a CONST_DOUBLE: #if TARGET_SUPPORTS_WIDE_INT == 0 For a VOIDmode, there are two integers CONST_DOUBLE_LOW is the low-order word and ..._HIGH the high-order. #endif For a float, there is a REAL_VALUE_TYPE structure, and CONST_DOUBLE_REAL_VALUE(r) is a pointer to it.
Referenced by add_const_value_attribute(), const_rtx_hash_1(), cselib_hash_rtx(), wi::int_traits< rtx_mode_t >::decompose(), const_double_hasher::equal(), const_double_hasher::hash(), hash_rtx(), immed_double_const(), make_tree(), mode_signbit_p(), output_addr_const(), print_value(), rtx_to_double_int(), and split_double().
#define CONST_DOUBLE_P | ( | X | ) |
Predicate yielding true iff X is an rtx for a double-int or floating point constant.
Referenced by const_double_operand(), constant_pool_constant_p(), native_encode_rtx(), and split_double().
#define CONST_DOUBLE_REAL_VALUE | ( | r | ) |
Referenced by avoid_constant_pool_reference(), compress_float_constant(), const_rtx_hash_1(), cselib_hash_rtx(), const_double_hasher::equal(), expand_copysign(), expand_mult(), gen_exp(), const_double_hasher::hash(), hash_rtx(), implicit_set_cond_p(), insert_float(), make_tree(), native_encode_rtx(), output_constant_pool_2(), rtx_writer::print_rtx(), print_value(), simplify_context::simplify_binary_operation_1(), simplify_const_binary_operation(), simplify_const_relational_operation(), simplify_const_unary_operation(), and split_double().
#define CONST_FIXED_P | ( | X | ) |
Predicate yielding nonzero iff X is an rtx for a constant fixed-point.
Referenced by simplify_const_binary_operation(), simplify_context::simplify_gen_subreg(), simplify_context::simplify_subreg(), and valid_for_const_vector_p().
#define CONST_FIXED_VALUE | ( | r | ) |
Referenced by const_rtx_hash_1(), cselib_hash_rtx(), const_fixed_hasher::equal(), const_fixed_hasher::hash(), hash_rtx(), and print_value().
#define CONST_FIXED_VALUE_HIGH | ( | r | ) |
Referenced by native_encode_rtx().
#define CONST_FIXED_VALUE_LOW | ( | r | ) |
Referenced by native_encode_rtx(), and output_addr_const().
#define CONST_INT_P | ( | X | ) |
Predicate yielding nonzero iff X is an rtx for a constant integer.
Referenced by allocate_dynamic_stack_space(), anti_adjust_stack_and_probe(), anti_adjust_stack_and_probe_stack_clash(), asm_operand_ok(), autoinc_split(), avoid_expensive_constant(), base_alias_check(), can_replace_by(), canonicalize_address(), canonicalize_address_mult(), canonicalize_condition(), canonicalize_reload_addr(), carry_backpropagate(), change_zero_ext(), clear_storage_hints(), combine_simplify_rtx(), combine_stack_adjustments_for_block(), compute_stack_clash_protection_loop_data(), const_double_operand(), const_int_operand(), contains_muldiv(), convert_debug_memory_address(), convert_memory_address_addr_space_1(), cse_insn(), cselib_expand_value_rtx_1(), cselib_hash_plus_const_int(), cselib_hash_rtx(), cselib_invalidate_mem(), cselib_record_sp_cfa_base_equiv(), cselib_reset_table(), cselib_sp_derived_value_p(), cselib_subst_to_values(), curr_insn_transform(), decl_piece_bitsize(), decompose(), default_elf_select_rtx_section(), delete_address_reloads(), determine_block_size(), determine_max_iter(), do_SUBST(), doloop_condition_get(), dw2_assemble_integer(), dwarf2out_frame_debug_expr(), eliminate_constant_term(), eliminate_regs_1(), eliminate_regs_in_insn(), elimination_costs_in_insn(), elimination_effects(), emit_block_cmp_hints(), emit_block_cmp_via_loop(), emit_block_move_hints(), emit_block_move_via_oriented_loop(), emit_block_move_via_pattern(), emit_block_move_via_sized_loop(), emit_push_insn(), expand_binop(), expand_builtin_apply(), expand_builtin_crc_table_based(), expand_builtin_memcmp(), expand_builtin_memory_copy_args(), expand_builtin_stpcpy_1(), expand_compound_operation(), expand_crc_table_based(), expand_debug_expr(), expand_debug_parm_decl(), expand_DIVMOD(), expand_divmod(), expand_doubleword_shift(), expand_expr_real_2(), expand_field_assignment(), expand_mult(), expand_reversed_crc_table_based(), expand_rotate_as_vec_perm(), expand_shift_1(), expand_widening_mult(), ext_dce_process_sets(), extract_left_shift(), fill_slots_from_thread(), find_address(), find_base_term(), find_base_value(), find_decomposable_shift_zext(), find_equiv_reg(), find_inc_amount(), find_mem(), find_reloads(), find_reloads_address(), find_split_point(), fixed_base_plus_p(), fold_rtx(), force_int_to_mode(), force_operand(), force_reg(), force_to_mode(), form_sum(), gen_lowpart_common(), gen_lowpart_or_truncate(), general_operand(), get_call_args(), get_dynamic_stack_size(), get_index_scale(), get_integer_term(), get_related_value(), get_stored_val(), immediate_operand(), implies_p(), inc_for_reload(), initial_return_save(), invariant_or_equiv_p(), ira_setup_alts(), is_based_loc(), iv_number_of_iterations(), loc_descriptor(), loc_list_from_tree_1(), lra_eliminate_regs_1(), make_compound_operation_int(), make_extraction(), make_field_assignment(), mark_not_eliminable(), maybe_emit_call_builtin___clear_cache(), maybe_swap_commutative_operands(), mem_loc_descriptor(), memory_address_addr_space(), memory_load_overlap(), memrefs_conflict_p(), mode_signbit_p(), move2add_note_store(), noce_get_alt_condition(), noce_process_if_block(), noce_try_bitop(), noce_try_cmove(), noce_try_inverse_constants(), noce_try_store_flag(), noce_try_store_flag_constants(), nonzero_address_p(), nonzero_bits1(), num_sign_bit_copies1(), operand_for_swap_move_operator(), output_addr_const(), output_asm_insn(), parse_add_or_inc(), poly_int_rtx_p(), prepare_cmp_insn(), print_exp(), rtx_writer::print_rtx(), probe_stack_range(), process_alt_operands(), recog_for_combine(), record_reg_classes(), record_set(), record_store(), reg_scan_mark_refs(), reload_combine_note_use(), reload_combine_recognize_pattern(), reload_cse_move2add(), reload_cse_move2add_invalidate(), reload_cse_regs_1(), reload_cse_simplify(), reload_cse_simplify_operands(), reverse_op(), reverse_rotate_by_imm_p(), reversed_comparison_code_parts(), round_push(), rtvec_series_p(), rtx_equal_for_cselib_1(), rtx_to_double_int(), scan_insn(), scompare_loc_descriptor_narrow(), set_storage_via_libcall(), set_storage_via_setmem(), should_hoist_expr_to_dom(), sign_extend_short_imm(), simplify_and_const_int_1(), simplify_context::simplify_binary_operation_1(), simplify_comparison(), simplify_context::simplify_cond_clz_ctz(), simplify_const_relational_operation(), simplify_if_then_else(), simplify_immed_subreg(), simplify_logical(), simplify_context::simplify_plus_minus(), simplify_context::simplify_relational_operation_1(), simplify_rotate_op(), simplify_shift_const_1(), simplify_context::simplify_subreg(), simplify_context::simplify_ternary_operation(), simplify_context::simplify_truncation(), simplify_context::simplify_unary_operation_1(), simplify_while_replacing(), sp_based_mem_offset(), split_const(), split_double(), stack_adjust_offset_pre_post(), stack_adjust_offset_pre_post_cb(), stack_memref_p(), store_bit_field_using_insv(), store_expr(), store_fixed_bit_field_1(), store_one_arg(), store_split_bit_field(), strip_address_mutations(), subst_reg_equivs(), try_apply_stack_adjustment(), try_combine(), ucompare_loc_descriptor(), use_anchored_address(), validate_pattern(), and values_equal_p().
#define CONST_POLY_INT_COEFFS | ( | RTX | ) |
For a CONST_POLY_INT, CONST_POLY_INT_COEFFS gives access to the individual coefficients, in the form of a trailing_wide_ints structure.
Referenced by inchash::add_rtx(), const_poly_int_value(), cselib_hash_rtx(), const_poly_int_hasher::equal(), const_poly_int_hasher::hash(), hash_rtx(), immed_wide_int_const(), poly_int_rtx_p(), rtx_writer::print_rtx(), print_value(), rtx_size(), and rtx_to_poly_int64().
#define CONST_POLY_INT_P | ( | X | ) |
Predicate yielding nonzero iff X is an rtx for a polynomial constant integer.
Referenced by const_ok_for_output_1(), convert_modes(), gen_lowpart_common(), make_tree(), plus_constant(), poly_int_rtx_p(), poly_int_rtx_p(), rtx_size(), rtx_to_poly_int64(), simplify_const_unary_operation(), simplify_context::simplify_subreg(), wi::to_poly_wide(), and valid_for_const_vector_p().
#define CONST_SCALAR_INT_P | ( | X | ) |
Predicate yielding true iff X is an rtx for a integer const.
Referenced by canon_condition(), convert_modes(), dw2_assemble_integer(), emit_store_flag_1(), expand_addsub_overflow(), expand_debug_locations(), expand_single_bit_test(), gen_lowpart_common(), gen_lowpart_for_combine(), get_addr(), rtx_vector_builder::integral_p(), loc_descriptor(), lra_substitute_pseudo(), make_extraction(), native_encode_rtx(), poly_int_rtx_p(), prepare_cmp_insn(), record_address_regs(), reload_cse_simplify_set(), replace_rtx(), simplify_context::simplify_binary_operation_1(), simplify_context::simplify_byte_swapping_operation(), simplify_const_binary_operation(), simplify_const_relational_operation(), simplify_const_unary_operation(), simplify_context::simplify_gen_subreg(), simplify_immed_subreg(), simplify_context::simplify_relational_operation_1(), simplify_context::simplify_subreg(), simplify_context::simplify_unary_operation_1(), simplify_while_replacing(), subst(), try_combine(), valid_base_or_index_term_p(), and valid_for_const_vector_p().
#define CONST_VECTOR_DUPLICATE_P | ( | RTX | ) |
Referenced by const_vec_duplicate_p(), const_vec_series_p(), may_trap_p_1(), rtx_writer::print_rtx_operand_codes_E_and_V(), simplify_const_binary_operation(), and simplify_const_unary_operation().
#define CONST_VECTOR_ELT | ( | RTX, | |
N ) |
For a CONST_VECTOR, return element #n.
Referenced by add_const_value_attribute(), const_vec_series_p_1(), find_sets_in_insn(), loc_descriptor(), make_tree(), may_trap_p_1(), native_encode_rtx(), output_constant_pool_2(), simplify_context::simplify_binary_operation_1(), simplify_const_binary_operation(), simplify_const_unary_operation(), simplify_context::simplify_ternary_operation(), and unwrap_const_vec_duplicate().
#define CONST_VECTOR_ENCODED_ELT | ( | RTX, | |
N ) |
Referenced by const_vec_duplicate_p(), const_vec_series_p_1(), const_vector_elt(), const_vector_int_elt(), cselib_hash_rtx(), hash_rtx(), and may_trap_p_1().
#define CONST_VECTOR_NELTS_PER_PATTERN | ( | RTX | ) |
Referenced by rtx_vector_builder::build(), rtx_vector_builder::build(), const_vector_encoded_nelts(), make_tree(), rtx_vector_builder::nelts_per_pattern_of(), same_vector_encodings_p(), simplify_const_vector_byte_offset(), and simplify_const_vector_subreg().
#define CONST_VECTOR_NPATTERNS | ( | RTX | ) |
See rtl.texi for a description of these macros.
Referenced by rtx_vector_builder::build(), rtx_vector_builder::build(), const_vec_duplicate_p(), const_vec_series_p(), const_vector_elt(), const_vector_encoded_nelts(), const_vector_int_elt(), make_tree(), rtx_vector_builder::npatterns_of(), rtx_writer::print_rtx_operand_codes_E_and_V(), same_vector_encodings_p(), simplify_const_binary_operation(), simplify_const_unary_operation(), simplify_const_vector_byte_offset(), and simplify_const_vector_subreg().
#define CONST_VECTOR_NUNITS | ( | RTX | ) |
For a CONST_VECTOR, return the number of elements in a vector.
Referenced by add_const_value_attribute(), const_vec_series_p_1(), loc_descriptor(), rtx_vector_builder::nelts_of(), same_vector_encodings_p(), simplify_const_binary_operation(), simplify_const_unary_operation(), and simplify_context::simplify_ternary_operation().
#define CONST_VECTOR_P | ( | X | ) |
Predicate yielding nonzero iff X is an rtx for a constant vector.
Referenced by simplify_const_relational_operation().
#define CONST_VECTOR_STEPPED_P | ( | RTX | ) |
Referenced by const_vec_series_p_1(), const_vector_elt(), const_vector_int_elt(), rtx_writer::print_rtx_operand_codes_E_and_V(), simplify_const_binary_operation(), and simplify_const_vector_subreg().
#define const_wide_int_alloc | ( | NWORDS | ) |
Referenced by immed_wide_int_const_1(), and rtx_reader::read_rtx_code().
#define CONST_WIDE_INT_ELT | ( | RTX, | |
N ) |
#define CONST_WIDE_INT_NUNITS | ( | RTX | ) |
Referenced by inchash::add_rtx(), const_rtx_hash_1(), cselib_hash_rtx(), wi::int_traits< rtx_mode_t >::decompose(), hash_rtx(), loc_cmp(), mode_signbit_p(), output_addr_const(), print_value(), rtx_size(), and split_double().
#define CONST_WIDE_INT_P | ( | X | ) |
Predicate yielding nonzero iff X is an rtx for a constant integer.
Referenced by expand_mult(), loc_cmp(), mode_signbit_p(), rtx_reader::read_rtx_code(), rtx_size(), and validate_pattern().
#define CONST_WIDE_INT_VEC | ( | RTX | ) |
For a CONST_WIDE_INT, CONST_WIDE_INT_NUNITS is the number of elements actually needed to represent the constant. CONST_WIDE_INT_ELT gets one of the elements. 0 is the least significant HOST_WIDE_INT.
#define CONSTANT_P | ( | X | ) |
1 if X is a constant value that is an integer.
Referenced by add_const_value_attribute(), add_location_or_const_value_attribute(), add_uses(), adjust_insn(), insn_propagation::apply_to_rvalue_1(), avoid_constant_pool_reference(), avoid_expensive_constant(), break_out_memory_refs(), can_combine_p(), can_widen_mult_without_libcall(), canonicalize_condition(), check_cond_move_block(), choose_reload_regs(), combine_simplify_rtx(), cond_move_process_if_block(), conforming_compare(), const_or_frame_p(), constrain_operands(), convert_move(), cprop_constant_p(), cse_insn(), cse_process_note_1(), cselib_record_sets(), curr_insn_transform(), pieces_addr::decide_autoinc(), decompose(), decompose_automod_address(), decompose_normal_address(), distribute_notes(), do_compare_rtx_and_jump(), eliminate_regs_1(), emit_block_cmp_via_loop(), emit_cmp_and_jump_insns(), emit_conditional_move(), emit_group_load_1(), emit_input_reload_insns(), emit_library_call_value_1(), emit_move_complex(), emit_move_insn(), emit_move_insn_1(), emit_move_multi_word(), emit_push_insn(), emit_store_flag(), equiv_constant(), expand_builtin_frame_address(), expand_doubleword_shift(), expand_expr_real_1(), expand_expr_real_2(), expand_gimple_stmt_1(), expand_mult(), expand_subword_shift(), ext_dce_process_uses(), extract_low_bits(), find_base_term(), find_base_value(), find_constant_src(), find_constant_term_loc(), find_equiv_reg(), find_reloads(), find_reloads_address(), find_reloads_address_part(), find_reloads_toplev(), find_shift_sequence(), find_split_point(), fold_rtx(), force_operand(), force_reg(), form_sum(), form_sum(), function_invariant_p(), gen_reload(), gen_reload_chain_without_interm_reg_p(), general_constant_p(), general_operand(), get_addr(), get_biv_step_1(), get_equiv_with_elimination(), get_index_term(), get_stored_val(), if_then_else_cond(), immediate_operand(), immune_p(), init_eliminable_invariants(), insert_with_costs(), instantiate_decl_rtl(), internal_arg_pointer_based_exp(), invariant_or_equiv_p(), iv_analyze_biv(), iv_analyze_expr(), loc_list_from_tree_1(), lra_eliminate_regs_1(), lra_emit_add(), lra_substitute_pseudo(), make_safe_from(), match_asm_constraints_1(), may_trap_p_1(), mem_loc_descriptor(), memory_address_addr_space(), memrefs_conflict_p(), move_block_to_reg(), move_insn_for_shrink_wrap(), move_plus_up(), noce_convert_multiple_sets_1(), noce_emit_move_insn(), noce_try_cmove(), nonimmediate_operand(), nonmemory_operand(), nonoverlapping_memrefs_p(), nonzero_address_p(), plus_constant(), plus_minus_operand_p(), precompute_register_parameters(), prepare_call_arguments(), prepare_cmp_insn(), preserve_temp_slots(), process_address_1(), process_alt_operands(), push_block(), push_reload(), recog_for_combine(), record_address_regs(), record_jump_cond(), record_reg_classes(), record_store(), reg_overlap_mentioned_for_reload_p(), reg_overlap_mentioned_p(), reload(), reload_combine_recognize_const_pattern(), reload_cse_simplify_operands(), reload_cse_simplify_set(), reload_inner_reg_of_subreg(), reverse_op(), rtl_for_decl_location(), scan_one_insn(), setup_reg_equiv(), simplify_expand_binop(), simplify_if_then_else(), simplify_operand_subreg(), simplify_context::simplify_plus_minus(), simplify_context::simplify_relational_operation_1(), simplify_set(), simplify_context::simplify_unary_operation_1(), simplify_using_condition(), simplify_using_initial_values(), simplify_while_replacing(), single_reg_class(), split_insn(), store_bit_field_using_insv(), store_expr(), store_split_bit_field(), strip_address_mutations(), try_combine(), try_eliminate_compare(), try_replace_in_use(), try_replace_reg(), use_narrower_mode(), and use_narrower_mode_test().
#define CONSTANT_POOL_ADDRESS_P | ( | RTX | ) |
1 if RTX is a symbol_ref that addresses this function's rtl constants pool.
Referenced by asan_protect_global(), avoid_constant_pool_reference(), computed_jump_p_1(), const_ok_for_output_1(), contains_constant_pool_address_p(), find_reloads_address(), force_const_mem(), get_some_local_dynamic_name(), mark_constants_in_pattern(), mark_jump_label_1(), noce_try_abs(), offset_within_block_p(), output_object_block(), place_block_symbol(), plus_constant(), prune_expressions(), replace_label(), rtx_addr_can_trap_p_1(), rtx_referenced_p(), true_dependence_1(), and write_dependence_p().
#define CONSTM1_RTX | ( | MODE | ) |
Referenced by const_vector_mask_from_tree(), expand_mult(), expand_unop(), rtx_vector_builder::find_cached_value(), get_supported_else_vals(), match_plus_neg_pattern(), simplify_context::simplify_binary_operation_1(), simplify_context::simplify_plus_minus(), and simplify_context::simplify_unary_operation_1().
#define constm1_rtx (const_int_rtx[MAX_SAVED_CONST_INT-1]) |
Referenced by bb_estimate_probability_locally(), combine_simplify_rtx(), doloop_modify(), doloop_simplify_count(), emit_block_cmp_via_loop(), emit_conditional_add(), emit_conditional_move(), emit_store_flag_1(), expand_arith_set_overflow(), expand_builtin_eh_return_data_regno(), expand_builtin_object_size(), expand_clrsb_using_clz(), expand_divmod(), expand_dw2_landing_pad_for_region(), expand_expr_real_2(), expand_mul_overflow(), expand_POPCOUNT(), rtx_vector_builder::find_cached_value(), floor_sdiv_adjust(), if_then_else_cond(), implies_p(), init_emit_once(), iv_number_of_iterations(), maybe_optimize_fetch_op(), noce_try_abs(), noce_try_addcc(), noce_try_sign_mask(), num_sign_bit_copies1(), prepare_float_lib_cmp(), round_sdiv_adjust(), simplify_context::simplify_binary_operation_1(), simplify_comparison(), simplify_if_then_else(), simplify_context::simplify_relational_operation_1(), simplify_shift_const_1(), simplify_context::simplify_truncation(), simplify_context::simplify_unary_operation_1(), and split_double().
#define convert_memory_address | ( | to_mode, | |
x ) |
Referenced by addr_for_mem_ref(), asan_emit_allocas_unpoison(), asan_emit_stack_protection(), assign_parms(), default_emit_call_builtin___clear_cache(), emit_block_op_via_libcall(), expand_atomic_compare_and_swap(), expand_atomic_fetch_op(), expand_builtin_alloca(), expand_builtin_apply(), expand_builtin_atomic_compare_exchange(), expand_builtin_eh_return(), expand_builtin_extract_return_addr(), expand_builtin_frob_return_addr(), expand_builtin_longjmp(), expand_builtin_memory_copy_args(), expand_builtin_memset_args(), expand_builtin_nonlocal_goto(), expand_builtin_return(), expand_builtin_setjmp_setup(), expand_builtin_strncpy(), expand_builtin_update_setjmp_buf(), expand_builtin_va_copy(), expand_call(), expand_function_end(), expand_stack_restore(), find_base_term(), find_base_value(), get_builtin_sync_mem(), hwasan_emit_prologue(), hwasan_emit_untag_frame(), maybe_emit_sync_lock_test_and_set(), maybe_legitimize_operand(), prepare_call_address(), sjlj_emit_dispatch_table(), and sjlj_emit_function_enter().
#define COSTS_N_INSNS | ( | N | ) |
in rtlanal.cc
Return the right cost to give to an operation to make the cost of the corresponding register-to-register instruction N times that of a fast register-to-register instruction.
Referenced by copy_cost(), costs_add_n_insns(), default_avoid_store_forwarding_p(), default_max_noce_ifcvt_seq_cost(), determine_iv_cost(), doloop_optimize(), emit_conditional_move(), expand_ccmp_expr_1(), expand_sdiv_pow2(), expand_smod_pow2(), find_if_case_1(), find_if_case_2(), find_shift_sequence(), lshift_cheap_p(), noce_find_if_block(), noce_process_if_block(), noce_try_sign_mask(), parm_decl_cost(), pattern_cost(), precompute_register_parameters(), prepare_cmp_insn(), rtx_cost(), and want_to_gcse_p().
#define CROSSING_JUMP_P | ( | RTX | ) |
1 if JUMP RTX is a crossing jump.
Referenced by cfg_layout_redirect_edge_and_branch(), emit_copy_of_insn_after(), fill_slots_from_thread(), find_if_case_1(), find_if_case_2(), fixup_partition_crossing(), follow_jumps(), maybe_duplicate_computed_goto(), patch_jump_insn(), peep2_attempt(), redirect_jump_2(), relax_delay_slots(), rotate_loop(), rtl_verify_edges(), tidy_fallthru_edges(), try_optimize_cfg(), try_split(), and update_crossing_jump_flags().
#define CSELIB_VAL_PTR | ( | RTX | ) |
In a VALUE, the value cselib has assigned to RTX. This is a "struct cselib_val", see cselib.h.
Referenced by add_mem_for_addr(), autoinc_split(), canon_value_cmp(), canonical_cselib_val(), cselib_expand_value_rtx_1(), cselib_hash_plus_const_int(), cselib_hash_rtx(), cselib_invalidate_mem(), cselib_lookup_1(), cselib_reset_table(), cselib_sp_derived_value_p(), cselib_subst_to_values(), discard_useless_values(), dv_uid(), expand_loc(), find_base_term(), get_addr(), invariant_or_equiv_p(), memrefs_conflict_p(), new_cselib_val(), new_elt_loc_list(), prepare_call_arguments(), rtx_writer::print_rtx_operand_code_0(), references_value_p(), refs_newer_value_p(), rtx_equal_for_cselib_1(), val_bind(), val_store(), vt_add_function_parameter(), and vt_expand_var_loc_chain().
#define CWI_ELT | ( | RTX, | |
I ) |
Referenced by cwi_output_hex(), and rtx_reader::read_rtx_code().
#define CWI_GET_NUM_ELEM | ( | RTX | ) |
Number of elements of the HWIVEC if RTX is a CONST_WIDE_INT.
Referenced by cwi_output_hex().
#define CWI_PUT_NUM_ELEM | ( | RTX, | |
NUM ) |
Referenced by immed_wide_int_const_1().
#define DEBUG_BIND_INSN_P | ( | INSN | ) |
Evaluate to TRUE if INSN is a debug insn that denotes a variable location/value tracking annotation.
Referenced by apply_opt_in_copies(), build_def_use(), combine_and_move_insns(), copyprop_hardreg_forward_1(), delete_trivially_dead_insns(), duplicate_insn_chain(), eliminate_regs_in_insn(), emit_input_reload_insns(), expand_debug_locations(), fixup_debug_insns(), insn_live_p(), instantiate_virtual_regs(), lra_set_insn_recog_data(), merge_in_block(), move_insn_for_shrink_wrap(), propagate_for_debug(), and reload().
#define DEBUG_EXPR_TREE_DECL | ( | RTX | ) |
DEBUG_EXPR_DECL corresponding to a DEBUG_EXPR RTX.
Referenced by avoid_complex_debug_insns(), cselib_hash_rtx(), dead_debug_insert_temp(), dead_debug_promote_uses(), delete_trivially_dead_insns(), dv_from_rtx(), expand_debug_expr(), loc_cmp(), make_debug_expr_from_rtl(), rtx_writer::print_rtx_operand_code_0(), print_value(), and propagate_for_debug_subst().
#define DEBUG_IMPLICIT_PTR_DECL | ( | RTX | ) |
VAR_DECL/PARM_DECL DEBUG_IMPLICIT_PTR takes address of.
Referenced by cselib_hash_rtx(), implicit_ptr_descriptor(), rtx_writer::print_rtx_operand(), rtx_equal_for_cselib_1(), and rtx_equal_p().
#define DEBUG_INSN_P | ( | X | ) |
Predicate yielding nonzero iff X is a debug note/insn.
Referenced by add_next_usage_insn(), add_removable_extension(), assign_spill_hard_regs(), base_reg_class_for_rename(), block_jumps_and_fallthru(), bypass_conditional_jumps(), can_move_invariant_reg(), canonicalize_insn(), check_new_reg_p(), combine_and_move_insns(), combine_reaching_defs(), cond_exec_process_if_block(), cond_exec_process_insns(), cprop_insn(), cselib_invalidate_mem(), cselib_invalidate_regno_val(), dce_process_block(), dead_debug_insert_temp(), dead_debug_promote_uses(), dead_or_predicable(), decompose_multiword_subregs(), def_dominates_uses(), delete_insn_and_edges(), delete_trivially_dead_insns(), delete_vta_debug_insns(), df_insn_change_bb(), df_insn_rescan(), df_insn_rescan_debug_internal(), df_install_ref_incremental(), df_note_bb_compute(), df_ref_create_structure(), df_set_note(), df_simulate_uses(), df_uses_record(), discard_useless_locs(), distribute_links(), duplicate_insn_chain(), eliminate_regs_1(), eliminate_regs_in_insn(), eliminate_regs_in_insn(), elimination_costs_in_insn(), emit_input_reload_insns(), emit_pattern_after(), emit_pattern_before(), cselib_hasher::equal(), equivalent_reg_at_start(), expand_gimple_basic_block(), final_scan_insn_1(), find_bb_boundaries(), find_equiv_reg(), find_moveable_pseudos(), find_rename_reg(), first_active_insn(), inherit_reload_reg(), insn_live_p(), invalidate_insn_data_regno_info(), last_active_insn(), local_cprop_pass(), lra_constraints(), lra_eliminate_regs_1(), lra_final_code_change(), lra_set_insn_recog_data(), lra_substitute_pseudo_within_insn(), lra_update_insn_recog_data(), mark_reg_dependencies(), mark_target_live_regs(), new_cselib_val(), new_elt_loc_list(), next_nondebug_insn(), next_nonnote_nondebug_insn(), next_nonnote_nondebug_insn_bb(), outgoing_edges_match(), prev_nondebug_insn(), prev_nonnote_nondebug_insn(), prev_nonnote_nondebug_insn_bb(), promote_debug_loc(), purge_dead_edges(), record_stack_refs(), referenced_in_one_insn_in_loop_p(), regrename_do_replace(), regrename_find_superclass(), regstat_init_n_sets_and_refs(), replace_oldest_value_addr(), replace_oldest_value_mem(), replace_oldest_value_reg(), reset_debug_uses_in_loop(), reset_hardreg_debug_uses(), reset_unmarked_insns_debug_uses(), rtl_block_ends_with_call_p(), rtl_merge_blocks(), rtl_split_block(), save_call_clobbered_regs(), scan_insn(), scan_rtx_address(), scan_rtx_reg(), scan_trace(), set_new_first_and_last_insn(), setup_hard_regno_nrefs(), shorten_branches(), spill_pseudos(), split_live_ranges_for_shrink_wrap(), split_reg(), is_a_helper< const T * >::test(), trivially_empty_bb_p(), try_back_substitute_reg(), try_combine(), try_crossjump_to_edge(), try_forward_edges(), verify_changes(), and word_dce_process_block().
#define DEBUG_MARKER_INSN_P | ( | INSN | ) |
Evaluate to TRUE if INSN is a debug insn that denotes a program source location marker.
Referenced by delete_trivially_dead_insns(), delete_vta_debug_insn(), insn_live_p(), instantiate_virtual_regs(), lra_set_insn_recog_data(), print_insn(), reemit_marker_as_note(), and vt_initialize().
#define DEBUG_PARAMETER_REF_DECL | ( | RTX | ) |
PARM_DECL DEBUG_PARAMETER_REF references.
Referenced by cselib_hash_rtx(), parameter_ref_descriptor(), rtx_writer::print_rtx_operand(), rtx_equal_for_cselib_1(), and rtx_equal_p().
#define ENTRY_VALUE_EXP | ( | RTX | ) |
In an ENTRY_VALUE this is the DECL_INCOMING_RTL of the argument in question.
Referenced by cselib_hash_rtx(), expand_debug_parm_decl(), loc_cmp(), mem_loc_descriptor(), rtx_writer::print_rtx_operand_code_0(), record_entry_value(), rtx_equal_for_cselib_1(), rtx_equal_for_memref_p(), and rtx_equal_p().
#define EXTRACT_ARGS_IN_RANGE | ( | SIZE, | |
POS, | |||
RANGE ) |
A convenience macro to validate the arguments of a zero_extract expression. It determines whether SIZE lies inclusively within [1, RANGE], POS lies inclusively within between [0, RANGE - 1] and the sum lies inclusively within [1, RANGE]. RANGE must be >= 1, but SIZE and POS may be negative.
#define FAKE_CALL_P | ( | RTX | ) |
1 if RTX is a call_insn for a fake call. CALL_INSN use "used" flag to indicate it's a fake call.
Referenced by df_get_call_refs(), ext_dce_process_bb(), leaf_function_p(), and requires_stack_frame_p().
#define fatal_insn | ( | msgid, | |
insn ) |
Referenced by curr_insn_transform(), do_output_reload(), failed_reload(), final_scan_insn_1(), find_reloads(), gen_reload(), lra_split_hard_reg_for(), process_alt_operands(), rtl_verify_bb_insns(), rtl_verify_bb_layout(), shorten_branches(), and spill_failure().
#define fatal_insn_not_found | ( | insn | ) |
Referenced by check_rtl(), extract_constrain_insn(), extract_constrain_insn_cached(), extract_insn(), final_scan_insn_1(), and instantiate_virtual_regs_in_insn().
#define FIND_REG_INC_NOTE | ( | INSN, | |
REG ) |
Define a macro to look for REG_INC notes, but save time on machines where they never exist.
Referenced by can_combine_p(), canonicalize_condition(), insn_invalid_p(), reg_set_p(), try_combine(), and try_split().
#define FIRST_VIRTUAL_REGISTER (FIRST_PSEUDO_REGISTER) |
Virtual registers are used during RTL generation to refer to locations into the stack frame when the actual location isn't known until RTL generation is complete. The routine instantiate_virtual_regs replaces these with the proper value, which is normally {frame,arg,stack}_pointer_rtx plus a constant.
Referenced by rtx_writer::print_rtx_operand_code_r().
#define frame_pointer_rtx (global_rtl[GR_FRAME_POINTER]) |
Referenced by assign_stack_local_1(), based_loc_descr(), compute_frame_pointer_to_fb_displacement(), const_or_frame_p(), expand_builtin_longjmp(), expand_builtin_nonlocal_goto(), expand_builtin_return_addr(), expand_expr_real_2(), find_equiv_reg(), find_reloads_address(), fixed_base_plus_p(), function_invariant_p(), gen_rtx_REG(), get_group_info(), get_spill_slot_decl(), hash_rtx(), immune_p(), init_eliminable_invariants(), init_emit(), init_emit_regs(), init_expr_target(), instantiate_new_reg(), lookup_global_register(), may_assign_reg_p(), mem_loc_descriptor(), move_insn_for_shrink_wrap(), nonzero_address_p(), nonzero_bits1(), parse_add_or_inc(), reg_loc_descriptor(), rtx_addr_can_trap_p_1(), rtx_moveable_p(), rtx_unstable_p(), rtx_varies_p(), setup_reg_equiv(), simplify_context::simplify_plus_minus(), subst_reg_equivs(), vt_init_cfa_base(), and vt_initialize().
#define GEN_INT | ( | N | ) |
Referenced by add_mask_else_and_len_args(), anti_adjust_stack_and_probe(), anti_adjust_stack_and_probe_stack_clash(), asan_clear_shadow(), asan_emit_stack_protection(), assemble_real(), assign_parm_setup_block(), assign_parm_setup_stack(), avoid_expensive_constant(), bswap_loc_descriptor(), canonicalize_reload_addr(), change_zero_ext(), clz_loc_descriptor(), compute_stack_clash_protection_loop_data(), cse_insn(), decl_piece_node(), do_compare_rtx_and_jump(), do_store_flag(), doloop_condition_get(), dw2_asm_output_data(), dw2_asm_output_data_sleb128(), dw2_asm_output_data_uleb128(), dw2_fix_up_crossing_landing_pad(), tree_switch_conversion::bit_test_cluster::emit(), emit_block_cmp_via_loop(), emit_block_move_via_loop(), emit_note_insn_var_location(), emit_push_insn(), emit_store_flag(), emit_store_flag_force(), emit_store_flag_int(), expand_builtin_classify_type(), expand_builtin_dwarf_sp_column(), expand_builtin_eh_return_data_regno(), expand_builtin_goacc_parlevel_id_size(), expand_builtin_issignaling(), expand_builtin_prefetch(), expand_call(), expand_clrsb_using_clz(), expand_debug_expr(), expand_doubleword_divmod(), expand_doubleword_mod(), expand_expr_real_2(), expand_ffs(), expand_field_assignment(), expand_fn_using_insn(), expand_function_end(), expand_GOACC_DIM_SIZE(), expand_mem_thread_fence(), expand_vec_perm_var(), expand_widen_pattern_expr(), find_address(), find_mem(), fold_rtx(), force_to_mode(), gen_int_mode(), if_then_else_cond(), immed_double_const(), index_part_to_reg(), init_emit_once(), init_expmed(), instantiate_new_reg(), internal_check_ptrs_fn_supported_p(), internal_gather_scatter_fn_supported_p(), internal_len_load_store_bias(), invert_br_probabilities(), make_extraction(), make_reg_eh_region_note(), make_reg_eh_region_note_nothrow_nononlocal(), maybe_expand_shift(), maybe_swap_commutative_operands(), move_block_from_reg(), move_block_to_reg(), noce_get_alt_condition(), noce_try_store_flag_constants(), optimize_range_tests_to_bit_test(), output_constructor(), output_constructor_bitfield(), output_constructor_regular_field(), parse_add_or_inc(), predict_insn(), prefer_and_bit_test(), prepare_call_address(), prepare_call_arguments(), prepare_cmp_insn(), print_exp(), reload_combine_recognize_pattern(), rotate_loc_descriptor(), round_push(), rtl_for_decl_init(), sign_extend_short_imm(), simplify_context::simplify_binary_operation_1(), simplify_compare_const(), simplify_comparison(), simplify_context::simplify_gen_vec_select(), simplify_shift_const_1(), simplify_context::simplify_truncation(), simplify_while_replacing(), sjlj_assign_call_site_values(), sjlj_fix_up_crossing_landing_pad(), split_double(), store_constructor(), store_expr(), store_split_bit_field(), try_apply_stack_adjustment(), try_const_anchors(), and try_store_by_multiple_pieces().
#define gen_lowpart rtl_hooks.gen_lowpart |
Keep this for the nonce.
Referenced by combine_simplify_rtx(), convert_extracted_bit_field(), convert_float_to_wider_int(), convert_mode_scalar(), convert_modes(), convert_move(), convert_wider_int_to_float(), copy_blkmode_to_reg(), cse_insn(), cse_process_note_1(), cselib_record_sets(), default_memtag_extract_tag(), eliminate_regs_in_insn(), eliminate_regs_in_insn(), emit_group_load_1(), emit_group_store(), equiv_constant(), expand_absneg_bit(), expand_binop(), expand_builtin_issignaling(), expand_builtin_signbit(), expand_builtin_stpcpy_1(), expand_compound_operation(), expand_cond_expr_using_cmove(), expand_copysign_absneg(), expand_copysign_bit(), expand_divmod(), expand_doubleword_clz_ctz_ffs(), expand_expr_real_1(), expand_field_assignment(), expand_movstr(), expand_mult_const(), expand_mult_highpart(), expand_parity(), expand_unop(), expand_vec_perm_const(), expand_vec_perm_var(), extract_bit_field_1(), extract_low_bits(), find_split_point(), flip_storage_order(), force_to_mode(), gen_lowpart_or_truncate(), get_last_value(), get_stored_val(), insert_with_costs(), make_compound_operation_int(), make_extraction(), plus_constant(), record_dead_and_set_regs_1(), rtx_equal_for_field_assignment_p(), simplify_and_const_int(), simplify_and_const_int_1(), simplify_comparison(), simplify_if_then_else(), simplify_set(), simplify_shift_const(), simplify_shift_const_1(), store_bit_field_1(), store_bit_field_using_insv(), store_integral_bit_field(), try_combine(), widen_bswap(), and widen_operand().
#define gen_rtx_ASM_INPUT | ( | MODE, | |
ARG0 ) |
Include the RTL generation functions.
Referenced by gen_blockage().
#define gen_rtx_ASM_INPUT_loc | ( | MODE, | |
ARG0, | |||
LOC ) |
Referenced by expand_asm_loc(), and expand_asm_stmt().
#define GEN_RTX_DEBUG_MARKER_BEGIN_STMT_PAT | ( | ) |
Create patterns for debug markers. These and the above abstract the representation, so that it's easier to get rid of the abuse of the mode to hold the marker kind. Other marker types are envisioned, so a single bit flag won't do; maybe separate RTL codes wouldn't be a problem.
Referenced by expand_gimple_basic_block().
#define GEN_RTX_DEBUG_MARKER_INLINE_ENTRY_PAT | ( | ) |
Referenced by expand_gimple_basic_block().
#define gen_rtx_UNKNOWN_VAR_LOC | ( | ) |
Expand to the RTL that denotes an unknown variable location in a DEBUG_INSN.
Referenced by add_uses(), can_move_invariant_reg(), dead_debug_promote_uses(), dead_debug_reset_uses(), delete_trivially_dead_insns(), df_note_bb_compute(), expand_debug_locations(), propagate_for_debug(), propagate_for_debug_subst(), regrename_do_replace(), reload(), reset_debug_use(), reset_debug_uses_in_loop(), reset_unmarked_insns_debug_uses(), and spill_pseudos().
#define GET_CODE | ( | RTX | ) |
Define macros to access the `code' field of the rtx.
Referenced by active_insn_p(), add_attributes(), add_auto_inc_notes(), add_const_value_attribute(), add_constraint(), add_constraints(), add_equal_note(), add_label_notes(), add_location_or_const_value_attribute(), add_mode_tests(), add_next_usage_insn(), add_regs_to_insn_regno_info(), add_removable_extension(), inchash::add_rtx(), add_shallow_copy_of_reg_note(), add_stored_regs(), add_stores(), generic_subrtx_iterator< T >::add_subrtxes_to_queue(), add_test(), add_uses(), add_var_loc_to_decl(), addr_for_mem_ref(), addr_side_effect_eval(), adjust_address_1(), adjust_for_new_dest(), adjust_insn(), adjust_mems(), alloc_INSN_LIST(), alter_attrs_for_insn(), alter_attrs_for_subst_insn(), alter_constraints(), alter_predicate_for_insn(), alter_subregs(), analyze_insn_to_expand_var(), anti_adjust_stack_and_probe(), any_condjump_p(), any_post_modify_p(), any_pre_modify_p(), any_uncondjump_p(), fixup_expr::apply(), apply_distributive_law(), apply_int_iterator(), apply_opt_in_copies(), insn_propagation::apply_to_lvalue_1(), insn_propagation::apply_to_pattern_1(), insn_propagation::apply_to_rvalue_1(), arithmetic_flags_clobber_p(), asan_protect_global(), asm_insn_count(), asm_labels_ok(), asm_noperands(), asm_operand_ok(), assemble_integer(), assemble_variable(), assign_call_lhs(), assign_parm_adjust_entry_rtl(), assign_parm_is_stack_parm(), assign_parm_remove_parallels(), assign_parm_setup_block(), assign_parm_setup_reg(), attr_checksum(), attr_checksum_ordered(), attr_rtx_1(), attr_rtx_cost(), attr_value_alignment(), auto_inc_p(), autoinc_split(), avoid_complex_debug_insns(), avoid_constant_pool_reference(), bad_for_rematerialization_p(), base_alias_check(), bb_estimate_probability_locally(), bb_is_just_return(), block_has_only_trap(), block_jumps_and_fallthru(), break_out_memory_refs(), build_def_use(), build_insn_chain(), bypass_block(), bypass_conditional_jumps(), calculate_equiv_gains(), call_from_call_insn(), can_combine_p(), can_have_basic_block_p(), can_merge_compare_into_arith(), can_simplify_addr(), can_throw_external(), canon_address(), canon_condition(), canon_list_insert(), canon_reg(), canon_reg_for_combine(), canon_rtx(), canonical_cselib_val(), canonicalize_address_mult(), canonicalize_condition(), canonicalize_insn(), canonicalize_reload_addr(), canonicalize_values_mark(), canonicalize_values_star(), canonicalize_vars_star(), cant_combine_insn_p(), carry_backpropagate(), change_regs(), change_subst_attribute(), change_zero_ext(), check_and_make_def_conflict(), check_and_process_move(), check_attr_test(), check_attr_value(), check_cond_move_block(), check_defs(), check_eliminable_occurrences(), check_for_inc_dec(), check_for_inc_dec_1(), check_for_label_ref(), check_maybe_invariant(), check_promoted_subreg(), check_rtl(), check_sibcall_argument_overlap_1(), check_tune_attr(), check_tune_attr(), choose_reload_regs(), classify_insn(), cleanup_auto_inc_dec(), cleanup_subreg_operands(), clear_storage(), clear_struct_flag(), clobber_overlapping_mems(), clz_loc_descriptor(), collect_address_parts(), collect_insn_data(), collect_non_operand_hard_regs(), combinable_i3pat(), combine_and_move_insns(), combine_instructions(), combine_set_extension(), combine_simplify_rtx(), combine_stack_adjustments_for_block(), commutative_operand_precedence(), compare_and_jump_seq(), compare_constant(), compares_alternatives_p(), compute_alternative_mask(), compute_argument_addresses(), compute_bb_dataflow(), compute_hash_table(), compute_ld_motion_mems(), compute_reloc_for_rtx(), compute_reloc_for_rtx_1(), compute_test_codes(), compute_transp(), computed_jump_p(), computed_jump_p_1(), cond_exec_get_condition(), cond_exec_process_insns(), cond_move_convert_if_block(), condition_dominates_p(), condjump_in_parallel_p(), condjump_label(), condjump_p(), conforming_compare(), consolidate_reg(), function_reader::consolidate_singletons(), const_hash_1(), const_ok_for_output(), const_ok_for_output_1(), const_or_frame_p(), const_rtx_hash_1(), const_vec_duplicate_p(), const_vec_series_p(), constrain_operands(), constraints_supported_in_insn_p(), contains(), contains_call_div_mod(), contains_muldiv(), contains_reg_p(), contains_symbolic_reference_p(), control_flow_insn_p(), convert_debug_memory_address(), convert_memory_address_addr_space_1(), convert_mode_scalar(), convert_modes(), convert_move(), convert_syntax(), convert_to_eh_region_ranges(), copy_boolean(), copy_cost(), copy_insn_1(), copy_replacements_1(), copy_rtx(), md_reader::copy_rtx_for_iterators(), copy_rtx_if_shared_1(), symtab_node::copy_visibility_from(), copyprop_hardreg_forward_1(), count_alternatives(), count_occurrences(), count_reg_usage(), count_rtxs(), covers_regno_no_parallel_p(), covers_regno_p(), cprop_constant_p(), cprop_jump(), create_call_lhs_operand(), create_insn_allocnos(), create_pseudo_cfg(), cse_cc_succs(), cse_insn(), cse_prescan_path(), cselib_expand_value_rtx_1(), cselib_hash_plus_const_int(), cselib_hash_rtx(), cselib_invalidate_mem(), cselib_invalidate_rtx(), cselib_lookup_1(), cselib_process_insn(), cselib_record_sets(), cselib_record_sp_cfa_base_equiv(), cselib_redundant_set_p(), cselib_reset_table(), cselib_sp_derived_value_p(), cselib_subst_to_values(), cst_pool_loc_descr(), curr_insn_transform(), dataflow_set_preserve_mem_locs(), dataflow_set_remove_mem_locs(), dbr_schedule(), dead_debug_global_replace_temp(), dead_debug_insert_temp(), dead_debug_promote_uses(), dead_or_set_regno_p(), dead_pseudo_p(), debug_optab_libfuncs(), decl_piece_bitsize(), decode_asm_operands(), decompose(), wi::int_traits< rtx_mode_t >::decompose(), decompose_address(), decompose_automod_address(), decompose_multiword_subregs(), decompose_normal_address(), decrease_live_ranges_number(), default_const_not_ok_for_debug_p(), default_elf_select_rtx_section(), default_encode_section_info(), deletable_insn_p(), deletable_insn_p_1(), delete_address_reloads(), delete_address_reloads_1(), delete_dead_insn(), delete_jump(), delete_move_and_clobber(), delete_output_reload(), delete_prior_computation(), delete_related_insns(), determine_max_iter(), df_def_record_1(), df_defs_record(), df_find_def(), df_find_hard_reg_defs(), df_find_hard_reg_defs_1(), df_find_use(), df_get_call_refs(), df_insn_refs_collect(), df_ref_create_structure(), df_ref_record(), df_uses_record(), df_word_lr_mark_ref(), diddle_return_value_1(), distribute_and_simplify_rtx(), distribute_links(), distribute_notes(), do_compare_rtx_and_jump(), do_jump(), do_local_cprop(), do_output_reload(), do_SUBST(), do_tablejump(), doloop_condition_get(), doloop_modify(), doloop_simplify_count(), drop_writeback(), duplicate_insn_chain(), duplicate_reg_note(), dv_from_rtx(), dw2_asm_output_encoded_addr_rtx(), dw2_force_const_mem(), dw_loc_list(), dw_loc_list_1(), dw_sra_loc_expr(), dwarf2out_frame_debug(), dwarf2out_frame_debug_adjust_cfa(), dwarf2out_frame_debug_cfa_offset(), dwarf2out_frame_debug_cfa_restore(), dwarf2out_frame_debug_expr(), eh_returnjump_p(), eliminate_constant_term(), eliminate_known_true(), eliminate_partially_redundant_loads(), eliminate_regs_1(), eliminate_regs_in_insn(), eliminate_regs_in_insn(), elimination_costs_in_insn(), elimination_effects(), emit(), address_reload_context::emit_autoinc(), emit_block_move(), emit_call_1(), emit_call_insn(), emit_clobber(), emit_conditional_add(), emit_conditional_move(), emit_copy_of_insn_after(), emit_debug_insn(), emit_group_load_1(), emit_group_move(), emit_group_store(), emit_input_reload_insns(), emit_insn(), emit_insn_if_valid_for_reload(), emit_jump_insn(), emit_library_call_value_1(), emit_move_complex(), emit_move_complex_push(), emit_move_list(), emit_move_multi_word(), emit_move_resolve_push(), emit_note_insn_var_location(), emit_notes_in_bb(), emit_pattern_after_noloc(), emit_pattern_before_noloc(), emit_push_insn(), emit_reload_insns(), emit_spill_move(), emit_use(), cselib_hasher::equal(), equal_different_set_p(), equiv_address_substitution(), equiv_constant(), equiv_init_movable_p(), equiv_init_varies_p(), evaluate_eq_attr(), exact_int_to_float_conversion_p(), exp_equiv_p(), expand_asm_stmt(), expand_assignment(), expand_builtin_apply(), expand_call(), expand_ccmp_expr(), expand_compound_operation(), expand_constructor(), expand_debug_expr(), expand_debug_locations(), expand_debug_parm_decl(), expand_expr_real_1(), expand_expr_real_2(), expand_field_assignment(), expand_function_end(), expand_function_start(), expand_gimple_basic_block(), expand_gimple_stmt(), expand_gimple_stmt_1(), expand_loc(), expand_mult_const(), expand_return(), expand_shift_1(), expand_ubsan_result_store(), expand_used_vars(), expand_value_return(), ext_dce_process_sets(), ext_dce_process_uses(), ext_dce_try_optimize_insn(), function_reader::extra_parsing_for_operand_code_0(), extract_ashift_operands_p(), extract_asm_operands(), extract_bit_field_1(), extract_bit_field_using_extv(), extract_insn(), extract_left_shift(), extract_mem_from_operand(), extract_plus_operands(), extract_split_bit_field(), extract_writebacks(), fill_simple_delay_slots(), fill_slots_from_thread(), final_scan_insn_1(), find_address(), find_args_size_adjust(), find_attrs_to_cache(), find_auto_inc(), find_base_term(), find_base_value(), find_bb_boundaries(), find_call_crossed_cheap_reg(), find_call_stack_args(), find_cc_set(), find_comparison_args(), find_cond_trap(), find_constant_term_loc(), find_decomposable_shift_zext(), find_decomposable_subregs(), find_dummy_reload(), find_end_label(), find_equiv_reg(), find_first_parameter_load(), find_flags_uses_in_insn(), find_implicit_sets(), find_inc_amount(), find_loads(), find_loc_in_1pdv(), find_matching_operand(), find_mem(), find_mem_conflicts(), find_mem_expr_in_1pdv(), find_memory(), find_memory_stores(), find_operand(), find_reg_equal_equiv_note(), find_reg_fusage(), find_reg_offset_for_const(), find_regno_fusage(), find_reload_regno_insns(), find_reloads(), find_reloads_address(), find_reloads_address_1(), find_reloads_address_part(), find_reloads_toplev(), find_replacement(), find_reusable_reload(), find_sets_in_insn(), find_single_use_1(), find_split_point(), find_subregs_of_mode(), find_temp_slot_from_address(), pair_fusion::find_trailing_add(), find_tune_attr(), find_tune_attr(), find_used_regs(), fix_crossing_conditional_branches(), fixed_base_plus_p(), fixup_debug_uses(), flow_active_insn_p(), fold_rtx(), for_each_inc_dec(), for_each_inc_dec_find_inc_dec(), force_const_mem(), force_int_to_mode(), force_operand(), force_reg(), force_reload_address(), force_to_mode(), forget_old_reloads_1(), form_sum(), form_sum(), forward_propagate_subreg(), forward_propagate_subreg(), free_INSN_LIST_node(), free_list(), free_load_extend(), function_invariant_p(), gen_addr_rtx(), gen_array_type_die(), gen_attr(), gen_attr(), gen_automata_option(), gen_automaton(), gen_bypass(), gen_cpu_unit(), gen_excl_set(), gen_exp(), gen_group_rtx(), gen_insn(), gen_insn(), gen_lowpart_common(), gen_lowpart_for_combine(), gen_lowpart_general(), gen_mnemonic_attr(), gen_peephole2(), gen_presence_absence_set(), gen_query_cpu_unit(), gen_reload(), gen_reload_chain_without_interm_reg_p(), gen_split(), general_operand(), generate_switch_p(), get_addr(), get_addr_from_global_cache(), get_addr_from_local_cache(), get_alternatives_number(), get_attr_length_1(), get_base_term(), get_biv_step_1(), get_branch_condition(), get_c_test(), get_call_args(), get_call_rtx_from(), get_condition(), get_defs(), get_eh_region_and_lp_from_rtx(), get_equiv_regno(), get_extended_src_reg(), get_first_nonnote_insn(), get_fnname_from_decl(), get_index_code(), get_index_scale(), get_index_term(), get_integer_term(), rtx_jump_table_data::get_labels(), get_last_value(), get_last_value_validate(), get_mem_expr_from_op(), get_pattern_stats_1(), get_peephole2_pattern(), get_pressure_class_and_nregs(), get_pressure_class_and_nregs(), get_regno(), get_related_value(), get_reload_reg(), get_some_local_dynamic_name(), get_sub_rtx(), pair_fusion::get_viable_bases(), go_through_subreg(), function_reader::handle_any_trailing_information(), hard_reg_set_here_p(), has_subst_attribute(), hash_invariant_expr_1(), hash_rtx(), hash_scan_insn(), hash_scan_insn(), hash_scan_set(), identify_predicable_attribute(), if_test_bypass_p(), if_then_else_cond(), implicit_set_cond_p(), implies_p(), in_class_p(), in_initial_view_p(), inc_for_reload(), indirect_jump_optimize(), indirect_operand(), inherit_in_ebb(), inherit_reload_reg(), init_alias_analysis(), init_eliminable_invariants(), initial_return_save(), initialize_argument_information(), insert_regs(), insert_right_side(), insert_with_costs(), inside_basic_block_p(), insn_invalid_p(), insn_live_p(), insn_nothrow_p(), insn_stack_adjust_offset_pre_post(), instantiate_decl_rtl(), instantiate_virtual_regs(), instantiate_virtual_regs_in_insn(), instantiate_virtual_regs_in_rtx(), interesting_dest_for_shprep(), internal_arg_pointer_based_exp(), intersect_loc_chains(), invalidate(), invalidate_any_buried_refs(), invalidate_dest(), invalidate_from_clobbers(), invalidate_from_sets_and_clobbers(), invalidate_reg(), invariant_expr_equal_p(), invariant_or_equiv_p(), invariant_p(), invert_exp_1(), ira_bad_reload_regno_1(), ira_implicitly_set_insn_hard_regs(), ira_remove_insn_scratches(), is_based_loc(), is_cond_copy_insn(), is_not(), is_parallel_of_n_reg_sets(), is_predicable(), is_pseudo_reg(), iv_analyze(), iv_analyze_expr(), iv_analyze_op(), iv_get_reaching_def(), iv_number_of_iterations(), kill_autoinc_value(), kill_clobbered_value(), kill_set_value(), kill_value(), known_cond(), last_active_insn(), leaf_function_p(), likely_spilled_retval_p(), link_insn_into_chain(), load_register_parameters(), loc_cmp(), loc_descriptor(), loc_equivalence_change_p(), loc_list_from_tree_1(), loc_mentioned_in_p(), local_cprop_find_used_regs(), local_cprop_pass(), location_for_asm(), lookup_as_function(), lra_constraints(), lra_delete_dead_insn(), lra_eliminate_regs_1(), lra_emit_add(), lra_emit_move(), lra_final_code_change(), lra_rtx_hash(), lra_set_insn_recog_data(), lra_substitute_pseudo(), lra_update_insn_regno_info(), lsb_bitfield_op_p(), main(), main(), make_automaton_attrs(), make_canonical(), make_compound_operation(), make_compound_operation_int(), symtab_node::make_decl_local(), make_decl_rtl(), make_edges(), make_extraction(), make_field_assignment(), make_insn_raw(), make_pseudo_conflict(), make_return_insns(), make_safe_from(), make_tree(), mark_altered(), mark_constants_in_pattern(), mark_effect(), mark_hard_reg_early_clobbers(), mark_jump_label_1(), mark_label_nuses(), mark_mode_tests(), mark_nonreg_stores_1(), mark_nonreg_stores_2(), mark_not_eliminable(), mark_not_eliminable(), mark_operands_from_match_dup(), mark_operands_used_in_match_dup(), mark_ref_dead(), mark_ref_live(), mark_ref_regs(), mark_referenced_regs(), mark_referenced_resources(), mark_reg_clobber(), mark_reg_store(), mark_set_regs(), mark_set_resources(), mark_symbol_refs_as_used(), mark_target_live_regs(), mark_used_flags(), mark_used_regs_combine(), mark_user_reg(), mark_weak(), match_pattern_2(), match_plus_neg_pattern(), match_reload(), match_rtx(), max_attr_value(), max_operand_1(), may_alias_p(), may_trap_p_1(), maybe_add_nop_after_section_switch(), maybe_emit_group_store(), maybe_fix_stack_asms(), maybe_merge_cfa_adjust(), maybe_propagate_label_ref(), maybe_record_trace_start(), maybe_reset_location_view(), maybe_swap_commutative_operands(), mem_autoinc_base(), mem_loc_descriptor(), memory_address_addr_space(), memory_operand(), memref_referenced_p(), memrefs_conflict_p(), mems_conflict_for_gcse_p(), mention_regs(), merge_equiv_classes(), merge_if_block(), merge_in_block(), merge_memattrs(), min_attr_value(), minmax_loc_descriptor(), mode_dependent_address_p(), modified_between_p(), modified_in_p(), move2add_note_store(), move2add_record_mode(), move2add_use_add2_insn(), move_deaths(), move_insn_for_shrink_wrap(), move_invariant_reg(), move_plus_up(), multiple_reg_loc_descriptor(), multiple_sets(), narrow_reload_pseudo_class(), native_encode_rtx(), need_fake_edge_p(), needs_barrier_p(), needs_variable(), new_elt_loc_list(), generic_subrtx_iterator< T >::next(), next_insn(), next_insn_no_annul(), no_conflict_move_test(), noce_bbs_ok_for_cond_zero_arith(), noce_can_force_operand(), noce_cond_zero_binary_op_supported(), noce_convert_multiple_sets_1(), noce_emit_cmove(), noce_emit_move_insn(), noce_emit_store_flag(), noce_get_alt_condition(), noce_get_condition(), noce_process_if_block(), noce_reversed_cond_code(), noce_try_abs(), noce_try_addcc(), noce_try_bitop(), noce_try_cmove(), noce_try_cmove_arith(), noce_try_cond_zero_arith(), noce_try_ifelse_collapse(), noce_try_minmax(), noce_try_move(), noce_try_sign_mask(), noce_try_store_flag_constants(), non_suitable_const(), nonzero_address_p(), nonzero_bits1(), nonzero_bits_binary_arith_p(), noop_move_p(), note_pattern_stores(), note_sets_clobbers(), note_stores(), note_uses(), notice_stack_pointer_modification_1(), notify_dependents_of_changed_value(), notreg_cost(), num_sign_bit_copies1(), num_sign_bit_copies_binary_arith_p(), offset_address(), offset_within_block_p(), offsettable_address_addr_space_p(), old_insns_match_p(), one_cprop_pass(), onlyjump_p(), operand_for_swap_move_operator(), rtx_writer::operand_has_default_value_p(), operands_match_p(), operands_match_p(), oprs_unchanged_p(), oprs_unchanged_p(), optimize_attrs(), optimize_bitfield_assignment_op(), optimize_one_addr_into_implicit_ptr(), optimize_skip(), ordered_comparison_operator(), outgoing_edges_match(), output_addr_const(), output_asm_label(), output_constant_pool_1(), output_constant_pool_2(), output_operand(), output_peephole2_scratches(), own_thread_p(), pair_mem_strip_offset(), paradoxical_subreg_p(), parse_add_or_inc(), partial_subreg_p(), patch_jump_insn(), pattern_cost(), pc_set(), pieces_addr::pieces_addr(), place_block_symbol(), plus_constant(), plus_minus_operand_p(), pop_operand(), popcount_loc_descriptor(), pre_insert_copy_insn(), precompute_register_parameters(), predicate_name(), prepare_call_address(), prepare_call_arguments(), print_exp(), print_insn(), print_insn_with_notes(), print_pattern(), rtx_writer::print_rtl(), rtx_writer::print_rtx(), rtx_writer::print_rtx_operand(), rtx_writer::print_rtx_operand_code_0(), rtx_writer::print_rtx_operand_code_i(), rtx_writer::print_rtx_operand_code_L(), rtx_writer::print_rtx_operand_code_u(), rtx_writer::print_rtx_operand_codes_E_and_V(), print_value(), process_addr_reg(), process_address_1(), process_alt_operands(), process_bb_node_lives(), pair_fusion::process_block(), process_define_constraint(), process_define_predicate(), process_define_subst(), process_rtx(), process_single_reg_class_operands(), process_substs_on_one_elem(), prune_expressions(), purge_dead_tablejump_edges(), push_operand(), push_reload(), read_complex_part(), read_md_rtx(), read_modify_subreg_p(), rtx_reader::read_rtx_code(), function_reader::read_rtx_operand(), rtx_reader::read_rtx_operand(), function_reader::read_rtx_operand_inL(), function_reader::read_rtx_operand_u(), rtx_reader::read_rtx_variadic(), recog_for_combine(), recog_for_combine_1(), record_address_regs(), record_dead_and_set_regs_1(), record_jump_equiv(), record_last_set_info(), record_last_set_info(), record_operand_costs(), record_set(), record_set_data(), record_stack_refs(), record_store(), record_truncated_value(), record_value_for_reg(), redirect_exp_1(), redirect_jump_1(), redundant_insn(), references_value_p(), refers_to_mem_for_reload_p(), refers_to_regno_for_reload_p(), refers_to_regno_p(), refs_newer_value_p(), reg_bitfield_target_p(), reg_dead_at_p_1(), reg_mentioned_p(), reg_or_subregno(), reg_overlap_mentioned_for_reload_p(), reg_overlap_mentioned_p(), reg_referenced_p(), reg_scan_mark_refs(), reg_set_p(), reg_subword_p(), register_operand(), regno_clobbered_p(), regno_use_in(), regno_val_use_in(), rehash_using_reg(), relax_delay_slots(), reload(), reload_as_needed(), reload_combine(), reload_combine_note_store(), reload_combine_recognize_const_pattern(), reload_combine_recognize_pattern(), reload_cse_move2add(), reload_cse_move2add_invalidate(), reload_cse_regs_1(), reload_cse_simplify(), reload_cse_simplify_operands(), reload_inner_reg_of_subreg(), remove_clobbers(), remove_constraints(), remove_duplicate_values(), remove_inheritance_pseudos(), remove_insn(), remove_invalid_subreg_refs(), remove_pseudos(), renumerate_operands_in_pattern(), replace_duplicating_operands_in_pattern(), replace_expr_with_values(), replace_label(), replace_oldest_value_addr(), replace_operands_with_dups(), replace_pseudos_in(), replace_read(), replace_rtx(), replaced_subreg(), reset_all_used_flags(), reset_subreg_promoted_p(), resolve_addr_in_expr(), resolve_operand_for_swap_move_operator(), resolve_reg_p(), resolve_shift_zext(), resolve_simple_move(), resolve_subreg_p(), rest_of_clean_state(), return_insn_p(), returnjump_p(), reverse_op(), reversed_comparison_code(), reversed_comparison_code_parts(), rotate_loc_descriptor(), rtl_for_decl_location(), rtl_lv_add_condition_to_bb(), rtl_verify_bb_layout(), rtvec_all_equal_p(), rtx_addr_can_trap_p_1(), rtx_addr_varies_p(), rtx_cost(), rtx_debug_expr_p(), rtx_equal_for_cselib_1(), rtx_equal_for_field_assignment_p(), rtx_equal_for_memref_p(), rtx_equal_p(), rtx_interchangeable_p(), rtx_moveable_p(), rtx_referenced_p(), rtx_renumbered_equal_p(), rtx_size(), rtx_unstable_p(), rtx_varies_p(), safe_from_p(), same_dw_val_p(), save_call_clobbered_regs(), scan_insn(), scan_loop(), scan_one_insn(), scan_operands(), scan_paradoxical_subregs(), scan_rtx(), scan_rtx_address(), scan_rtx_reg(), scan_trace(), scratch_equal(), scratch_operand(), set_for_reg_notes(), set_label_offsets(), set_nonzero_bits_and_sign_copies(), set_noop_p(), set_paradoxical_subreg(), set_reg_attrs_for_decl_rtl(), set_reg_attrs_for_parm(), set_reg_attrs_from_value(), set_return_jump_label(), set_rtl(), set_slot_part(), set_unique_reg_note(), setup_reg_equiv(), shallow_copy_rtx(), shared_const_p(), shorten_branches(), side_effects_p(), simple_move(), simple_move_operand(), simple_reg_p(), simple_regno_set(), simple_rhs_p(), simplejump_p(), simplify_and_const_int_1(), simplify_and_tree(), simplify_context::simplify_associative_operation(), simplify_context::simplify_binary_operation_1(), simplify_context::simplify_byte_swapping_operation(), simplify_comparison(), simplify_cond(), simplify_context::simplify_cond_clz_ctz(), simplify_const_binary_operation(), simplify_const_relational_operation(), simplify_const_unary_operation(), simplify_context::simplify_distributive_operation(), simplify_context::simplify_gen_subreg(), simplify_gen_subreg_concatn(), simplify_if_then_else(), simplify_logical(), simplify_context::simplify_logical_relational_operation(), simplify_context::simplify_merge_mask(), simplify_operand_subreg(), simplify_or_tree(), simplify_context::simplify_plus_minus(), simplify_context::simplify_relational_operation(), simplify_context::simplify_relational_operation_1(), simplify_replace_fn_rtx(), simplify_rotate_op(), simplify_rtx(), simplify_set(), simplify_shift_const_1(), simplify_context::simplify_subreg(), simplify_subreg_concatn(), simplify_context::simplify_ternary_operation(), simplify_test_exp(), simplify_context::simplify_truncation(), simplify_context::simplify_unary_operation_1(), simplify_using_condition(), simplify_using_initial_values(), simplify_while_replacing(), single_set(), single_set_2(), single_set_for_csa(), single_set_gcse(), skip_insns_after_block(), skip_usage_debug_insns(), sp_based_mem_offset(), special_predicate_operand_p(), spill_pseudos(), split_const(), split_double(), split_if_necessary(), split_reg(), stack_adjust_offset_pre_post(), stack_adjust_offset_pre_post_cb(), stack_memref_p(), stop_search_p(), store_bit_field_1(), store_bit_field_using_insv(), store_data_bypass_p(), store_data_bypass_p_1(), store_expr(), store_field(), store_integral_bit_field(), store_killed_in_insn(), store_killed_in_pat(), store_one_arg(), store_split_bit_field(), store_unaligned_arguments_into_pseudos(), string_cst_pool_decl(), strip_address_mutations(), strip_offset(), strip_offset_and_add(), strip_paradoxical_subreg(), strip_subreg(), subreg_lowpart_p(), subst(), subst_dup(), subst_indexed_address(), subst_pattern_match(), subst_reg_equivs(), subst_reloads(), substitute(), substitute(), substitute_address(), tablejump_casesi_pattern(), tests_attr_p(), thread_jump(), tls_referenced_p(), gdbhooks.RtxPrinter::to_string(), pair_fusion_bb_info::track_access(), transform_ifelse(), true_dependence_1(), true_regnum(), try_apply_stack_adjustment(), try_back_substitute_reg(), try_combine(), try_eliminate_compare(), try_emit_cmove_seq(), try_merge_delay_insns(), try_replace_in_use(), try_replace_reg(), rtx_properties::try_to_add_dest(), rtx_properties::try_to_add_insn(), rtx_properties::try_to_add_pattern(), rtx_properties::try_to_add_src(), undefined_operand_subword_p(), undo_optional_reloads(), unique_base_value_p(), unsigned_reg_p(), unsuitable_loc(), update_equiv_regs(), update_live_status(), update_reg_equal_equiv_notes(), update_table_tick(), update_temp_slot_address(), use_anchored_address(), use_narrower_mode(), use_narrower_mode_test(), use_related_value(), use_type(), uses_hard_regs_p(), uses_rtx_reuse_p(), val_bind(), val_reset(), valid_base_or_index_term_p(), validate_autoinc_and_mem_addr_p(), validate_change_1(), validate_exp(), validate_pattern(), validate_replace_rtx_1(), validate_simplify_insn(), validate_test_and_branch(), variable_merge_over_cur(), variable_post_merge_new_vals(), vec_duplicate_p(), vec_series_p(), verify_changes(), verify_rtl_sharing(), verify_rtx_sharing(), volatile_insn_p(), volatile_refs_p(), vt_add_function_parameter(), vt_canon_true_dep(), vt_canonicalize_addr(), vt_expand_loc_callback(), vt_expand_var_loc_chain(), vt_get_canonicalize_base(), vt_get_decl_and_offset(), vt_initialize(), walk_alter_subreg(), walk_attr_value(), walk_insn_part(), walk_rtx(), want_to_gcse_p(), widen_operand(), word_register_operation_p(), write_attr_set(), write_attr_value(), write_complex_part(), write_dependence_p(), write_insn_cases(), write_predicate_expr(), write_predicate_stmts(), and write_test_expr().
#define GET_MODE | ( | RTX | ) |
Referenced by add_const_value_attribute(), add_equal_note(), add_regs_to_insn_regno_info(), add_removable_extension(), inchash::add_rtx(), add_stored_regs(), add_stores(), add_test(), add_uses(), addr_offset_valid_p(), addr_side_effect_eval(), address_operand(), adjust_address_1(), adjust_insn(), adjust_mems(), adjust_reg_mode(), allocate_basic_variable(), alter_reg(), alter_subreg(), analyze_insn_to_expand_var(), analyze_iv_to_split_insn(), anti_adjust_stack_and_probe(), anti_adjust_stack_and_probe_stack_clash(), apply_distributive_law(), insn_propagation::apply_to_rvalue_1(), approx_reg_cost(), asm_operand_ok(), assemble_integer(), assign_call_lhs(), assign_mem_slot(), assign_parm_adjust_entry_rtl(), assign_parm_remove_parallels(), assign_parm_setup_block(), assign_parm_setup_block_p(), assign_parm_setup_reg(), assign_parm_setup_stack(), assign_parms_unsplit_complex(), assign_stack_temp_for_type(), attempt_change(), autoinc_split(), avoid_complex_debug_insns(), avoid_constant_pool_reference(), avoid_likely_spilled_reg(), base_plus_disp_to_reg(), base_to_reg(), bb_estimate_probability_locally(), bb_ok_for_noce_convert_multiple_sets(), find_comparison_dom_walker::before_dom_children(), break_out_memory_refs(), build_def_use(), calculate_elim_costs_all_insns(), calculate_equiv_gains(), calculate_table_based_CRC(), can_assign_to_reg_without_clobbers_p(), can_change_dest_mode(), can_combine_p(), can_decompose_p(), can_eliminate_compare(), canon_address(), canon_condition(), canon_reg_for_combine(), canon_rtx(), canonicalize_address(), canonicalize_address_mult(), canonicalize_condition(), carry_backpropagate(), cc_in_cond(), change_address(), change_address_1(), change_zero_ext(), check_and_process_move(), check_cond_move_block(), check_mem_read_rtx(), check_new_reg_p(), check_secondary_memory_needed_p(), check_sibcall_argument_overlap_1(), choose_reload_regs(), cleanup_auto_inc_dec(), clear_storage(), clear_storage_hints(), clz_loc_descriptor(), collect_non_operand_hard_regs(), combinable_i3pat(), combine_instructions(), combine_reaching_defs(), combine_set_extension(), combine_simplify_rtx(), combine_stack_adjustments_for_block(), combine_temp_slots(), combine_var_copies_in_loop_exit(), compare_and_jump_seq(), comparison_operator(), complex_word_subreg_p(), compress_float_constant(), compute_ld_motion_mems(), compute_regs_asm_clobbered(), compute_reload_subreg_offset(), compute_transp(), concat_loc_descriptor(), concatn_loc_descriptor(), cond_exec_get_condition(), cond_exec_process_if_block(), cond_exec_process_insns(), consolidate_reg(), function_reader::consolidate_singletons(), const_double_operand(), const_rtx_hash_1(), const_vec_series_p_1(), const_vector_elt(), const_vector_int_elt(), constrain_operands(), contains_ccmode_rtx_p(), contains_reg_p(), convert_debug_memory_address(), convert_extracted_bit_field(), convert_memory_address_addr_space_1(), convert_mode_scalar(), convert_modes(), convert_move(), copy_blkmode_from_reg(), copy_to_mode_reg(), copy_to_reg(), copy_value(), copyprop_hardreg_forward_1(), create_insn_allocnos(), create_new_invariant(), cse_cc_succs(), cse_change_cc_mode(), cse_condition_code_reg(), cse_extended_basic_block(), cse_insn(), cse_process_note_1(), cselib_add_permanent_equiv(), cselib_expand_value_rtx_1(), cselib_hash_plus_const_int(), cselib_hash_rtx(), cselib_invalidate_mem(), cselib_invalidate_regno(), cselib_invalidate_rtx(), cselib_invalidated_by_call_p(), cselib_lookup_1(), cselib_lookup_mem(), cselib_record_autoinc_cb(), cselib_record_sets(), cselib_redundant_set_p(), cselib_reg_set_mode(), cselib_reset_table(), cselib_subst_to_values(), cst_pool_loc_descr(), curr_insn_transform(), dataflow_set_equiv_regs(), dead_debug_insert_temp(), dead_debug_promote_uses(), dead_or_predicable(), debug_lowpart_subreg(), decl_overlaps_hard_reg_set_p(), decl_piece_bitsize(), decl_piece_varloc_ptr(), decode_asm_operands(), decompose(), decompose_mem_address(), decompose_multiword_subregs(), decompose_normal_address(), decompose_register(), decrease_live_ranges_number(), default_memtag_set_tag(), default_unspec_may_trap_p(), delegitimize_mem_from_attrs(), delete_output_reload(), delete_trivially_dead_insns(), delete_unmarked_insns(), determine_block_size(), df_ref_change_reg_with_loc(), df_ref_record(), df_word_lr_mark_ref(), distribute_and_simplify_rtx(), do_compare_rtx_and_jump(), do_input_reload(), do_jump(), do_local_cprop(), do_output_reload(), do_remat(), do_store_flag(), do_SUBST(), doloop_modify(), doloop_simplify_count(), drop_writeback(), dw_loc_list_1(), dwarf2out_frame_debug_cfa_expression(), dwarf2out_frame_debug_cfa_offset(), dwarf2out_frame_debug_cfa_val_expression(), dwarf2out_frame_debug_expr(), dwf_cfa_reg(), eliminate_constant_term(), eliminate_partially_redundant_loads(), eliminate_regs_1(), eliminate_regs_in_insn(), eliminate_regs_in_insn(), elimination_effects(), emit_add3_insn(), address_reload_context::emit_autoinc(), emit_block_cmp_via_loop(), emit_block_move(), emit_block_move_via_loop(), emit_block_move_via_oriented_loop(), emit_cmp_and_jump_insns(), emit_conditional_add(), emit_conditional_move(), emit_conditional_move_1(), emit_group_load_1(), emit_group_load_into_temps(), emit_group_move_into_temps(), emit_group_store(), emit_inc(), emit_input_reload_insns(), emit_libcall_block_1(), emit_library_call_value_1(), emit_move_change_mode(), emit_move_insn(), emit_move_insn_1(), emit_note_insn_var_location(), emit_output_reload_insns(), emit_partition_copy(), emit_push_insn(), emit_reload_insns(), emit_spill_move(), emit_store_flag(), emit_store_flag_1(), emit_store_flag_force(), emit_store_flag_int(), emit_storent_insn(), entry_register(), const_double_hasher::equal(), const_fixed_hasher::equal(), const_poly_int_hasher::equal(), cselib_hasher::equal(), equiv_address_substitution(), equiv_constant(), equivalent_reg_at_start(), exact_int_to_float_conversion_p(), exp_equiv_p(), expand_abs(), expand_and(), expand_arith_overflow_result_store(), expand_asm_stmt(), expand_assignment(), expand_atomic_compare_and_swap(), expand_atomic_exchange(), expand_atomic_fetch_op(), expand_atomic_fetch_op_no_fallback(), expand_atomic_load(), expand_atomic_store(), expand_atomic_test_and_set(), expand_binop(), expand_binop_directly(), expand_builtin_apply(), expand_builtin_atomic_compare_exchange(), expand_builtin_bswap(), expand_builtin_extract_return_addr(), expand_builtin_feclear_feraise_except(), expand_builtin_fegetround(), expand_builtin_goacc_parlevel_id_size(), expand_builtin_init_dwarf_reg_sizes(), expand_builtin_interclass_mathfn(), expand_builtin_issignaling(), expand_builtin_memcmp(), expand_builtin_powi(), expand_builtin_stpcpy_1(), expand_builtin_strcmp(), expand_builtin_strlen(), expand_builtin_strncmp(), expand_builtin_thread_pointer(), expand_builtin_unop(), expand_call(), expand_clobber(), expand_compare_and_swap_loop(), expand_compound_operation(), expand_cond_expr_using_cmove(), expand_copysign(), expand_crc_optab_fn(), expand_crc_table_based(), expand_debug_expr(), expand_debug_locations(), expand_debug_parm_decl(), expand_debug_source_expr(), expand_dec(), expand_divmod(), expand_doubleword_mult(), expand_expr_addr_expr(), expand_expr_addr_expr_1(), expand_expr_force_mode(), expand_expr_real_1(), expand_expr_real_2(), expand_field_assignment(), expand_fix(), expand_fixed_convert(), expand_float(), expand_function_end(), expand_function_start(), expand_gimple_stmt_1(), expand_HWASAN_CHOOSE_TAG(), expand_ifn_atomic_compare_exchange(), expand_ifn_atomic_compare_exchange_into_call(), expand_inc(), expand_movstr(), expand_mult(), expand_mult_const(), expand_parity(), expand_POPCOUNT(), expand_return(), expand_reversed_crc_table_based(), expand_SET_EDOM(), expand_sfix_optab(), expand_shift_1(), expand_single_bit_test(), expand_speculation_safe_value(), expand_twoval_binop(), expand_twoval_binop_libfunc(), expand_twoval_unop(), expand_unop(), expand_var_during_unrolling(), expand_vec_perm_1(), expand_vec_perm_const(), expand_vec_perm_var(), expand_vector_broadcast(), expand_vector_ubsan_overflow(), expand_widening_mult(), ext_dce_process_sets(), ext_dce_process_uses(), ext_dce_try_optimize_insn(), extract_ashift_operands_p(), extract_bit_field(), extract_bit_field_1(), extract_bit_field_using_extv(), extract_insn(), extract_integral_bit_field(), extract_low_bits(), extract_writebacks(), fill_slots_from_thread(), find_all_hard_regs(), find_and_remove_re(), find_args_size_adjust(), find_base_term(), find_base_value(), find_cc_set(), find_comparison_args(), find_cond_trap(), find_decomposable_shift_zext(), find_decomposable_subregs(), find_dummy_reload(), find_equiv_reg(), find_identical_invariants(), find_inc(), find_inc_amount(), find_mem_conflicts(), find_moveable_pseudos(), find_moveable_store(), find_oldest_value_reg(), find_reg_offset_for_const(), find_reloads(), find_reloads_address(), find_reloads_address_1(), find_reloads_address_part(), find_reloads_subreg_address(), find_reloads_toplev(), find_replacement(), find_sets_in_insn(), find_shift_sequence(), find_split_point(), fixup_debug_use(), fold_rtx(), for_each_inc_dec_find_inc_dec(), force_int_to_mode(), force_not_mem(), force_operand(), force_reload_address(), force_to_mode(), form_sum(), form_sum(), forward_propagate_and_simplify(), forward_propagate_subreg(), free_load_extend(), gen_add2_insn(), gen_add3_insn(), gen_addptr3_insn(), gen_common_operation_to_reflect(), gen_cond_trap(), gen_exp(), gen_group_rtx(), gen_highpart(), gen_highpart_mode(), gen_insn(), gen_lowpart_common(), gen_lowpart_for_combine(), gen_lowpart_for_debug(), gen_lowpart_general(), gen_lowpart_if_possible(), gen_lowpart_or_truncate(), gen_lowpart_SUBREG(), gen_reg_rtx_and_attrs(), gen_reload(), gen_rtx_scratch(), gen_rtx_SUBREG(), gen_sub2_insn(), gen_sub3_insn(), general_operand(), generate_reflecting_code_standard(), get_addr(), get_address_mode(), get_biv_step_1(), get_branch_condition(), get_call_args(), rtx_jump_table_data::get_data_mode(), get_dynamic_stack_size(), get_equiv_with_elimination(), get_hard_regno(), get_inv_cost(), get_last_value(), get_last_value_validate(), get_mem_attrs(), get_pressure_class_and_nregs(), get_pressure_class_and_nregs(), get_reload_reg(), get_scratch_reg(), get_scratch_reg(), get_stored_val(), get_subreg_tracking_sizes(), go_through_subreg(), group_limit(), hard_function_value(), hard_reg_set_here_p(), has_hard_reg_initial_val(), block_die_hasher::hash(), const_double_hasher::hash(), const_fixed_hasher::hash(), const_poly_int_hasher::hash(), pre_ldst_expr_hasher::hash(), st_expr_hasher::hash(), hash_expr(), hash_invariant_expr_1(), hash_rtx(), hash_scan_set(), hash_scan_set(), hash_scan_set(), have_add2_insn(), have_addptr3_insn(), have_sub2_insn(), HONOR_INFINITIES(), HONOR_NANS(), HONOR_SIGN_DEPENDENT_ROUNDING(), HONOR_SIGNED_ZEROS(), HONOR_SNANS(), hwasan_truncate_to_tag_size(), if_then_else_cond(), immediate_operand(), implicit_set_cond_p(), implies_p(), in_class_p(), inc_for_reload(), pieces_addr::increment_address(), index_part_to_reg(), indirect_operand(), inherit_in_ebb(), inherit_reload_reg(), init_alias_analysis(), init_curr_operand_mode(), init_eliminable_invariants(), initialize_uninitialized_regs(), insert_float(), insert_regs(), insert_restore(), insert_save(), insert_value_copy_on_edge(), insert_var_expansion_initialization(), insert_with_costs(), instantiate_virtual_regs_in_insn(), instantiate_virtual_regs_in_rtx(), inv_can_prop_to_addr_use(), invalidate(), invalidate_dest(), invalidate_for_call(), invalidate_from_clobbers(), invalidate_from_sets_and_clobbers(), invalidate_reg(), invariant_expr_equal_p(), invariant_p(), invert_exp_1(), ira_create_new_reg(), ira_get_dup_out_num(), ira_implicitly_set_insn_hard_regs(), ira_remove_insn_scratches(), ira_restore_scratches(), ira_reuse_stack_slot(), iv_analyze_def(), iv_analyze_expr(), iv_analyze_op(), iv_mult(), iv_number_of_iterations(), iv_shift(), kill_autoinc_value(), kill_set_value(), kill_value(), known_cond(), ldst_entry(), load_kills_store(), loc_cmp(), loc_descriptor(), loc_equivalence_change_p(), loc_list_from_tree_1(), lookup_as_function(), lra_constraints(), lra_create_live_ranges_1(), lra_create_new_reg_with_unique_value(), lra_eliminate_regs_1(), lra_emit_add(), lra_substitute_pseudo(), lsb_bitfield_op_p(), make_compound_operation(), make_compound_operation_int(), make_debug_expr_from_rtl(), make_decl_rtl(), make_extraction(), make_field_assignment(), make_memloc(), make_more_copies(), make_safe_from(), make_tree(), mark_mode_tests(), mark_not_eliminable(), mark_referenced_regs(), mark_referenced_resources(), mark_set_resources(), mark_target_live_regs(), mark_used_regs_combine(), match_asm_constraints_1(), match_pattern_2(), match_reload(), match_rtx(), may_alias_p(), may_assign_reg_p(), may_trap_p_1(), maybe_clear_subreg_promoted_p(), maybe_emit_atomic_exchange(), maybe_emit_atomic_test_and_set(), maybe_emit_call_builtin___clear_cache(), maybe_emit_compare_and_swap_exchange_loop(), maybe_emit_group_store(), maybe_emit_op(), maybe_emit_sync_lock_test_and_set(), maybe_emit_unop_insn(), maybe_legitimize_operand(), maybe_memory_address_addr_space_p(), maybe_mode_change(), maybe_optimize_fetch_op(), maybe_swap_commutative_operands(), mem_loc_descriptor(), memory_address_addr_space(), memory_operand(), mems_conflict_for_gcse_p(), mention_regs(), merge_def_and_ext(), merge_memattrs(), move2add_note_store(), move2add_record_mode(), move2add_use_add3_insn(), move_deaths(), move_insn_for_shrink_wrap(), move_plus_up(), multiple_reg_loc_descriptor(), native_encode_rtx(), needs_variable(), noce_convert_multiple_sets_1(), noce_emit_cmove(), noce_emit_czero(), noce_emit_move_insn(), noce_emit_store_flag(), noce_find_if_block(), noce_get_alt_condition(), noce_get_condition(), noce_process_if_block(), noce_try_abs(), noce_try_addcc(), noce_try_bitop(), noce_try_cmove(), noce_try_cmove_arith(), noce_try_cond_zero_arith(), noce_try_ifelse_collapse(), noce_try_inverse_constants(), noce_try_minmax(), noce_try_sign_mask(), noce_try_store_flag_constants(), noce_try_store_flag_mask(), non_conflicting_reg_copy_p(), nonoverlapping_memrefs_p(), nonzero_bits(), nonzero_bits1(), note_sets_clobbers(), notreg_cost(), num_sign_bit_copies(), num_sign_bit_copies1(), offset_address(), offsettable_address_addr_space_p(), offsettable_memref_p(), offsettable_nonstrict_memref_p(), operand_for_swap_move_operator(), operand_subword(), operands_match_p(), operands_match_p(), optimize_bitfield_assignment_op(), ordered_comparison_operator(), output_peephole2_scratches(), pair_mem_strip_offset(), paradoxical_subreg_p(), partial_subreg_p(), pattern_cost(), plus_constant(), pop_operand(), popcount_loc_descriptor(), prepare_call_address(), prepare_call_arguments(), prepare_cmp_insn(), prepare_copy_insn(), prepare_float_lib_cmp(), prepare_libcall_arg(), prepare_operand(), preserve_constants_and_equivs(), rtx_writer::print_rtx(), rtx_writer::print_rtx_operand_codes_E_and_V(), print_value(), probe_stack_range(), process_addr_reg(), process_address_1(), process_alt_operands(), process_bb_lives(), process_invariant_for_inheritance(), propagate_for_debug_subst(), push_operand(), push_reload(), push_secondary_reload(), read_complex_part(), read_modify_subreg_p(), rtx_reader::read_rtx_variadic(), recog_for_combine(), record_dead_and_set_regs_1(), record_entry_value(), record_hard_reg_sets(), record_jump_cond(), record_jump_cond_subreg(), record_last_set_info(), record_last_set_info(), record_operand_costs(), record_promoted_value(), record_reg_classes(), record_reg_sets(), record_store(), record_truncated_value(), record_value_for_reg(), reduce_to_bit_field_precision(), reg_bitfield_target_p(), reg_loc_descriptor(), reg_overlap_mentioned_for_reload_p(), reg_set_p(), reg_subword_p(), regrename_do_replace(), reload(), reload_adjust_reg_for_mode(), reload_adjust_reg_for_temp(), reload_as_needed(), reload_combine_note_store(), reload_combine_recognize_const_pattern(), reload_combine_recognize_pattern(), reload_cse_move2add(), reload_cse_move2add_invalidate(), reload_cse_regs_1(), reload_cse_simplify_operands(), reload_cse_simplify_set(), remove_inheritance_pseudos(), remove_invalid_subreg_refs(), remove_pseudos(), replace_dead_reg(), replace_expr_with_values(), replace_oldest_value_mem(), replace_pseudos_in(), replace_read(), replace_reg_with_saved_mem(), replace_rtx(), requires_stack_frame_p(), resolve_clobber(), resolve_debug(), resolve_shift_zext(), resolve_simple_move(), resolve_subreg_use(), reverse_op(), reversed_comparison_code_parts(), reversed_condition(), rotate_loc_descriptor(), rtl_for_decl_location(), rtl_lv_add_condition_to_bb(), rtx_addr_varies_p(), rtx_cost(), rtx_equal_for_cselib_1(), rtx_equal_for_field_assignment_p(), rtx_equal_for_memref_p(), rtx_equal_p(), rtx_renumbered_equal_p(), safe_from_p(), save_call_clobbered_regs(), scan_loop(), scan_one_insn(), scan_operands(), scan_paradoxical_subregs(), scan_reads(), scan_rtx(), scan_rtx_address(), scompare_loc_descriptor(), scratch_operand(), set_mem_attributes_minus_bitpos(), set_mem_attrs(), set_nonzero_bits_and_sign_copies(), set_noop_p(), set_reg_attrs_for_decl_rtl(), set_reg_attrs_from_value(), set_reload_reg(), set_rtl(), setup_incoming_promotions(), setup_reg_equiv(), setup_save_areas(), shape_of_subreg(), shift_return_value(), should_replace_address(), side_effects_p(), simple_mem(), simple_move(), simple_move_p(), simple_reg_p(), simplify_and_const_int(), simplify_and_const_int_1(), simplify_context::simplify_binary_operation_1(), simplify_compare_const(), simplify_comparison(), simplify_context::simplify_cond_clz_ctz(), simplify_const_binary_operation(), simplify_const_relational_operation(), simplify_const_unary_operation(), simplify_const_vector_byte_offset(), simplify_context::simplify_gen_subreg(), simplify_gen_subreg_concatn(), simplify_context::simplify_gen_vec_select(), simplify_if_then_else(), simplify_logical(), simplify_context::simplify_logical_relational_operation(), simplify_context::simplify_merge_mask(), simplify_operand_subreg(), simplify_context::simplify_plus_minus(), simplify_context::simplify_relational_operation(), simplify_context::simplify_relational_operation_1(), simplify_replace_fn_rtx(), simplify_rotate_op(), simplify_rtx(), simplify_set(), simplify_shift_const(), simplify_shift_const_1(), simplify_context::simplify_subreg(), simplify_subreg_concatn(), simplify_context::simplify_ternary_operation(), simplify_context::simplify_truncation(), simplify_context::simplify_unary_operation_1(), simplify_while_replacing(), single_reg_class(), sjlj_mark_call_sites(), split_double(), split_iv(), split_reg(), st_expr_entry(), store_bit_field_1(), store_bit_field_using_insv(), store_constructor(), store_constructor_field(), store_expr(), store_field(), store_integral_bit_field(), store_split_bit_field(), strip_paradoxical_subreg(), subreg_lowpart_p(), subreg_lsb(), subreg_memory_offset(), subreg_nregs_with_regno(), subreg_promoted_mode(), subreg_regno(), subreg_unpromoted_mode(), subst(), subst_indexed_address(), subst_mode(), subst_pattern_match(), subst_reloads(), temp_slot_address_compute_hash(), pair_fusion_bb_info::track_access(), track_expr_p(), track_loc_p(), pair_fusion_bb_info::track_via_mem_expr(), transform_ifelse(), true_dependence_1(), true_regnum(), truncated_to_mode(), try_apply_stack_adjustment(), try_combine(), try_eliminate_compare(), try_merge(), try_merge_compare(), pair_fusion::try_promote_writeback(), try_replace_in_use(), try_shrink_wrapping(), try_store_by_multiple_pieces(), rtx_properties::try_to_add_dest(), rtx_properties::try_to_add_reg(), rtx_properties::try_to_add_src(), ucompare_loc_descriptor(), undefined_operand_subword_p(), unique_base_value_p(), update_rsp_from_reg_equal(), update_scratch_ops(), use_anchored_address(), use_narrower_mode(), use_narrower_mode_test(), use_related_value(), use_type(), uses_hard_regs_p(), val_resolve(), valid_multiword_target_p(), validate_autoinc_and_mem_addr_p(), validate_pattern(), validate_replace_rtx_1(), validize_mem(), var_lowpart(), variable_merge_over_cur(), variable_post_merge_new_vals(), variable_post_merge_perm_vals(), vec_duplicate_p(), vector_compare_rtx(), vectorizable_store(), verify_changes(), vt_add_function_parameter(), vt_canon_true_dep(), vt_canonicalize_addr(), vt_expand_loc_callback(), vt_init_cfa_base(), vt_initialize(), want_to_gcse_p(), widen_operand(), widened_mode(), wider_subreg_mode(), word_dce_process_block(), write_complex_part(), write_dependence_p(), write_predicate_expr(), write_test_expr(), and zcur_select_mode_rtx().
#define GET_NOTE_INSN_NAME | ( | NOTE_CODE | ) |
Referenced by parse_note_insn_name(), print_insn(), and rtx_writer::print_rtx_operand().
#define GET_NUM_ELEM | ( | RTVEC | ) |
Referenced by add_implicit_parallel(), generic_subrtx_iterator< T >::add_subrtxes_to_queue(), alter_attrs_for_insn(), alter_attrs_for_subst_insn(), change_subst_attribute(), create_trace_edges(), delete_insn(), delete_related_insns(), gen_emit_seq(), gen_insn(), gen_rtx_CONST_VECTOR(), get_pattern_stats(), get_peephole2_pattern(), has_subst_attribute(), is_predicable(), label_is_jump_target_p(), loc_descriptor(), make_edges(), output_add_clobbers(), patch_jump_insn(), purge_dead_tablejump_edges(), replace_label(), rtvec_all_equal_p(), rtvec_series_p(), shallow_copy_rtvec(), and simplify_replace_fn_rtx().
#define GET_REG_NOTE_NAME | ( | MODE | ) |
Referenced by parse_reg_note_name(), print_insn_with_notes(), and rtx_writer::print_rtx().
#define GET_RTX_CLASS | ( | CODE | ) |
Referenced by add_equal_note(), add_predicate_code(), insn_propagation::apply_to_rvalue_1(), attr_rtx_1(), canon_reg_for_combine(), canonicalize_condition(), check_for_inc_dec(), check_for_inc_dec_1(), choose_reload_regs(), combine_simplify_rtx(), commutative_operand_precedence(), commutative_optab_p(), count_rtxs(), cse_insn(), cselib_expand_value_rtx_1(), curr_insn_transform(), extract_writebacks(), find_auto_inc(), find_reloads(), find_reusable_reload(), find_split_point(), fixup_debug_uses(), fold_rtx(), for_each_inc_dec(), force_reload_address(), get_mem_expr_from_op(), pair_fusion::get_viable_bases(), implies_p(), init_predicate_table(), init_rtlanal(), kill_autoinc_value(), lsb_bitfield_op_p(), mem_autoinc_base(), move_insn_for_shrink_wrap(), noce_emit_move_insn(), notice_stack_pointer_modification_1(), offsettable_address_addr_space_p(), print_exp(), reg_overlap_mentioned_for_reload_p(), reg_set_p(), reload_cse_move2add_invalidate(), replace_read(), reversed_comparison_code_parts(), safe_for_live_propagation(), simplify_context::simplify_binary_operation(), simplify_context::simplify_distributive_operation(), simplify_context::simplify_gen_binary(), simplify_context::simplify_merge_mask(), simplify_replace_fn_rtx(), simplify_rtx(), simplify_shift_const_1(), simplify_while_replacing(), strip_address_mutations(), subst(), pair_fusion_bb_info::track_access(), and validate_autoinc_and_mem_addr_p().
#define GET_RTX_FORMAT | ( | CODE | ) |
Referenced by add_auto_inc_notes(), add_constraints(), add_label_notes(), add_regs_to_insn_regno_info(), inchash::add_rtx(), generic_subrtx_iterator< T >::add_subrtxes_to_queue(), alter_constraints(), alter_predicate_for_insn(), alter_subregs(), apply_int_iterator(), insn_propagation::apply_to_rvalue_1(), attr_rtx_1(), attr_rtx_cost(), avoid_complex_debug_insns(), bad_for_rematerialization_p(), can_have_basic_block_p(), canon_reg(), canon_reg_for_combine(), change_regs(), check_eliminable_occurrences(), check_maybe_invariant(), check_promoted_subreg(), check_sibcall_argument_overlap_1(), cleanup_auto_inc_dec(), clear_struct_flag(), collect_insn_data(), collect_non_operand_hard_regs(), compares_alternatives_p(), compute_transp(), computed_jump_p_1(), contains_reg_p(), copy_insn_1(), copy_replacements_1(), copy_rtx(), md_reader::copy_rtx_for_iterators(), copy_rtx_if_shared_1(), count_alternatives(), count_occurrences(), count_reg_usage(), count_rtxs(), create_insn_allocnos(), cselib_expand_value_rtx_1(), cselib_hash_rtx(), cselib_subst_to_values(), dead_pseudo_p(), delete_address_reloads_1(), df_uses_record(), eliminate_regs_1(), elimination_effects(), equiv_init_movable_p(), equiv_init_varies_p(), exp_equiv_p(), extract_mem_from_operand(), find_address(), find_inc_amount(), find_loads(), find_matching_operand(), find_mem(), find_operand(), find_reloads_address_1(), find_reloads_toplev(), find_single_use_1(), find_split_point(), find_subregs_of_mode(), find_used_regs(), fold_rtx(), gen_exp(), get_alternatives_number(), get_equiv_regno(), get_last_value_validate(), get_pattern_stats_1(), hash_invariant_expr_1(), hash_rtx(), invalidate_any_buried_refs(), invariant_expr_equal_p(), invariant_p(), known_cond(), loc_cmp(), loc_equivalence_change_p(), loc_mentioned_in_p(), lra_eliminate_regs_1(), lra_rtx_hash(), lra_substitute_pseudo(), make_compound_operation(), mark_jump_label_1(), mark_label_nuses(), mark_not_eliminable(), mark_operands_from_match_dup(), mark_operands_used_in_match_dup(), mark_ref_regs(), mark_referenced_regs(), mark_referenced_resources(), mark_set_resources(), mark_used_flags(), mark_used_regs_combine(), match_pattern_2(), match_rtx(), max_operand_1(), may_trap_p_1(), memref_referenced_p(), mention_regs(), merge_memattrs(), modified_between_p(), modified_in_p(), move_deaths(), rtx_writer::operand_has_default_value_p(), operands_match_p(), operands_match_p(), oprs_unchanged_p(), oprs_unchanged_p(), rtx_writer::print_rtx_operand(), rtx_reader::read_rtx_code(), function_reader::read_rtx_operand(), rtx_reader::read_rtx_operand(), record_address_regs(), redirect_exp_1(), references_value_p(), refers_to_mem_for_reload_p(), refers_to_regno_for_reload_p(), refers_to_regno_p(), reg_mentioned_p(), reg_overlap_mentioned_p(), reg_scan_mark_refs(), regno_use_in(), regno_val_use_in(), reload_combine_note_use(), remove_constraints(), remove_pseudos(), renumerate_operands_in_pattern(), replace_duplicating_operands_in_pattern(), replace_oldest_value_addr(), replace_operands_with_dups(), replace_pseudos_in(), replace_rtx(), rtx_addr_varies_p(), rtx_cost(), rtx_equal_for_cselib_1(), rtx_equal_for_memref_p(), rtx_equal_p(), rtx_moveable_p(), rtx_renumbered_equal_p(), rtx_unstable_p(), rtx_varies_p(), scan_operands(), scan_paradoxical_subregs(), scan_rtx(), scan_rtx_address(), setup_reg_subrtx_bounds(), side_effects_p(), simplify_replace_fn_rtx(), subst(), subst_dup(), subst_pattern_match(), subst_reg_equivs(), substitute(), substitute(), tests_attr_p(), gdbhooks.RtxPrinter::to_string(), update_table_tick(), uses_hard_regs_p(), validate_autoinc_and_mem_addr_p(), validate_pattern(), validate_replace_rtx_1(), verify_rtx_sharing(), volatile_insn_p(), volatile_refs_p(), walk_attr_value(), walk_insn_part(), and walk_rtx().
#define GET_RTX_LENGTH | ( | CODE | ) |
Referenced by add_auto_inc_notes(), add_constraints(), add_label_notes(), add_regs_to_insn_regno_info(), inchash::add_rtx(), generic_subrtx_iterator< T >::add_subrtxes_to_queue(), alter_constraints(), alter_predicate_for_insn(), alter_subregs(), attr_rtx_1(), attr_rtx_cost(), avoid_complex_debug_insns(), bad_for_rematerialization_p(), canon_reg(), canon_reg_for_combine(), change_regs(), check_eliminable_occurrences(), check_maybe_invariant(), check_promoted_subreg(), check_sibcall_argument_overlap_1(), cleanup_auto_inc_dec(), clear_struct_flag(), collect_insn_data(), collect_non_operand_hard_regs(), compares_alternatives_p(), compute_transp(), computed_jump_p_1(), condition_dominates_p(), contains_reg_p(), copy_insn_1(), copy_replacements_1(), copy_rtx(), copy_rtx_if_shared_1(), count_alternatives(), count_occurrences(), count_reg_usage(), count_rtxs(), create_insn_allocnos(), cselib_expand_value_rtx_1(), cselib_hash_rtx(), cselib_subst_to_values(), dead_pseudo_p(), delete_address_reloads_1(), df_uses_record(), eliminate_regs_1(), elimination_effects(), equiv_init_movable_p(), equiv_init_varies_p(), exp_equiv_p(), extract_mem_from_operand(), find_address(), find_inc_amount(), find_loads(), find_matching_operand(), find_mem(), find_operand(), find_reloads_address_1(), find_reloads_toplev(), find_single_use_1(), find_subregs_of_mode(), find_used_regs(), fold_rtx(), gen_exp(), get_alternatives_number(), get_equiv_regno(), get_last_value_validate(), get_pattern_stats_1(), hash_invariant_expr_1(), hash_rtx(), invalidate_any_buried_refs(), invariant_expr_equal_p(), invariant_p(), known_cond(), loc_cmp(), loc_equivalence_change_p(), loc_mentioned_in_p(), lra_eliminate_regs_1(), lra_rtx_hash(), lra_substitute_pseudo(), make_compound_operation(), mark_jump_label_1(), mark_label_nuses(), mark_not_eliminable(), mark_operands_from_match_dup(), mark_operands_used_in_match_dup(), mark_ref_regs(), mark_referenced_regs(), mark_referenced_resources(), mark_set_resources(), mark_used_flags(), mark_used_regs_combine(), match_rtx(), max_operand_1(), may_trap_p_1(), memref_referenced_p(), mention_regs(), merge_memattrs(), modified_between_p(), modified_in_p(), move_deaths(), operands_match_p(), operands_match_p(), oprs_unchanged_p(), oprs_unchanged_p(), rtx_writer::print_rtx(), record_address_regs(), redirect_exp_1(), references_value_p(), refers_to_mem_for_reload_p(), refers_to_regno_for_reload_p(), refers_to_regno_p(), reg_mentioned_p(), reg_overlap_mentioned_p(), reg_scan_mark_refs(), regno_use_in(), regno_val_use_in(), reload_combine_note_use(), remove_constraints(), remove_pseudos(), renumerate_operands_in_pattern(), replace_duplicating_operands_in_pattern(), replace_oldest_value_addr(), replace_operands_with_dups(), replace_pseudos_in(), replace_rtx(), rtx_addr_varies_p(), rtx_cost(), rtx_equal_for_cselib_1(), rtx_equal_for_memref_p(), rtx_equal_p(), rtx_moveable_p(), rtx_renumbered_equal_p(), rtx_unstable_p(), rtx_varies_p(), scan_operands(), scan_paradoxical_subregs(), scan_rtx(), scan_rtx_address(), side_effects_p(), subst(), subst_dup(), subst_pattern_match(), subst_reg_equivs(), substitute(), substitute(), tests_attr_p(), gdbhooks.RtxPrinter::to_string(), update_table_tick(), uses_hard_regs_p(), validate_autoinc_and_mem_addr_p(), validate_pattern(), validate_replace_rtx_1(), verify_rtx_sharing(), volatile_insn_p(), volatile_refs_p(), walk_attr_value(), walk_insn_part(), and walk_rtx().
#define GET_RTX_NAME | ( | CODE | ) |
Referenced by add_constraint(), check_attr_test(), check_attr_value(), check_defs(), compute_costs(), compute_splitting_shift(), compute_test_codes(), debug_optab_libfuncs(), dump_rtx_statistics(), dump_shift_choices(), gen_automata_option(), gen_automaton(), gen_bypass(), gen_cpu_unit(), gen_excl_set(), gen_presence_absence_set(), gen_query_cpu_unit(), gen_split(), get_code_token(), initialize_iterators(), match_pattern_2(), maybe_find_code(), print_code(), print_code(), print_code(), print_exp(), print_pattern(), rtx_writer::print_rtx(), print_value(), simplify_compare_const(), subst_pattern_match(), gdbhooks.RtxPrinter::to_string(), validate_exp(), validate_pattern(), and write_test_expr().
#define global_rtl (this_target_rtl->x_global_rtl) |
#define HARD_FRAME_POINTER_IS_ARG_POINTER (HARD_FRAME_POINTER_REGNUM == ARG_POINTER_REGNUM) |
Referenced by expand_builtin_setjmp_receiver(), rtl_for_decl_location(), and scan_insn().
#define HARD_FRAME_POINTER_IS_FRAME_POINTER (HARD_FRAME_POINTER_REGNUM == FRAME_POINTER_REGNUM) |
Referenced by can_combine_def_p(), combinable_i3pat(), df_get_eh_block_artificial_uses(), df_get_entry_block_def_set(), df_get_exit_block_use_set(), df_get_regular_block_artificial_uses(), df_insn_refs_collect(), ext_dce_process_bb(), find_reloads_address(), gen_rtx_REG(), init_alias_target(), init_reg_sets_1(), init_resource_info(), ira_setup_eliminable_regset(), mark_referenced_resources(), mark_used_regs_combine(), reload(), and rename_chains().
#define HARD_FRAME_POINTER_REGNUM FRAME_POINTER_REGNUM |
If HARD_FRAME_POINTER_REGNUM is defined, then a special dummy reg is used to represent the frame pointer. This is because the hard frame pointer and the automatic variables are separated by an amount that cannot be determined until after register allocation. We can assume that in this case ELIMINABLE_REGS will be defined, one action of which will be to eliminate FRAME_POINTER_REGNUM into HARD_FRAME_POINTER_REGNUM.
Referenced by based_loc_descr(), build_cfa_aligned_loc(), can_combine_def_p(), can_simplify_addr(), choose_reload_regs(), combinable_i3pat(), copy_value(), cselib_expand_value_rtx_1(), df_get_eh_block_artificial_uses(), df_get_entry_block_def_set(), df_get_exit_block_use_set(), df_get_regular_block_artificial_uses(), df_insn_refs_collect(), do_reload(), dwarf2out_frame_debug_expr(), expand_builtin_setjmp_receiver(), expand_loc(), ext_dce_process_bb(), fix_register(), gen_rtx_REG(), get_initial_register_offset(), init_alias_analysis(), init_alias_target(), init_emit(), init_emit_regs(), init_reg_sets_1(), init_reload(), init_resource_info(), ira_setup_eliminable_regset(), lookup_global_register(), lra_fp_pseudo_p(), lra_update_fp2sp_elimination(), make_decl_rtl(), mark_referenced_resources(), mark_used_regs_combine(), peep2_find_free_register(), reload(), reload_combine_recognize_pattern(), rename_chains(), rtl_for_decl_location(), rtx_addr_can_trap_p_1(), setup_alloc_regs(), setup_can_eliminate(), try_shrink_wrapping(), and update_eliminables().
#define hard_frame_pointer_rtx (global_rtl[GR_HARD_FRAME_POINTER]) |
Referenced by adjust_mems(), based_loc_descr(), compute_frame_pointer_to_fb_displacement(), const_or_frame_p(), df_bb_refs_collect(), dwarf2out_frame_debug_expr(), elimination_effects(), execute_dwarf2_frame(), expand_builtin_longjmp(), expand_builtin_nonlocal_goto(), expand_builtin_return_addr(), expand_builtin_setjmp_receiver(), expand_builtin_setjmp_setup(), expand_function_start(), find_reloads_address(), fixed_base_plus_p(), fp_setter_insn(), gen_rtx_REG(), get_group_info(), hash_rtx(), immune_p(), init_alias_analysis(), init_emit(), init_emit_regs(), lookup_global_register(), make_prologue_seq(), mark_not_eliminable(), mark_not_eliminable(), move_insn_for_shrink_wrap(), nonzero_address_p(), rtx_addr_can_trap_p_1(), rtx_unstable_p(), rtx_varies_p(), vt_init_cfa_base(), and vt_initialize().
#define HARD_REGISTER_NUM_P | ( | REG_NO | ) |
1 if the given register number REG_NO corresponds to a hard register.
Referenced by add_used_regs(), allocate_initial_values(), can_decompose_p(), combine_and_move_insns(), compute_regs_asm_clobbered(), copy_insn_1(), copy_rtx_if_shared_1(), cselib_expand_value_rtx_1(), deletable_insn_p(), df_chain_insn_bottom_dump(), df_chain_insn_top_dump(), df_rd_dump_defs_set(), emit_reload_insns(), find_decomposable_shift_zext(), find_decomposable_subregs(), find_moveable_pseudos(), find_pseudo_copy(), first_hazard_after(), get_hard_regno(), get_reg_class(), in_hard_reg_set_p(), latest_hazard_before(), lra_create_live_ranges_1(), lra_update_biggest_mode(), make_hard_regno_dead(), make_hard_regno_live(), mark_pseudo_dead(), mark_pseudo_live(), mark_regno_dead(), mark_regno_live(), non_conflicting_reg_copy_p(), process_bb_lives(), reg_fits_class_p(), resolve_simple_move(), set_mode_and_regno(), simple_reg_p(), simplify_context::simplify_subreg(), simplify_subreg_regno(), sparseset_contains_pseudos_p(), split_reg(), track_loc_p(), update_pseudo_point(), and verify_rtx_sharing().
#define HARD_REGISTER_P | ( | REG | ) |
1 if the given register REG corresponds to a hard register.
Referenced by alter_subreg(), insn_propagation::apply_to_rvalue_1(), assign_parm_setup_reg(), avoid_likely_spilled_reg(), baseness(), can_combine_p(), can_move_invariant_reg(), canon_asm_operands(), cant_combine_insn_p(), change_zero_ext(), check_cond_move_block(), choose_reload_regs(), compress_float_constant(), convert_modes(), cprop_reg_p(), cselib_record_sets(), deletable_insn_p(), df_find_hard_reg_defs_1(), do_input_reload(), emit_group_load_1(), emit_move_complex(), emit_output_reload_insns(), emit_reload_insns(), expand_asm_stmt(), expand_call(), expand_cmpstr(), expand_cmpstrn_or_cmpmem(), expand_debug_parm_decl(), expand_expr_real_1(), extract_integral_bit_field(), find_call_crossed_cheap_reg(), find_invariant_insn(), gen_memset_value_from_prev(), interesting_dest_for_shprep_1(), internal_arg_pointer_based_exp(), internal_arg_pointer_based_exp_scan(), look_for_hardregs(), make_more_copies(), mark_referenced_resources(), mark_set_resources(), may_assign_reg_p(), noce_process_if_block(), note_sets_clobbers(), prepare_shrink_wrap(), process_alt_operands(), process_bb_lives(), process_register_constraint_filters(), process_regs_for_copy(), record_hard_reg_sets(), record_reg_sets(), reload_inner_reg_of_subreg(), rtx_moveable_p(), save_call_clobbered_regs(), set_noop_p(), set_reg_attrs_from_value(), shift_return_value(), simple_rhs_p(), simplify_context::simplify_subreg(), store_integral_bit_field(), strip_paradoxical_subreg(), try_apply_stack_adjustment(), try_back_substitute_reg(), try_fwprop_subst(), use_reg_mode(), validate_subreg(), and vt_add_function_parameter().
#define HAVE_POST_DECREMENT 0 |
Referenced by can_store_by_pieces(), fold_rtx(), and init_decision_table().
#define HAVE_POST_INCREMENT 0 |
Referenced by fold_rtx(), init_decision_table(), and pieces_addr::maybe_postinc().
#define HAVE_POST_MODIFY_DISP 0 |
Referenced by init_decision_table().
#define HAVE_POST_MODIFY_REG 0 |
Referenced by init_decision_table(), and parse_add_or_inc().
#define HAVE_PRE_DECREMENT 0 |
Referenced by can_store_by_pieces(), fold_rtx(), init_decision_table(), and pieces_addr::maybe_predec().
#define HAVE_PRE_INCREMENT 0 |
Referenced by fold_rtx(), and init_decision_table().
#define HAVE_PRE_MODIFY_DISP 0 |
Referenced by init_decision_table().
#define HAVE_PRE_MODIFY_REG 0 |
Referenced by init_decision_table(), and parse_add_or_inc().
#define HWIVEC_CHECK | ( | RTX, | |
C ) |
#define IGNORED_DWARF_REGNUM (INVALID_REGNUM - 1) |
REGNUM for which no debug information can be generated.
Referenced by mem_loc_descriptor(), and reg_loc_descriptor().
#define INSN_ANNULLED_BRANCH_P | ( | RTX | ) |
1 if RTX is a jump_insn, call_insn, or insn that is an annulling branch.
Referenced by dbr_schedule(), delete_from_delay_slot(), fill_slots_from_thread(), make_return_insns(), mark_set_resources(), next_insn_no_annul(), optimize_skip(), redirect_with_delay_list_safe_p(), redirect_with_delay_slots_safe_p(), redundant_insn(), relax_delay_slots(), scan_trace(), steal_delay_list_from_target(), and try_merge_delay_insns().
#define INSN_CHAIN_CODE_P | ( | CODE | ) |
True if CODE is part of the insn chain (i.e. has INSN_UID, PREV_INSN and NEXT_INSN fields).
Referenced by rtx_writer::print_rtx(), rtx_writer::print_rtx_operand_code_u(), and rtx_reader::read_rtx_code().
#define INSN_CODE | ( | INSN | ) |
Code number of instruction, from when it was recognized. -1 means this instruction has not been recognized yet.
Referenced by _fatal_insn_not_found(), insn_propagation::apply_to_note(), calculate_needs_all_insns(), cancel_changes(), cand_eq_p(), check_bool_attrs(), combine_and_move_insns(), combine_instructions(), combine_reloads(), combine_validate_cost(), cse_insn(), curr_insn_transform(), delete_unmarked_insns(), eliminate_regs_in_insn(), emit_copy_of_insn_after(), equiv_can_be_consumed_p(), extract_insn_cached(), find_reloads(), get_bool_attr_mask(), get_bool_attr_mask_uncached(), insert_one_insn(), insn_invalid_p(), instantiate_virtual_regs_in_insn(), ira_nullify_asm_goto(), ira_remove_insn_scratches(), ira_restore_scratches(), lra_get_insn_recog_data(), lra_set_insn_recog_data(), lra_update_insn_recog_data(), make_call_insn_raw(), make_debug_insn_raw(), make_insn_raw(), make_jump_insn_raw(), noop_move_p(), output_asm_name(), preprocess_constraints(), rtx_writer::print_rtx_operand_code_i(), process_address_1(), process_alt_operands(), process_insn_for_elimination(), function_reader::read_rtx_operand_inL(), recog_for_combine_1(), recog_memoized(), record_reg_classes(), reg_save_code(), scan_one_insn(), setup_prohibited_mode_move_regs(), swap_change(), try_combine(), update_ld_motion_stores(), valid_insn_p(), and validate_change_1().
#define INSN_DEBUG_MARKER_KIND | ( | INSN | ) |
Evaluate to the marker kind.
Referenced by print_insn(), and reemit_marker_as_note().
#define INSN_FROM_TARGET_P | ( | RTX | ) |
1 if RTX is an insn in a delay slot and is from the target of the branch. If the branch insn has INSN_ANNULLED_BRANCH_P set, this insn should only be executed if the branch is taken. For annulled branches with this bit clear, the insn should be executed only if the branch is not taken.
Referenced by check_annul_list_true_false(), dbr_schedule(), delete_from_delay_slot(), fill_slots_from_thread(), make_return_insns(), mark_set_resources(), mark_target_live_regs(), next_insn_no_annul(), optimize_skip(), redirect_with_delay_list_safe_p(), redirect_with_delay_slots_safe_p(), redundant_insn(), relax_delay_slots(), scan_trace(), steal_delay_list_from_target(), and try_merge_delay_insns().
#define INSN_NOTE | ( | NAME | ) |
Insn note definitions. Copyright (C) 2004-2025 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 file defines all the codes that may appear in the NOTE_LINE_NUMBER field of a NOTE insn for kinds of notes that are not line numbers. Source files define DEF_INSN_NOTE appropriately before including this file. We are slowly removing the concept of insn-chain notes from the compiler. Adding new codes to this file is STRONGLY DISCOURAGED. If you think you need one, look for other ways to express what you mean, such as register notes or bits in the basic-block structure.
Shorthand.
#define INSN_P | ( | X | ) |
Predicate yielding nonzero iff X is a real insn.
Referenced by _succ_iter_start(), add_equal_note(), add_insn_after(), add_insn_before(), add_store_equivs(), generic_subrtx_iterator< T >::add_subrtxes_to_queue(), alloc_mem(), analyze_insns_in_loop(), apply_opt_in_copies(), assign_parm_setup_reg(), block_jumps_and_fallthru(), bypass_conditional_jumps(), calculate_elim_costs_all_insns(), calculate_gen_cands(), calculate_needs_all_insns(), can_combine_p(), can_throw_external(), cfg_layout_can_duplicate_bb_p(), change_loop(), check_secondary_memory_needed_p(), check_sibcall_argument_overlap(), cleanup_auto_inc_dec(), combine_instructions(), combine_stack_adjustments_for_block(), compute_hash_table(), cond_exec_process_if_block(), confirm_change_group(), contains_call_div_mod(), contains_no_active_insn_p(), convert_to_eh_region_ranges(), copy_bb_p(), copy_insn_1(), copy_reg_eh_region_note_backward(), copy_reg_eh_region_note_forward(), cse_cc_succs(), cse_change_cc_mode_insn(), cse_change_cc_mode_insns(), cse_condition_code_reg(), cse_extended_basic_block(), cse_prescan_path(), cselib_process_insn(), dbr_schedule(), dce_process_block(), dead_or_predicable(), decompose_multiword_subregs(), decrease_live_ranges_number(), delete_address_reloads_1(), delete_insn(), delete_noop_moves(), delete_related_insns(), delete_trivially_dead_insns(), df_bb_refs_record(), df_bb_regno_first_def_find(), df_bb_regno_last_def_find(), df_bb_verify(), df_chain_create_bb(), df_chain_insn_bottom_dump(), df_chain_insn_top_dump(), df_chain_remove_problem(), df_insn_change_bb(), df_insn_delete(), df_insn_rescan(), df_live_bb_local_compute(), df_md_bb_local_compute(), df_mir_bb_local_compute(), df_note_bb_compute(), df_rd_bb_local_compute(), df_recompute_luids(), df_reorganize_refs_by_insn_bb(), df_reorganize_refs_by_reg_by_insn(), df_scan_free_bb_info(), df_scan_start_block(), df_scan_start_dump(), df_simulate_one_insn_forwards(), df_update_entry_exit_and_calls(), distribute_links(), distribute_notes(), doloop_condition_get(), dse_step1(), dse_step3_scan(), dse_step5(), dse_step6(), eliminate_partially_redundant_loads(), emit_output_reload_insns(), emit_pattern_after(), emit_pattern_before(), expand_binop_directly(), expand_unop_direct(), find_call_crossed_cheap_reg(), find_equiv_reg(), find_first_parameter_load(), find_jump_block(), find_reg_equal_equiv_note(), find_reg_note(), find_regno_note(), find_shift_sequence(), pair_fusion::find_trailing_add(), fixup_abnormal_edges(), fixup_reorder_chain(), flow_find_cross_jump(), flow_find_head_matching_sequence(), get_eh_region_and_lp_from_rtx(), get_loop_location(), inherit_in_ebb(), init_eliminable_invariants(), init_elimination(), init_label_info(), insert_insn_end_basic_block(), insert_insn_start_basic_block(), insn_could_throw_p(), insn_nothrow_p(), instantiate_virtual_regs(), interesting_dest_for_shprep(), ira_emit(), keep_with_call_p(), likely_spilled_retval_p(), local_cprop_pass(), loop_exit_at_end_p(), lra_coalesce(), lra_constraints(), lra_final_code_change(), lra_update_insn_regno_info(), make_insn_raw(), mark_constants(), mark_target_live_regs(), maybe_duplicate_computed_goto(), maybe_emit_unop_insn(), maybe_fix_stack_asms(), memory_modified_in_insn_p(), move_insn_for_shrink_wrap(), multiple_sets(), need_fake_edge_p(), next_real_insn(), noce_get_alt_condition(), one_cprop_pass(), outgoing_edges_match(), peep2_update_life(), prev_real_insn(), print_insn_with_notes(), print_pattern(), rtx_writer::print_rtx_operand_code_e(), rtx_writer::print_rtx_operand_code_i(), rtx_writer::print_rtx_operand_code_L(), rtx_writer::print_rtx_operand_code_r(), rtx_writer::print_rtx_operand_code_u(), pair_fusion::process_block(), push_insns(), function_reader::read_rtx_operand_inL(), redundant_insn(), reg_dead_at_p(), reg_inc_found_and_valid_p(), reg_killed_on_edge(), reg_killed_on_edge(), reg_scan(), reg_set_between_p(), reg_set_p(), reg_used_on_edge(), reload(), reload_as_needed(), reload_combine(), reload_cse_move2add(), reload_cse_regs_1(), remove_inheritance_pseudos(), remove_scratches(), remove_scratches(), reset_all_used_flags(), reset_insn_used_flags(), reverse_equiv_p(), rtl_account_profile_record(), rtl_predicted_by_p(), set_for_reg_notes(), set_insn_deleted(), set_insn_locations(), set_of(), setup_sp_offset(), shallow_copy_rtx(), shorten_branches(), simplify_using_initial_values(), single_set(), single_set_gcse(), sjlj_mark_call_sites(), skip_consecutive_labels(), spill_hard_reg_in_range(), split_all_insns(), split_all_insns_noflow(), split_insn(), is_a_helper< const T * >::test(), is_a_helper< const T * >::test(), thread_jump(), try_combine(), try_forward_edges(), try_split(), unshare_all_rtl_again(), unshare_all_rtl_in_chain(), update_equiv_regs(), validate_equiv_mem(), verify_insn_sharing(), verify_rtl_sharing(), vt_initialize(), vt_stack_adjustments(), and word_dce_process_block().
#define INSN_VAR_LOCATION | ( | INSN | ) |
#define INSN_VAR_LOCATION_DECL | ( | INSN | ) |
Accessors for a tree-expanded var location debug insn.
Referenced by apply_opt_in_copies(), delete_trivially_dead_insns(), delete_vta_debug_insn(), duplicate_insn_chain(), expand_debug_locations(), insn_live_p(), and print_insn().
#define INSN_VAR_LOCATION_LOC | ( | INSN | ) |
Referenced by build_def_use(), can_move_invariant_reg(), combine_and_move_insns(), copyprop_hardreg_forward_1(), dead_debug_insert_temp(), dead_debug_promote_uses(), dead_debug_reset_uses(), delete_trivially_dead_insns(), df_insn_rescan_debug_internal(), df_note_bb_compute(), eliminate_regs_in_insn(), emit_input_reload_insns(), expand_debug_locations(), fixup_debug_insns(), fixup_debug_use(), lra_set_insn_recog_data(), print_insn(), propagate_for_debug(), regrename_do_replace(), reload(), reset_debug_use(), reset_debug_uses_in_loop(), reset_unmarked_insns_debug_uses(), and spill_pseudos().
#define INSN_VAR_LOCATION_PTR | ( | INSN | ) |
A pointer to the VAR_LOCATION rtx in a DEBUG_INSN.
Referenced by instantiate_virtual_regs().
#define INSN_VAR_LOCATION_STATUS | ( | INSN | ) |
Referenced by expand_debug_locations().
#define INTVAL | ( | RTX | ) |
For a CONST_INT rtx, INTVAL extracts the integer.
Referenced by add_const_value_attribute(), inchash::add_rtx(), allocate_dynamic_stack_space(), anti_adjust_stack_and_probe(), anti_adjust_stack_and_probe_stack_clash(), asm_operand_ok(), assign_parm_adjust_entry_rtl(), attr_value_alignment(), autoinc_split(), avoid_expensive_constant(), base_alias_check(), can_nonlocal_goto(), canonicalize_address_mult(), canonicalize_condition(), canonicalize_reload_addr(), carry_backpropagate(), change_zero_ext(), check_attr_value(), clear_storage_hints(), clz_loc_descriptor(), combine_predictions_for_insn(), combine_set_extension(), combine_simplify_rtx(), combine_stack_adjustments_for_block(), compute_stack_clash_protection_loop_data(), function_reader::consolidate_singletons(), const_int_operand(), const_rtx_hash_1(), cse_insn(), cselib_hash_rtx(), cselib_invalidate_mem(), cselib_subst_to_values(), decl_piece_bitsize(), decompose(), wi::int_traits< rtx_mode_t >::decompose(), delete_address_reloads(), determine_max_iter(), distribute_notes(), do_SUBST(), do_tablejump(), doloop_condition_get(), dw2_assemble_integer(), dw2_fix_up_crossing_landing_pad(), dwarf2out_frame_debug_expr(), eliminate_regs_1(), eliminate_regs_in_insn(), elimination_effects(), emit_block_cmp_hints(), emit_block_move_hints(), emit_block_move_via_pattern(), emit_libcall_block_1(), emit_push_insn(), emit_store_flag(), emit_store_flag_int(), const_int_hasher::equal(), expand_binop(), expand_builtin_apply(), expand_builtin_crc_table_based(), expand_builtin_memcmp(), expand_builtin_memory_copy_args(), expand_builtin_prefetch(), expand_builtin_stpcpy_1(), expand_compound_operation(), expand_DIVMOD(), expand_divmod(), expand_doubleword_divmod(), expand_doubleword_mod(), expand_expr_real_2(), expand_field_assignment(), expand_mult(), expand_rotate_as_vec_perm(), expand_shift_1(), expand_widening_mult(), expmed_mult_highpart(), extract_left_shift(), find_address(), find_base_term(), find_base_value(), find_decomposable_shift_zext(), find_inc_amount(), find_mem(), find_reg_offset_for_const(), find_reloads(), find_reloads_address(), find_split_point(), fold_builtin_atomic_always_lock_free(), fold_rtx(), force_int_to_mode(), force_reg(), force_to_mode(), form_sum(), gen_exp(), general_operand(), get_call_args(), get_dynamic_stack_size(), get_eh_region_and_lp_from_rtx(), get_index_scale(), get_integer_term(), get_memmodel(), get_stored_val(), const_int_hasher::hash(), hash_rtx(), immediate_operand(), implies_p(), inc_for_reload(), invert_br_probabilities(), ira_setup_alts(), iv_number_of_iterations(), loc_descriptor(), loc_list_from_tree_1(), lra_eliminate_regs_1(), lsb_bitfield_op_p(), make_canonical(), make_compound_operation_int(), make_extraction(), make_field_assignment(), max_attr_value(), mem_loc_descriptor(), memory_load_overlap(), memrefs_conflict_p(), min_attr_value(), mode_signbit_p(), move2add_note_store(), move2add_record_sym_value(), move2add_use_add2_insn(), native_encode_rtx(), noce_emit_move_insn(), noce_get_alt_condition(), noce_try_addcc(), noce_try_bitop(), noce_try_cmove(), noce_try_inverse_constants(), noce_try_store_flag(), noce_try_store_flag_constants(), nonzero_address_p(), nonzero_bits1(), num_sign_bit_copies1(), operand_for_swap_move_operator(), output_addr_const(), output_asm_insn(), parse_add_or_inc(), poly_int_rtx_p(), print_exp(), print_value(), probe_stack_range(), process_alt_operands(), record_one_stack_ref(), record_reg_classes(), resolve_shift_zext(), reverse_rotate_by_imm_p(), round_push(), rtl_predicted_by_p(), rtvec_series_p(), rtx_to_double_int(), rtx_to_poly_int64(), scan_insn(), scompare_loc_descriptor_narrow(), set_reg_attrs_for_decl_rtl(), set_reg_attrs_for_parm(), set_storage_via_setmem(), sign_extend_short_imm(), simplify_and_const_int_1(), simplify_context::simplify_binary_operation_1(), simplify_compare_const(), simplify_comparison(), simplify_context::simplify_cond_clz_ctz(), simplify_const_relational_operation(), simplify_logical(), simplify_context::simplify_plus_minus(), simplify_context::simplify_relational_operation_1(), simplify_rotate_op(), simplify_shift_const_1(), simplify_context::simplify_subreg(), simplify_context::simplify_ternary_operation(), simplify_context::simplify_truncation(), simplify_context::simplify_unary_operation_1(), simplify_while_replacing(), sjlj_fix_up_crossing_landing_pad(), sjlj_output_call_site_table(), sjlj_size_of_call_site_table(), sp_based_mem_offset(), split_double(), stack_adjust_offset_pre_post(), stack_adjust_offset_pre_post_cb(), store_bit_field_using_insv(), store_expr(), store_one_arg(), store_split_bit_field(), try_combine(), ucompare_loc_descriptor(), update_reg_equal_equiv_notes(), use_anchored_address(), vt_canonicalize_addr(), vt_get_canonicalize_base(), and write_attr_value().
#define INVALID_REGNUM (~(unsigned int) 0) |
REGNUM never really appearing in the INSN stream.
Referenced by asm_clobber_reg_is_valid(), based_loc_descr(), convert_cfa_to_fb_loc_list(), copy_value(), copyprop_hardreg_forward_1(), create_pseudo_cfg(), cse_condition_code_reg(), cselib_finish(), debug_value_data(), debugger_reg_number(), def_cfa_0(), df_bb_refs_collect(), df_get_entry_block_def_set(), df_get_exit_block_use_set(), df_get_regular_block_artificial_uses(), df_lr_local_compute(), do_reload(), dump_cfi_row(), dwarf2out_alloc_current_fde(), dwarf2out_flush_queued_reg_saves(), dwarf2out_frame_debug(), dwarf2out_frame_debug_cfa_offset(), dwarf2out_frame_debug_expr(), emit_insn_if_valid_for_reload(), expand_builtin_eh_return_data_regno(), expand_builtin_nonlocal_goto(), expand_dw2_landing_pad_for_region(), fill_simple_delay_slots(), fill_slots_from_thread(), gen_rtx_REG(), get_cfa_from_loc_descr(), init_emit_regs(), init_reg_sets_1(), init_resource_info(), init_value_data(), initial_return_save(), kill_value_one_regno(), new_cfi_row(), process_bb_lives(), process_bb_node_lives(), reg_save(), try_shrink_wrapping(), and validate_value_data().
#define JUMP_LABEL | ( | INSN | ) |
In jump.cc, each JUMP_INSN can point to a label that it can jump to, so that if the JUMP_INSN is deleted, the label's LABEL_NUSES can be decremented and possibly the label can be deleted.
Referenced by add_labels_and_missing_jumps(), add_test(), compare_and_jump_seq(), computed_jump_p(), cond_exec_get_condition(), condition_dominates_p(), cprop_jump(), create_eh_forwarder_block(), cse_insn(), dbr_schedule(), dead_or_predicable(), delete_insn(), delete_related_insns(), discover_loop(), distribute_notes(), doloop_modify(), duplicate_insn_chain(), fill_eager_delay_slots(), fill_simple_delay_slots(), fill_slots_from_thread(), final_forward_branch_p(), find_cond_trap(), find_if_case_1(), fix_crossing_unconditional_branches(), fixup_reorder_chain(), follow_jumps(), force_nonfallthru_and_redirect(), get_condition(), handle_simple_exit(), insn_current_reference_address(), invert_jump(), invert_jump_1(), rtx_jump_insn::jump_label(), JUMP_LABEL_AS_INSN(), rtx_jump_insn::jump_target(), jump_to_label_p(), label_is_jump_target_p(), make_edges(), make_jump_insn_raw(), make_return_insns(), mark_all_labels(), mark_jump_label_1(), maybe_propagate_label_ref(), noce_emit_store_flag(), noce_get_alt_condition(), noce_get_condition(), optimize_skip(), patch_jump_insn(), rtx_writer::print_rtx_operand_code_0(), purge_dead_edges(), redirect_jump_1(), redirect_jump_2(), relax_delay_slots(), reload_combine(), replace_label(), rtl_lv_add_condition_to_bb(), rtl_split_edge(), rtl_verify_edges(), set_edge_can_fallthru_flag(), rtx_jump_insn::set_jump_target(), set_return_jump_label(), steal_delay_list_from_fallthrough(), steal_delay_list_from_target(), tablejump_p(), try_merge_delay_insns(), try_optimize_cfg(), and try_redirect_by_replacing_jump().
#define JUMP_P | ( | X | ) |
Predicate yielding nonzero iff X is a jump insn.
Referenced by active_insn_p(), add_label_notes(), add_reg_br_prob_note(), add_test(), asan_clear_shadow(), bb_valid_for_noce_process_p(), block_jumps_and_fallthru(), bypass_conditional_jumps(), calculate_elim_costs_all_insns(), calculate_needs_all_insns(), can_combine_p(), can_predict_insn_p(), cfg_layout_can_merge_blocks_p(), cfg_layout_merge_blocks(), cfg_layout_redirect_edge_and_branch(), check_cond_move_block(), check_for_label_ref(), clear_hashed_info_until_next_barrier(), combine_and_move_insns(), commit_one_edge_insertion(), computed_jump_p(), cond_exec_find_if_block(), cond_move_convert_if_block(), contains_no_active_insn_p(), count_bb_insns(), create_preheader(), create_trace_edges(), cse_condition_code_reg(), cse_extended_basic_block(), curr_insn_transform(), dbr_schedule(), dead_or_predicable(), delete_address_reloads_1(), delete_from_delay_slot(), delete_insn(), delete_output_reload(), discover_loops(), distribute_notes(), doloop_optimize(), duplicate_insn_chain(), eh_returnjump_p(), emit_cmp_and_jump_insn_1(), end_ifcvt_sequence(), expand_addsub_overflow(), expand_builtin_longjmp(), expand_builtin_nonlocal_goto(), expand_gimple_basic_block(), expand_mul_overflow(), expand_neg_overflow(), ext_dce_process_bb(), fill_simple_delay_slots(), fill_slots_from_thread(), find_active_insn_after(), find_active_insn_before(), find_end_label(), find_if_case_1(), find_if_case_2(), find_invariant_insn(), find_jump_block(), find_many_sub_basic_blocks(), find_reloads(), first_active_insn(), fix_crossing_unconditional_branches(), fix_up_fall_thru_edges(), fixup_partition_crossing(), flow_find_head_matching_sequence(), follow_jumps(), force_nonfallthru_and_redirect(), forward_propagate_into(), get_condition(), get_jump_flags(), get_live_on_other_edges(), hash_scan_set(), hash_scan_set(), if_test_bypass_p(), indirect_jump_optimize(), inherit_in_ebb(), insert_insn_end_basic_block(), instantiate_virtual_regs_in_insn(), ira(), ira_nullify_asm_goto(), jump_to_label_p(), last_active_insn(), lra_asm_insn_error(), lra_process_new_insns(), make_epilogue_seq(), make_return_insns(), mark_all_labels(), mark_jump_label(), mark_set_resources(), mark_target_live_regs(), maybe_cleanup_end_of_block(), maybe_duplicate_computed_goto(), merge_if_block(), merge_in_block(), move_invariant_reg(), next_insn_no_annul(), noce_convert_multiple_sets(), onlyjump_p(), operand_to_remat(), outgoing_edges_match(), pc_set(), peep2_attempt(), prepare_call_address(), prepare_shrink_wrap(), rtx_writer::print_rtx_operand_code_0(), purge_dead_edges(), redirect_branch_edge(), redundant_insn(), relax_delay_slots(), reorder_basic_blocks_simple(), replace_label(), return_insn_p(), returnjump_p(), rtl_can_merge_blocks(), rtl_merge_blocks(), rtl_split_edge(), rtl_tidy_fallthru_edge(), rtl_verify_bb_layout(), rtl_verify_edges(), save_call_clobbered_regs(), scan_trace(), simplejump_or_return_p(), simplejump_p(), sjlj_emit_function_enter(), stack_protect_epilogue(), subst_reloads(), tablejump_p(), is_a_helper< const T * >::test(), is_a_helper< const T * >::test(), tidy_fallthru_edges(), try_combine(), try_merge_delay_insns(), try_optimize_cfg(), try_shrink_wrapping(), try_split(), update_br_prob_note(), and update_crossing_jump_flags().
#define JUMP_TABLE_DATA_P | ( | INSN | ) |
Predicate yielding nonzero iff X is a data for a jump table.
Referenced by active_insn_p(), calculate_elim_costs_all_insns(), calculate_needs_all_insns(), dbr_schedule(), delete_dead_jumptables(), delete_related_insns(), emit_pattern_after_setloc(), emit_pattern_before_setloc(), expand_gimple_basic_block(), final_scan_insn_1(), follow_jumps(), inside_basic_block_p(), mark_all_labels(), maybe_reset_location_view(), reemit_insn_block_notes(), replace_label(), rtl_verify_bb_layout(), shorten_branches(), skip_insns_after_block(), tablejump_p(), is_a_helper< const T * >::test(), is_a_helper< const T * >::test(), and is_a_helper< const T * >::test().
#define LABEL_ALT_ENTRY_P | ( | LABEL | ) |
Referenced by final_scan_insn_1(), find_bb_boundaries(), and make_edges().
#define LABEL_KIND | ( | LABEL | ) |
Retrieve the kind of LABEL.
Referenced by output_alternate_entry_point(), and rtx_writer::print_rtx().
#define LABEL_NAME | ( | RTX | ) |
The name of a label, in case it corresponds to an explicit label in the input source code.
Referenced by can_delete_label_p(), delete_insn(), expand_label(), final_scan_insn_1(), output_alternate_entry_point(), and rtl_tidy_fallthru_edge().
#define LABEL_NUSES | ( | RTX | ) |
In jump.cc, each label contains a count of the number of LABEL_REFs that point at it, so unused labels can be deleted.
Referenced by add_label_notes(), add_labels_and_missing_jumps(), add_test(), compare_and_jump_seq(), cse_insn(), dbr_schedule(), delete_dead_jumptables(), delete_insn(), delete_related_insns(), distribute_notes(), doloop_modify(), emit_delay_sequence(), fill_slots_from_thread(), find_cond_trap(), find_end_label(), find_reloads(), fix_crossing_unconditional_branches(), fixup_reorder_chain(), force_nonfallthru_and_redirect(), get_label_before(), init_label_info(), make_return_insns(), mark_jump_label_1(), mark_label_nuses(), own_thread_p(), patch_jump_insn(), rtx_writer::print_rtx(), rebuild_jump_labels_1(), redirect_jump_2(), relax_delay_slots(), replace_label(), rtl_lv_add_condition_to_bb(), and try_redirect_by_replacing_jump().
#define LABEL_P | ( | X | ) |
Predicate yielding nonzero iff X is a label insn.
Referenced by add_call_src_coords_attributes(), add_label_notes(), bb_note(), block_label(), calculate_elim_costs_all_insns(), calculate_needs_all_insns(), cfg_layout_delete_block(), cfg_layout_merge_blocks(), check_for_label_ref(), classify_insn(), clear_hashed_info_until_next_barrier(), commit_one_edge_insertion(), compute_alignments(), cond_exec_process_if_block(), const_ok_for_output_1(), create_basic_block_structure(), create_pseudo_cfg(), cselib_process_insn(), dead_or_predicable(), delete_address_reloads_1(), delete_dead_jumptables(), delete_insn(), delete_output_reload(), delete_related_insns(), distribute_notes(), emit_delay_sequence(), emit_libcall_block_1(), emit_moves(), expand_gimple_basic_block(), expand_gimple_tailcall(), fill_slots_from_thread(), find_basic_block(), find_bb_boundaries(), find_equiv_reg(), find_first_parameter_load(), find_jump_block(), find_rarely_executed_basic_blocks_and_crossing_edges(), find_reloads(), first_active_insn(), first_insn_after_basic_block_note(), flow_find_cross_jump(), for_each_eh_label(), free_resource_info(), get_label_before(), init_label_info(), init_resource_info(), insert_insn_end_basic_block(), insert_insn_start_basic_block(), insert_insn_start_basic_block(), label_before_next_insn(), label_for_bb(), last_active_insn(), lra_inheritance(), lra_process_new_insns(), make_edges(), make_label_edge(), mark_all_labels(), mark_jump_label_1(), mark_label_nuses(), mark_tablejump_edge(), mark_target_live_regs(), maybe_add_nop_after_section_switch(), no_labels_between_p(), output_asm_label(), own_thread_p(), rtx_writer::print_rtx_operand_code_u(), rebuild_jump_labels_1(), redundant_insn(), relink_block_chain(), reload_as_needed(), reload_combine(), reload_cse_move2add(), reload_cse_simplify_operands(), remove_barriers_from_footer(), reposition_prologue_and_epilogue_notes(), rest_of_clean_state(), reversed_comparison_code_parts(), rtl_merge_blocks(), rtl_verify_bb_insns(), rtx_referenced_p(), rtx_renumbered_equal_p(), save_point_p(), shorten_branches(), sjlj_emit_function_exit(), sjlj_mark_call_sites(), skip_consecutive_labels(), is_a_helper< const T * >::test(), is_a_helper< const T * >::test(), is_a_helper< const T * >::test(), try_crossjump_to_edge(), try_optimize_cfg(), and update_cfg_for_uncondjump().
#define LABEL_PRESERVE_P | ( | RTX | ) |
1 if RTX is a code_label that should always be considered to be needed.
Referenced by block_has_preserve_label(), can_delete_label_p(), delete_dead_jumptables(), dw2_build_landing_pads(), dw2_fix_up_crossing_landing_pad(), force_const_mem(), init_label_info(), label_rtx(), maybe_add_nop_after_section_switch(), sjlj_emit_dispatch_table(), sjlj_fix_up_crossing_landing_pad(), and try_optimize_cfg().
#define LABEL_REF_NONLOCAL_P | ( | RTX | ) |
1 if RTX is a label_ref for a nonlocal label.
Likewise in an expr_list for a REG_LABEL_OPERAND or REG_LABEL_TARGET note.
Referenced by add_label_notes(), check_for_label_ref(), convert_debug_memory_address(), convert_memory_address_addr_space_1(), cse_insn(), expand_expr_real_1(), mark_jump_label_1(), rtx_renumbered_equal_p(), and set_label_offsets().
#define LABEL_REF_P | ( | X | ) |
1 if X is a LABEL_REF.
#define LABEL_REFS | ( | LABEL | ) |
Once basic blocks are found, each CODE_LABEL starts a chain that goes through all the LABEL_REFs that jump to that label. The chain eventually winds up at the CODE_LABEL: it is circular.
#define LAST_VIRTUAL_POINTER_REGISTER ((FIRST_VIRTUAL_REGISTER) + 4) |
#define LAST_VIRTUAL_REGISTER ((FIRST_VIRTUAL_REGISTER) + 5) |
Referenced by addr_for_mem_ref(), addr_offset_valid_p(), can_vec_extract_var_idx_p(), can_vec_set_var_idx_p(), can_widen_mult_without_libcall(), canonicalize_comparison(), computation_cost(), compute_can_copy(), expand_builtin_apply_args(), expand_expr_real_1(), expand_mult(), get_address_cost_ainc(), init_caller_save(), init_eliminable_invariants(), init_emit(), init_expmed(), init_expr_target(), init_lower_subreg(), init_reload(), init_set_costs(), insn_predicate_matches_p(), instantiate_virtual_regs_in_insn(), lookup_reg_by_dump_name(), maybe_legitimize_operand_same_code(), mult_by_coeff_cost(), multiplier_allowed_in_address_p(), prefer_and_bit_test(), rtx_writer::print_rtx_operand_code_r(), reload(), reload_cse_regs_1(), and setup_prohibited_mode_move_regs().
#define LRA_SUBREG_P | ( | RTX | ) |
True if the subreg was generated by LRA for reload insns. Such subregs are valid only during LRA.
Referenced by emit_spill_move(), general_operand(), match_reload(), and simplify_operand_subreg().
#define MAX_COST INT_MAX |
Maximum cost of an rtl expression. This value has the special meaning not to use an rtx with this cost under any circumstances.
Referenced by approx_reg_cost(), cse_insn(), expand_ccmp_expr_1(), expand_shift_1(), init_costs_to_max(), merge_equiv_classes(), preferable(), and vect_synth_mult_by_constant().
#define MAX_SAVED_CONST_INT 64 |
Referenced by gen_exp(), gen_rtx_CONST_INT(), init_emit_once(), and simplify_tests().
#define MAY_HAVE_DEBUG_BIND_INSNS flag_var_tracking_assignments |
Nonzero if DEBUG_BIND_INSN_P may possibly hold.
Referenced by adjust_mems(), combine_and_move_insns(), compute_bb_dataflow(), dataflow_set_clear_at_call(), delete_trivially_dead_insns(), delete_unreachable_blocks(), dv_onepart_p(), emit_notes_for_changes(), expand_gimple_basic_block(), move_insn_for_shrink_wrap(), regstat_init_n_sets_and_refs(), reload(), rest_of_handle_ud_dce(), try_combine(), use_type(), vt_emit_notes(), vt_expand_loc(), vt_finalize(), vt_find_locations(), vt_init_cfa_base(), and vt_initialize().
#define MAY_HAVE_DEBUG_INSNS (MAY_HAVE_DEBUG_MARKER_INSNS || MAY_HAVE_DEBUG_BIND_INSNS) |
Nonzero if DEBUG_INSN_P may possibly hold.
Referenced by delete_vta_debug_insns(), pair_fusion_bb_info::fuse_pair(), set_new_first_and_last_insn(), pair_fusion::try_promote_writeback(), and variable_tracking_main_1().
#define MAY_HAVE_DEBUG_MARKER_INSNS debug_nonbind_markers_p |
Nonzero if DEBUG_MARKER_INSN_P may possibly hold.
Referenced by expand_gimple_basic_block(), final_scan_insn_1(), and rest_of_handle_final().
#define MEM_ADDR_SPACE | ( | RTX | ) |
For a MEM rtx, the address space.
Referenced by add_mem_for_addr(), canon_address(), change_address_1(), clear_storage_hints(), combine_simplify_rtx(), convert_mode_scalar(), cselib_lookup_mem(), curr_insn_transform(), decompose_mem_address(), emit_block_move_hints(), emit_move_insn(), exp_equiv_p(), expand_expr_real_1(), find_inc(), find_reloads(), find_reloads_address(), find_reloads_subreg_address(), find_split_point(), gen_lowpart_for_combine(), gen_lowpart_if_possible(), general_operand(), get_address_mode(), get_secondary_mem(), inv_can_prop_to_addr_use(), make_extraction(), may_alias_p(), noce_try_cmove_arith(), nonoverlapping_memrefs_p(), offsettable_memref_p(), offsettable_nonstrict_memref_p(), operand_subword(), operands_match_p(), rtx_writer::print_rtx(), push_reload(), record_operand_costs(), record_store(), reload(), replace_oldest_value_mem(), rtx_equal_p(), rtx_renumbered_equal_p(), scan_one_insn(), scan_rtx(), scan_rtx_address(), should_replace_address(), simple_move_operand(), simplify_operand_subreg(), simplify_shift_const_1(), simplify_context::simplify_subreg(), simplify_context::simplify_truncation(), simplify_context::simplify_unary_operation_1(), simplify_while_replacing(), store_expr(), true_dependence_1(), try_replace_in_use(), validate_autoinc_and_mem_addr_p(), validize_mem(), verify_changes(), and write_dependence_p().
#define MEM_ALIAS_SET | ( | RTX | ) |
For a MEM rtx, the alias set. If 0, this MEM is not in any alias set, and may alias anything. Otherwise, the MEM can only alias MEMs in a conflicting alias set. This value is set in a language-dependent manner in the front-end, and should not be altered in the back-end. These set numbers are tested with alias_sets_conflict_p.
Referenced by ao_ref_from_mem(), check_mem_read_rtx(), cse_insn(), get_alias_set(), may_alias_p(), mems_in_disjoint_alias_sets_p(), mems_same_for_tbaa_p(), merge_memattrs(), noce_try_cmove_arith(), rtx_writer::print_rtx(), read_dependence(), rtx_refs_may_alias_p(), safe_from_p(), set_mem_alias_set(), set_mem_attrs_for_spill(), store_constructor(), store_constructor_field(), store_field(), true_dependence_1(), and write_dependence_p().
#define MEM_ALIGN | ( | RTX | ) |
For a MEM rtx, the alignment in bits. We can use the alignment of the mode as a default when STRICT_ALIGNMENT, but not if not.
Referenced by adjust_bit_field_mem_for_reg(), alter_reg(), assign_parm_adjust_stack_rtl(), assign_parm_setup_reg(), assign_parm_setup_stack(), attempt_change(), clear_storage_hints(), copy_blkmode_from_reg(), emit_block_cmp_hints(), emit_block_move_hints(), emit_group_load_1(), emit_group_store(), emit_move_insn(), emit_push_insn(), expand_assignment(), expand_call(), expand_expr_real_1(), extract_fixed_bit_field(), extract_split_bit_field(), insert_restore(), insert_save(), load_register_parameters(), merge_memattrs(), noce_try_cmove_arith(), op_by_pieces_d::op_by_pieces_d(), optimize_bitfield_assignment_op(), prepare_cmp_insn(), rtx_writer::print_rtx(), simple_mem_bitfield_p(), simplify_operand_subreg(), simplify_context::simplify_subreg(), store_bit_field(), store_expr(), store_field(), store_fixed_bit_field(), store_split_bit_field(), store_unaligned_arguments_into_pseudos(), strict_volatile_bitfield_p(), and validate_subreg().
#define MEM_ATTRS | ( | RTX | ) |
The memory attribute block. We provide access macros for each value in the block and provide defaults if none specified.
Referenced by compute_bb_dataflow(), emit_notes_in_bb(), exp_equiv_p(), gen_rtx_MEM(), get_mem_attrs(), merge_memattrs(), reload(), set_mem_attributes_minus_bitpos(), set_mem_attrs(), and vt_get_decl_and_offset().
#define MEM_COPY_ATTRIBUTES | ( | LHS, | |
RHS ) |
Copy the attributes that apply to memory locations from RHS to LHS.
Referenced by change_address(), change_address_1(), emit_move_change_mode(), and reload().
#define MEM_EXPR | ( | RTX | ) |
For a MEM rtx, the decl it is known to refer to, if it is known to refer to part of a DECL. It may also be a COMPONENT_REF.
Referenced by add_stores(), ao_ref_from_mem(), assign_parm_find_stack_rtl(), check_mem_read_rtx(), cse_insn(), dataflow_set_preserve_mem_locs(), delegitimize_mem_from_attrs(), duplicate_insn_chain(), emit_block_op_via_libcall(), emit_call_1(), emit_library_call_value_1(), find_mem_expr_in_1pdv(), find_src_set_src(), find_src_status(), get_mem_align_offset(), get_mem_expr_from_op(), make_debug_expr_from_rtl(), mem_dies_at_call(), mems_same_for_tbaa_p(), merge_memattrs(), nonoverlapping_memrefs_p(), prepare_call_arguments(), rtx_writer::print_rtx(), record_store(), same_variable_part_p(), set_reg_attrs_for_parm(), set_reg_attrs_from_value(), set_rtl(), tls_mem_loc_descriptor(), pair_fusion_bb_info::track_via_mem_expr(), use_type(), var_mem_delete(), var_mem_delete_and_set(), var_mem_set(), and vt_get_decl_and_offset().
#define MEM_KEEP_ALIAS_SET_P | ( | RTX | ) |
1 if RTX is a mem and we should keep the alias set for this mem unchanged when we access a component. Set to 1, or example, when we are already in a non-addressable component of an aggregate.
Referenced by set_mem_attributes_minus_bitpos(), store_constructor(), store_constructor_field(), and store_field().
#define MEM_NOTRAP_P | ( | RTX | ) |
1 if RTX is a mem that cannot trap.
Referenced by assign_parm_setup_block(), assign_stack_local_1(), assign_stack_temp_for_type(), exp_equiv_p(), expand_builtin_init_descriptor(), expand_builtin_init_trampoline(), gen_const_mem(), gen_frame_mem(), gen_tmp_stack_mem(), get_spill_slot_decl(), may_trap_p_1(), merge_memattrs(), prepare_call_address(), prune_expressions(), reload(), set_mem_attributes_minus_bitpos(), and set_mem_attrs_for_spill().
#define MEM_OFFSET | ( | RTX | ) |
For a MEM rtx, the offset from the start of MEM_EXPR.
Referenced by ao_ref_from_mem(), assign_parm_find_stack_rtl(), assign_parm_setup_stack(), delegitimize_mem_from_attrs(), get_mem_align_offset(), int_mem_offset(), merge_memattrs(), nonoverlapping_memrefs_p(), rtx_writer::print_rtx(), set_reg_attrs_from_value(), tls_mem_loc_descriptor(), and pair_fusion_bb_info::track_via_mem_expr().
#define MEM_OFFSET_KNOWN_P | ( | RTX | ) |
For a MEM rtx, true if its MEM_OFFSET is known.
Referenced by ao_ref_from_mem(), assign_parm_find_stack_rtl(), assign_parm_setup_stack(), delegitimize_mem_from_attrs(), get_mem_align_offset(), int_mem_offset(), merge_memattrs(), nonoverlapping_memrefs_p(), rtx_writer::print_rtx(), set_reg_attrs_from_value(), tls_mem_loc_descriptor(), and pair_fusion_bb_info::track_via_mem_expr().
#define MEM_P | ( | X | ) |
Predicate yielding nonzero iff X is an rtx for a memory location.
Referenced by add_equal_note(), add_mem_for_addr(), add_store_equivs(), add_stores(), add_uses(), adjust_insn(), adjust_mem_stores(), adjust_mems(), allocate_initial_values(), alter_subreg(), insn_propagation::apply_to_lvalue_1(), asan_protect_global(), asm_operand_ok(), assemble_crc_table(), assemble_variable(), assign_parm_setup_block(), assign_parm_setup_reg(), assign_parm_setup_stack(), assign_parms(), autoinc_split(), avoid_complex_debug_insns(), bad_for_rematerialization_p(), baseness(), bbs_ok_for_cmove_arith(), break_out_memory_refs(), calculate_equiv_gains(), can_combine_p(), symtab_node::can_increase_alignment_p(), can_reload_into(), cancel_changes(), canon_list_insert(), canon_rtx(), canonicalize_insn(), change_address_1(), check_and_process_move(), check_argument_load(), check_dependence(), check_invalid_inc_dec(), check_mem_read_use(), choose_reload_regs(), cleanup_subreg_operands(), clobber_slot_part(), combinable_i3pat(), combine_simplify_rtx(), combine_stack_adjustments_for_block(), commutative_operand_precedence(), computation_cost(), compute_bb_dataflow(), compute_ld_motion_mems(), constrain_operands(), contains_mem_rtx_p(), convert_mode_scalar(), convert_modes(), copy_blkmode_from_reg(), copy_cost(), symtab_node::copy_visibility_from(), copyprop_hardreg_forward_1(), count_occurrences(), count_reg_usage(), cse_insn(), cse_process_note_1(), cselib_expand_value_rtx_1(), cselib_hash_rtx(), cselib_invalidate_mem(), cselib_invalidate_rtx(), cselib_lookup_1(), cselib_lookup_mem(), cselib_process_insn(), cselib_record_set(), cselib_record_sets(), cselib_redundant_set_p(), cst_pool_loc_descr(), curr_insn_transform(), decode_addr_const(), decompose_mem_address(), default_encode_section_info(), delegitimize_mem_from_attrs(), delete_address_reloads(), delete_output_reload(), df_uses_record(), do_input_reload(), do_local_cprop(), duplicate_insn_chain(), dw_loc_list_1(), dw_sra_loc_expr(), dwarf2out_frame_debug_cfa_expression(), dwarf2out_frame_debug_cfa_offset(), dwarf2out_frame_debug_def_cfa(), dwarf2out_frame_debug_expr(), eliminate_partially_redundant_loads(), eliminate_regs_1(), eliminate_regs_in_insn(), emit_block_cmp_hints(), emit_block_move_hints(), emit_group_load_1(), emit_group_store(), emit_library_call_value_1(), emit_move_change_mode(), emit_move_complex(), emit_move_insn(), emit_move_multi_word(), emit_note_insn_var_location(), emit_notes_in_bb(), emit_push_insn(), emit_reload_insns(), emit_spill_move(), emit_store_flag_1(), equiv_constant(), expand_abs(), expand_asm_stmt(), expand_assignment(), expand_atomic_compare_and_swap(), expand_builtin(), expand_builtin_goacc_parlevel_id_size(), expand_builtin_issignaling(), expand_builtin_prefetch(), expand_call(), expand_debug_expr(), expand_debug_parm_decl(), expand_divmod(), expand_expr_addr_expr_1(), expand_expr_real_1(), expand_expr_real_2(), expand_function_start(), expand_load_lanes_optab_fn(), expand_one_stack_var(), expand_one_var(), expand_partial_load_optab_fn(), expand_partial_store_optab_fn(), expand_store_lanes_optab_fn(), expand_used_vars(), expand_vector_ubsan_overflow(), ext_dce_process_sets(), extract_bit_field_1(), extract_bit_field_using_extv(), extract_fixed_bit_field(), extract_integral_bit_field(), extract_mem_from_operand(), final_scan_insn_1(), find_call_stack_args(), find_decomposable_subregs(), find_equiv_reg(), find_loads(), find_mem_conflicts(), find_mem_expr_in_1pdv(), find_memory(), find_memory_stores(), find_moveable_pseudos(), find_moveable_store(), find_reloads(), find_reloads_address(), find_reloads_address_1(), find_reloads_subreg_address(), find_split_point(), find_src_set_src(), find_src_status(), find_use_val(), for_each_inc_dec(), force_not_mem(), force_operand(), force_reg(), forward_propagate_and_simplify(), pair_fusion_bb_info::fuse_pair(), gen_array_type_die(), gen_highpart(), gen_lowpart_for_combine(), gen_lowpart_general(), gen_lowpart_if_possible(), gen_reload(), gen_reload_chain_without_interm_reg_p(), general_operand(), get_addr(), get_address_mode(), get_alias_set(), get_call_rtx_from(), get_fnname_from_decl(), get_last_value_validate(), get_mem_align_offset(), get_mem_expr_from_op(), get_pressure_class_and_nregs(), get_pressure_class_and_nregs(), hash_rtx(), hash_scan_set(), hash_scan_set(), immune_p(), in_class_p(), indirect_operand(), initialize_argument_information(), instantiate_decl_rtl(), internal_arg_pointer_based_exp(), inv_can_prop_to_addr_use(), invalidate_any_buried_refs(), invalidate_dest(), invalidate_from_clobbers(), invariant_p(), ira_setup_alts(), layout_decl(), load_modified_by_store_p(), loc_cmp(), loc_list_from_tree_1(), lra_constraints(), lra_eliminate_regs_1(), lra_update_insn_regno_info(), make_compound_operation_int(), make_debug_expr_from_rtl(), symtab_node::make_decl_local(), make_decl_rtl(), make_extraction(), make_field_assignment(), make_safe_from(), mark_referenced_resources(), mark_used_regs_combine(), mark_weak(), match_asm_constraints_1(), maybe_clear_subreg_promoted_p(), maybe_legitimize_operand_same_code(), mem_autoinc_base(), mem_loc_descriptor(), memory_modified_1(), memory_operand(), mems_conflict_for_gcse_p(), mems_same_for_tbaa_p(), move_deaths(), noce_emit_move_insn(), noce_operand_ok(), noce_process_if_block(), noce_try_abs(), noce_try_cmove_arith(), non_mem_decl_p(), nonoverlapping_memrefs_p(), nonzero_bits1(), note_reg_elim_costly(), note_uses(), notice_stack_pointer_modification_1(), num_sign_bit_copies1(), offsettable_memref_p(), offsettable_nonstrict_memref_p(), operand_subword(), optimize_bitfield_assignment_op(), optimize_one_addr_into_implicit_ptr(), place_block_symbol(), pop_operand(), prepare_call_arguments(), preserve_temp_slots(), process_address_1(), process_alt_operands(), pair_fusion::process_block(), process_set_for_memref_referenced_p(), prune_expressions(), push_operand(), push_reload(), read_complex_part(), record_dead_and_set_regs_1(), record_last_set_info(), record_last_set_info(), record_operand_costs(), record_reg_classes(), record_store(), refers_to_mem_for_reload_p(), reg_overlap_mentioned_for_reload_p(), reg_overlap_mentioned_p(), reg_referenced_p(), reg_scan_mark_refs(), reg_set_p(), register_operand(), reload(), reload_as_needed(), reload_combine_note_store(), reload_cse_move2add_invalidate(), reload_cse_simplify_operands(), reload_cse_simplify_set(), replace_expr_with_values(), resolve_simple_move(), reverse_op(), rtl_for_decl_init(), rtl_for_decl_location(), rtx_equal_for_cselib_1(), rtx_equal_for_field_assignment_p(), safe_from_p(), same_variable_part_p(), satisfies_memory_constraint_p(), scan_insn(), scan_one_insn(), set_noop_p(), set_of_1(), set_parm_rtl(), set_reg_attrs_from_value(), set_rtl(), set_slot_part(), setup_reg_equiv(), simple_mem_bitfield_p(), simple_move_operand(), simplify_compare_const(), simplify_comparison(), simplify_operand_subreg(), simplify_set(), simplify_context::simplify_subreg(), simplify_context::simplify_truncation(), simplify_while_replacing(), stack_memref_p(), store_bit_field(), store_bit_field_1(), store_bit_field_using_insv(), store_constructor(), store_constructor_field(), store_data_bypass_p_1(), store_expr(), store_field(), store_fixed_bit_field(), store_integral_bit_field(), store_killed_in_pat(), store_one_arg(), store_split_bit_field(), store_unaligned_arguments_into_pseudos(), strict_volatile_bitfield_p(), string_cst_pool_decl(), subst(), swap_change(), track_expr_p(), try_apply_stack_adjustment(), try_combine(), pair_fusion::try_promote_writeback(), try_replace_reg(), rtx_properties::try_to_add_dest(), unmentioned_reg_p(), unshare_variable(), update_equiv_regs(), use_anchored_address(), use_type(), val_bind(), valid_address_p(), valid_base_or_index_term_p(), validate_autoinc_and_mem_addr_p(), validate_change_1(), validate_equiv_mem_from_store(), validate_subreg(), validize_mem(), var_lowpart(), variable_union(), verify_changes(), vt_add_function_parameter(), vt_get_decl_and_offset(), and write_complex_part().
#define MEM_POINTER | ( | RTX | ) |
1 if RTX is a mem that holds a pointer value.
Referenced by baseness(), commutative_operand_precedence(), force_not_mem(), force_reg(), set_mem_attributes_minus_bitpos(), and set_reg_attrs_from_value().
#define MEM_READONLY_P | ( | RTX | ) |
1 if RTX is a mem that is statically allocated in read-only memory.
Referenced by add_const_value_attribute(), adjust_insn(), check_maybe_invariant(), check_mem_read_rtx(), compute_transp(), cse_insn(), cselib_record_sets(), equiv_init_varies_p(), find_memory(), forward_propagate_and_simplify(), gen_const_mem(), get_last_value_validate(), hash_rtx(), ira_equiv_no_lvalue_p(), ira_update_equiv_info_by_shuffle_insn(), load_killed_in_block_p(), lra_constraints(), mark_referenced_resources(), may_alias_p(), merge_memattrs(), modified_between_p(), modified_in_p(), non_suitable_const(), prune_expressions(), rtl_for_decl_init(), rtx_moveable_p(), rtx_unstable_p(), rtx_varies_p(), set_mem_attributes_minus_bitpos(), subst(), true_dependence_1(), pair_fusion_bb_info::try_fuse_pair(), rtx_properties::try_to_add_src(), validate_equiv_mem(), and write_dependence_p().
#define MEM_SIZE | ( | RTX | ) |
For a MEM rtx, the size in bytes of the MEM.
Referenced by ao_ref_from_mem(), check_argument_load(), cselib_invalidate_mem(), dw_sra_loc_expr(), extract_bit_field_1(), find_call_stack_args(), may_trap_p_1(), merge_memattrs(), nonoverlapping_memrefs_p(), rtx_writer::print_rtx(), record_store(), store_bit_field_1(), and track_expr_p().
#define MEM_SIZE_KNOWN_P | ( | RTX | ) |
For a MEM rtx, true if its MEM_SIZE is known.
Referenced by ao_ref_from_mem(), check_argument_load(), cselib_invalidate_mem(), find_call_stack_args(), may_trap_p_1(), merge_memattrs(), nonoverlapping_memrefs_p(), rtx_writer::print_rtx(), record_store(), and track_expr_p().
#define MEM_VOLATILE_P | ( | RTX | ) |
1 if RTX is a mem or asm_operand for a volatile reference.
Referenced by adjust_bit_field_mem_for_reg(), assign_stack_temp_for_type(), can_combine_p(), check_maybe_invariant(), check_mem_read_rtx(), combine_simplify_rtx(), convert_mode_scalar(), convert_modes(), cselib_hash_rtx(), cselib_lookup_mem(), eliminate_partially_redundant_loads(), emit_block_move_hints(), emit_stack_probe(), emit_store_flag_1(), equiv_init_movable_p(), equiv_init_varies_p(), exp_equiv_p(), expand_abs(), expand_asm_loc(), expand_asm_memory_blockage(), expand_asm_reg_clobber_mem_blockage(), expand_asm_stmt(), expand_assignment(), expand_constructor(), expand_divmod(), expand_expr_real_1(), expand_expr_real_2(), extract_fixed_bit_field(), find_equiv_reg(), find_memory(), find_memory_stores(), find_moveable_store(), gen_blockage(), gen_lowpart_for_combine(), general_operand(), get_builtin_sync_mem(), hash_rtx(), make_extraction(), mark_referenced_resources(), mark_set_resources(), may_alias_p(), may_trap_p_1(), merge_memattrs(), need_fake_edge_p(), noce_try_cmove_arith(), prune_expressions(), read_dependence(), record_store(), rtx_moveable_p(), rtx_unstable_p(), rtx_varies_p(), set_mem_attributes_minus_bitpos(), side_effects_p(), simple_mem(), simple_move_operand(), simplify_compare_const(), simplify_shift_const_1(), simplify_context::simplify_subreg(), simplify_context::simplify_truncation(), simplify_context::simplify_unary_operation_1(), simplify_while_replacing(), store_bit_field(), store_fixed_bit_field(), strict_volatile_bitfield_p(), pair_fusion_bb_info::track_access(), true_dependence_1(), rtx_properties::try_to_add_src(), volatile_insn_p(), volatile_refs_p(), and write_dependence_p().
#define mode_mem_attrs (this_target_rtl->x_mode_mem_attrs) |
#define NON_COMMUTATIVE_P | ( | X | ) |
1 if X is a non-commutative operator.
Referenced by rtx_equal_for_memref_p(), and rtx_renumbered_equal_p().
#define NONDEBUG_INSN_P | ( | X | ) |
Predicate yielding nonzero iff X is an insn that is not a debug insn.
Referenced by add_copies(), add_next_usage_insn(), average_num_loop_insns(), bb_is_just_return(), find_comparison_dom_walker::before_dom_children(), build_def_use(), build_insn_chain(), build_store_vectors(), calculate_bb_reg_pressure(), calculate_equiv_gains(), calculate_local_reg_remat_bb_data(), calculate_loop_reg_pressure(), can_dup_for_shrink_wrapping(), can_merge_compare_into_arith(), can_move_insns_across(), cant_combine_insn_p(), check_cond_move_block(), check_rtl(), collect_fn_hard_reg_usage(), combine_instructions(), combine_reload_insn(), compute_hash_table_work(), compute_hash_table_work(), compute_ld_motion_mems(), compute_regs_asm_clobbered(), compute_store_table(), cond_move_convert_if_block(), copyprop_hardreg_forward_1(), create_bb_allocnos(), create_cands(), create_log_links(), cse_extended_basic_block(), dead_or_predicable(), delete_insn_and_edges(), delete_move_and_clobber(), delete_unmarked_insns(), df_insn_delete(), df_lr_bb_local_compute(), df_simulate_one_insn_backwards(), df_word_lr_bb_local_compute(), discover_loops(), distribute_notes(), do_remat(), emit_copy_of_insn_after(), emit_moves(), emit_to_new_bb_before(), ext_dce_process_bb(), find_call_crossed_cheap_reg(), find_call_stack_args(), find_invariants_bb(), find_moveable_pseudos(), find_removable_extensions(), find_single_use(), fixup_args_size_notes(), fixup_reorder_chain(), flow_find_cross_jump(), flow_find_head_matching_sequence(), free_insn_recog_data(), get_last_insertion_point(), get_some_local_dynamic_name(), hoist_code(), inherit_in_ebb(), inherit_reload_reg(), init_alias_analysis(), init_eliminable_invariants(), init_elimination(), init_subregs_of_mode(), initialize_uninitialized_regs(), lra_update_insn_regno_info(), make_more_copies(), mark_all_labels(), maybe_clear_subreg_promoted_p(), memref_used_between_p(), merge_in_block(), multiple_insn_refs_p(), new_insn_reg(), next_real_nondebug_insn(), noce_convert_multiple_sets_1(), num_loop_insns(), peep2_attempt(), peephole2_optimize(), prepare_shrink_wrap(), prescan_insns_for_dce(), prev_real_nondebug_insn(), print_rtl_with_bb(), process_bb_lives(), process_bb_node_for_hard_reg_moves(), process_bb_node_lives(), reg_used_between_p(), regstat_bb_compute_calls_crossed(), regstat_bb_compute_ri(), reload_combine(), remove_inheritance_pseudos(), remove_reachable_equiv_notes(), replace_store_insn(), reset_subreg_promoted_p(), rtl_block_empty_p(), rtl_split_block_before_cond_jump(), rtl_tidy_fallthru_edge(), rtl_verify_fallthru(), save_call_clobbered_regs(), scan_loop(), scan_one_insn(), seq_cost(), split_live_ranges_for_shrink_wrap(), split_reg(), store_killed_in_insn(), thread_prologue_and_epilogue_insns(), try_combine(), try_head_merge_bb(), try_shrink_wrapping(), unique_locus_on_edge_between_p(), update_bb_reg_pressure(), update_ebb_live_info(), update_equiv_regs_prescan(), update_inc_notes(), and walk_to_nondebug_insn().
#define NONJUMP_INSN_P | ( | X | ) |
Predicate yielding nonzero iff X is an insn that cannot jump.
Referenced by active_insn_p(), arithmetic_flags_clobber_p(), bypass_conditional_jumps(), can_merge_compare_into_arith(), can_throw_external(), canonicalize_condition(), cheap_bb_rtx_cost_p(), cond_exec_process_insns(), constprop_register(), contains(), convert_to_eh_region_ranges(), copyprop_hardreg_forward_1(), dbr_schedule(), deletable_insn_p(), delete_output_reload(), delete_prior_computation(), do_output_reload(), eliminate_partially_redundant_loads(), emit_input_reload_insns(), fill_simple_delay_slots(), fill_slots_from_thread(), find_active_insn_after(), find_active_insn_before(), find_end_label(), find_equiv_reg(), find_reloads_address_1(), find_split_point(), fixup_abnormal_edges(), forward_propagate_into(), free_load_extend(), get_eh_region_and_lp_from_rtx(), get_first_nonnote_insn(), get_last_nonnote_insn(), insert_insn_end_basic_block(), insn_nothrow_p(), insn_valid_noce_process_p(), last_active_insn(), leaf_function_p(), likely_spilled_retval_p(), link_insn_into_chain(), lra_final_code_change(), make_return_insns(), mark_target_live_regs(), merge_if_block(), next_insn(), next_insn_no_annul(), noce_process_if_block(), optimize_skip(), own_thread_p(), previous_insn(), purge_dead_edges(), redundant_insn(), relax_delay_slots(), reload(), reload_as_needed(), remove_insn(), rest_of_clean_state(), return_insn_p(), scan_trace(), shorten_branches(), single_set_for_csa(), is_a_helper< const T * >::test(), try_back_substitute_reg(), try_combine(), try_merge_delay_insns(), try_split(), and update_equiv_regs().
#define NOOP_MOVE_INSN_CODE INT_MAX |
Value used by some passes to "recognize" noop moves as valid instructions.
Referenced by noop_move_p(), and recog_for_combine_1().
#define NOTE_BASIC_BLOCK | ( | INSN | ) |
#define NOTE_BLOCK | ( | INSN | ) |
Referenced by change_scope(), final_scan_insn_1(), print_insn(), rtx_writer::print_rtx_operand_code_0(), reemit_insn_block_notes(), and reorder_blocks_1().
#define NOTE_CFI | ( | INSN | ) |
Referenced by add_cfi(), add_cfis_to_fde(), connect_traces(), final_scan_insn_1(), and rtx_writer::print_rtx_operand_code_0().
#define NOTE_DATA | ( | INSN | ) |
In a NOTE that is a line number, this is a string for the file name that the line is in. We use the same field to record block numbers temporarily in NOTE_INSN_BLOCK_BEG and NOTE_INSN_BLOCK_END notes. (We avoid lots of casts between ints and pointers if we use a different macro for the block number.)
Opaque data.
Referenced by emit_note_copy(), and make_note_raw().
#define NOTE_DELETED_LABEL_NAME | ( | INSN | ) |
Referenced by delete_insn(), delete_vta_debug_insn(), print_insn(), rtx_writer::print_rtx_operand_code_0(), and rtl_tidy_fallthru_edge().
#define NOTE_DURING_CALL_P | ( | RTX | ) |
1 if RTX is emitted after a call, but it should take effect before the call returns.
Referenced by emit_note_insn_var_location().
#define NOTE_EH_HANDLER | ( | INSN | ) |
Referenced by convert_to_eh_region_ranges(), final_scan_insn_1(), print_insn(), and rtx_writer::print_rtx_operand_code_0().
#define NOTE_INSN_BASIC_BLOCK_P | ( | INSN | ) |
Nonzero if INSN is a note marking the beginning of a basic block.
Referenced by _succ_iter_start(), add_insn_after(), add_insn_before(), bb_note(), cfg_layout_merge_blocks(), combine_var_copies_in_loop_exit(), commit_one_edge_insertion(), delete_dead_jumptables(), delete_insn(), delete_output_reload(), emit_moves(), first_insn_after_basic_block_note(), get_last_insertion_point(), insert_insn_end_basic_block(), insert_insn_start_basic_block(), insert_insn_start_basic_block(), lra_process_new_insns(), merge_if_block(), next_nonnote_nondebug_insn_bb(), old_insns_match_p(), outgoing_edges_match(), prev_nonnote_nondebug_insn_bb(), rtl_merge_blocks(), rtl_verify_bb_insns(), rtl_verify_bb_layout(), rtl_verify_fallthru(), sjlj_emit_function_enter(), and try_crossjump_to_edge().
#define NOTE_KIND | ( | INSN | ) |
In a NOTE that is a line number, this is the line number. Other kinds of NOTEs are identified by negative numbers here.
Referenced by add_call_src_coords_attributes(), add_cfis_to_fde(), add_high_low_attributes(), before_next_cfi_note(), can_delete_note_p(), can_move_insns_across(), cond_exec_process_insns(), connect_traces(), contains_deleted_insn_p(), convert_to_eh_region_ranges(), create_pseudo_cfg(), dbr_schedule(), delete_insn(), delete_vta_debug_insn(), duplicate_insn_chain(), emit_note_copy(), emit_note_insn_var_location(), final_1(), final_scan_insn_1(), final_start_function_1(), fixup_tail_calls(), flow_find_head_matching_sequence(), in_initial_view_p(), init_alias_analysis(), ira_restore_scratches(), make_edges(), make_note_raw(), mark_jump_label_1(), mark_target_live_regs(), maybe_add_nop_after_section_switch(), next_non_note_insn_var_location(), output_asm_label(), output_constant_pool_1(), print_insn(), rtx_writer::print_rtx_operand_code_0(), rtx_writer::print_rtx_operand_code_i(), rtx_writer::print_rtx_operand_code_u(), record_effective_endpoints(), reemit_insn_block_notes(), reload_cse_simplify_operands(), reorder_blocks_1(), reposition_prologue_and_epilogue_notes(), rest_of_clean_state(), rtl_tidy_fallthru_edge(), save_point_p(), scan_trace(), set_insn_deleted(), sjlj_emit_function_enter(), sjlj_mark_call_sites(), skip_insns_after_block(), switch_text_sections_between_p(), thread_prologue_and_epilogue_insns(), try_combine(), try_crossjump_to_edge(), try_shrink_wrapping(), and update_ebb_live_info().
#define NOTE_LABEL_NUMBER | ( | INSN | ) |
Referenced by add_cfis_to_fde(), and final_scan_insn_1().
#define NOTE_MARKER_LOCATION | ( | INSN | ) |
Referenced by final_scan_insn_1(), notice_source_line(), rtx_writer::print_rtx_operand_code_0(), reemit_insn_block_notes(), and reemit_marker_as_note().
#define NOTE_MARKER_P | ( | INSN | ) |
Nonzero if INSN is a debug nonbind marker note, for which NOTE_MARKER_LOCATION can be used.
Referenced by notice_source_line().
#define NOTE_P | ( | X | ) |
Predicate yielding nonzero iff X is a note insn.
Referenced by add_call_src_coords_attributes(), add_cfis_to_fde(), add_location_or_const_value_attribute(), add_var_loc_to_decl(), before_next_cfi_note(), build_insn_chain(), can_move_insns_across(), combine_instructions(), cond_exec_find_if_block(), cond_exec_process_if_block(), cond_exec_process_insns(), connect_traces(), construct_exit_block(), contains_deleted_insn_p(), convert_to_eh_region_ranges(), create_pseudo_cfg(), dbr_schedule(), dead_or_predicable(), delete_for_peephole(), delete_insn(), delete_insn_chain(), delete_related_insns(), discover_loops(), distribute_links(), dump_eh_tree(), dw_loc_list(), emit_input_reload_insns(), emit_note_insn_var_location(), equivalent_reg_at_start(), expand_debug_expr(), expand_function_start(), expand_gimple_basic_block(), final_1(), final_scan_insn_1(), final_start_function_1(), find_bb_boundaries(), find_end_label(), first_active_insn(), fixup_abnormal_edges(), fixup_tail_calls(), flow_find_head_matching_sequence(), get_first_nonnote_insn(), get_last_nonnote_insn(), init_alias_analysis(), ira_restore_scratches(), last_active_insn(), make_edges(), mark_jump_label_1(), mark_target_live_regs(), merge_if_block(), next_non_note_insn_var_location(), next_nonnote_insn(), next_nonnote_nondebug_insn(), next_nonnote_nondebug_insn_bb(), one_cprop_pass(), outgoing_edges_match(), output_asm_label(), output_constant_pool_1(), prev_nonnote_insn(), prev_nonnote_nondebug_insn(), prev_nonnote_nondebug_insn_bb(), print_rtl_with_bb(), rtx_writer::print_rtx_operand_code_0(), rtx_writer::print_rtx_operand_code_i(), rtx_writer::print_rtx_operand_code_u(), purge_dead_edges(), function_reader::read_rtx_operand_inL(), record_effective_endpoints(), reemit_insn_block_notes(), reload_as_needed(), reload_cse_simplify_operands(), remove_init_insns(), remove_insn(), reorder_blocks_1(), reposition_prologue_and_epilogue_notes(), rest_of_clean_state(), rtl_block_ends_with_call_p(), rtl_merge_blocks(), save_call_clobbered_regs(), save_point_p(), scan_trace(), shorten_branches(), sjlj_emit_function_enter(), sjlj_mark_call_sites(), skip_insns_after_block(), split_reg(), switch_text_sections_between_p(), is_a_helper< const T * >::test(), is_a_helper< const T * >::test(), is_a_helper< const T * >::test(), thread_prologue_and_epilogue_insns(), try_back_substitute_reg(), try_combine(), try_crossjump_to_edge(), try_shrink_wrapping(), and update_ebb_live_info().
#define NOTE_VAR_LOCATION | ( | INSN | ) |
Referenced by add_location_or_const_value_attribute(), dw_loc_list(), dw_sra_loc_expr(), emit_note_insn_var_location(), print_insn(), and rtx_writer::print_rtx_operand_code_0().
#define NOTE_VAR_LOCATION_DECL | ( | NOTE | ) |
Accessors for a NOTE_INSN_VAR_LOCATION.
Referenced by add_var_loc_to_decl().
#define NOTE_VAR_LOCATION_LOC | ( | NOTE | ) |
Referenced by add_location_or_const_value_attribute(), add_var_loc_to_decl(), dw_loc_list(), and dw_sra_loc_expr().
#define NOTE_VAR_LOCATION_STATUS | ( | NOTE | ) |
Referenced by add_var_loc_to_decl(), dw_loc_list(), and dw_sra_loc_expr().
#define NULL_RTVEC (rtvec) 0 |
Referenced by gen_rtvec(), gen_rtvec_v(), gen_rtvec_v(), and rtx_reader::read_rtx_operand().
#define NULL_RTX (rtx) 0 |
Referenced by add_args_size_note(), add_constraints(), add_equal_note(), add_insn_allocno_copies(), add_loc_list(), add_mask_else_and_len_args(), add_next_usage_insn(), add_pseudo_to_slot(), inchash::add_rtx(), add_store_equivs(), add_stores(), add_test(), add_var_loc_to_decl(), add_with_sets(), addr_for_mem_ref(), addr_offset_valid_p(), pieces_addr::adjust(), adjust_bit_field_mem_for_reg(), adjust_cleared_regs(), adjust_insn(), adjust_mem_stores(), adjust_mem_uses(), adjust_mems(), adjust_piece_list(), align_dynamic_address(), allocate_dynamic_stack_space(), alter_reg(), alter_subregs(), analyze_iv_to_split_insn(), anti_adjust_stack_and_probe(), anti_adjust_stack_and_probe_stack_clash(), anti_dependence(), any_uncondjump_p(), insn_propagation::apply_to_rvalue_1(), asan_clear_shadow(), asan_emit_stack_protection(), asan_memfn_rtl(), asm_labels_ok(), assemble_asm(), assign_by_spills(), assign_mem_slot(), assign_parm_adjust_entry_rtl(), assign_parm_is_stack_parm(), assign_parm_setup_block(), assign_parm_setup_reg(), assign_parms(), assign_parms_initialize_all(), assign_spill_hard_regs(), assign_stack_slot_num_and_sort_pseudos(), attr_rtx_1(), autoinc_split(), avoid_complex_debug_insns(), base_plus_disp_to_reg(), base_to_reg(), based_loc_descr(), bb_ok_for_noce_convert_multiple_sets(), bb_valid_for_noce_process_p(), block_jumps_and_fallthru(), block_move_libcall_safe_for_call_parm(), builtin_memset_gen_str(), calculate_equiv_gains(), calculate_loop_reg_pressure(), calculate_spill_cost(), calculate_table_based_CRC(), can_assign_to_reg_without_clobbers_p(), can_combine_p(), can_implement_as_sibling_call_p(), can_move_insns_across(), can_nonlocal_goto(), can_replace_by(), can_vec_perm_const_p(), can_widen_mult_without_libcall(), canon_address(), canonicalize_condition(), canonicalize_insn(), canonicalize_values_mark(), canonicalize_values_star(), cc_in_cond(), cfg_layout_split_edge(), change_regs(), check_and_process_move(), check_conflict_input_operands(), check_defs(), check_for_inc_dec(), check_for_inc_dec_1(), check_invalid_inc_dec(), check_secondary_memory_needed_p(), check_sibcall_argument_overlap(), check_sibcall_argument_overlap_1(), choose_reload_regs(), clear_storage_hints(), coalescable_pseudo_p(), collect_fn_hard_reg_usage(), combine_and_move_insns(), combine_instructions(), combine_reaching_defs(), combine_reg_notes(), combine_reload_insn(), combine_simplify_rtx(), combine_stack_adjustments_for_block(), compare_and_jump_seq(), compare_by_pieces(), computation_cost(), compute_bb_dataflow(), compute_frame_pointer_to_fb_displacement(), compute_hash_table_work(), compute_stack_clash_protection_loop_data(), compute_store_table(), cond_exec_get_condition(), cond_exec_process_if_block(), cond_move_convert_if_block(), condjump_label(), construct_piece_list(), contains_deleted_insn_p(), contains_reloaded_insn_p(), convert_memory_address_addr_space_1(), convert_mode_scalar(), convert_optab_libfunc(), convert_set_attr_alternative(), convert_to_eh_region_ranges(), copy_blkmode_from_reg(), copy_blkmode_to_reg(), copy_reg_eh_region_note_backward(), copy_reg_eh_region_note_forward(), copyprop_hardreg_forward_1(), count_reg_usage(), covers_regno_p(), cprop_jump(), create_call_lhs_operand(), create_new_chain(), create_new_invariant(), create_trace_edges(), cse_cc_succs(), cse_condition_code_reg(), cse_insn(), cse_process_note(), cse_process_note_1(), cselib_invalidate_mem(), cselib_record_sp_cfa_base_equiv(), cst_pool_loc_descr(), curr_insn_transform(), dead_debug_insert_temp(), dead_or_predicable(), dead_pseudo_p(), debug_lowpart_subreg(), pieces_addr::decide_autoinc(), decide_unroll_constant_iterations(), decompose(), decompose_multiword_subregs(), decompose_register(), decrease_live_ranges_number(), default_expand_builtin(), default_memtag_insert_random_tag(), default_memtag_set_tag(), delete_insn(), delete_output_reload(), delete_store(), delete_trivially_dead_insns(), delete_unmarked_insns(), df_find_single_def_src(), discover_loops(), distribute_and_simplify_rtx(), distribute_notes(), do_cmp_and_jump(), do_compare_and_jump(), do_compare_rtx_and_jump(), do_jump(), do_jump_by_parts_equality_rtx(), do_jump_by_parts_greater_rtx(), do_jump_by_parts_zero_rtx(), do_jump_if_equal(), do_local_cprop(), do_store_flag(), do_tablejump(), doloop_condition_get(), doloop_modify(), doloop_optimize(), duplicate_insn_chain(), duplicate_reg_note(), dw2_fix_up_crossing_landing_pad(), dw_loc_list(), dw_loc_list_1(), dw_sra_loc_expr(), dwarf2out_frame_debug_expr(), eliminate_partially_redundant_load(), eliminate_regs_1(), eliminate_regs_in_insn(), eliminate_regs_in_insn(), elimination_costs_in_insn(), emit_add2_insn(), emit_add3_insn(), emit_block_cmp_via_cmpmem(), emit_block_cmp_via_loop(), emit_block_move_via_loop(), emit_block_move_via_oriented_loop(), emit_block_op_via_libcall(), emit_call_1(), emit_conditional_add(), emit_conditional_move(), emit_conditional_move(), emit_conditional_move_1(), emit_conditional_neg_or_complement(), emit_copy_of_insn_after(), emit_cstore(), emit_debug_insn(), emit_group_load_1(), emit_group_store(), emit_insn(), emit_libcall_block_1(), emit_library_call(), emit_library_call(), emit_library_call(), emit_library_call(), emit_library_call(), emit_library_call_value_1(), emit_move_insn(), emit_move_list(), emit_move_via_integer(), emit_note_insn_var_location(), emit_notes_in_bb(), emit_output_reload_insns(), emit_pattern_after_noloc(), emit_pattern_after_setloc(), emit_pattern_before_noloc(), emit_pattern_before_setloc(), emit_push_insn(), emit_reload_insns(), emit_stack_clash_protection_probe_loop_end(), emit_stack_clash_protection_probe_loop_start(), emit_store_flag(), emit_store_flag_1(), emit_store_flag_force(), cselib_hasher::equal(), equiv_address_substitution(), equivalent_reg_at_start(), expand_abs(), expand_abs_nojump(), expand_absneg_bit(), expand_addsub_overflow(), expand_arith_overflow(), expand_arith_overflow_result_store(), expand_asan_emit_allocas_unpoison(), expand_asm_stmt(), expand_assignment(), expand_atomic_compare_and_swap(), expand_atomic_exchange(), expand_atomic_fetch_op(), expand_atomic_fetch_op_no_fallback(), expand_atomic_load(), expand_atomic_store(), expand_binop(), expand_binop_directly(), expand_BITINTTOFLOAT(), expand_builtin___clear_cache(), expand_builtin_adjust_descriptor(), expand_builtin_adjust_trampoline(), expand_builtin_alloca(), expand_builtin_apply(), expand_builtin_apply_args_1(), expand_builtin_atomic_compare_exchange(), expand_builtin_atomic_exchange(), expand_builtin_atomic_fetch_op(), expand_builtin_atomic_is_lock_free(), expand_builtin_atomic_load(), expand_builtin_atomic_store(), expand_builtin_bswap(), expand_builtin_bzero(), expand_builtin_cexpi(), expand_builtin_compare_and_swap(), expand_builtin_copysign(), expand_BUILTIN_EXPECT(), expand_builtin_extend_pointer(), expand_builtin_extract_return_addr(), expand_builtin_fabs(), expand_builtin_feclear_feraise_except(), expand_builtin_fegetround(), expand_builtin_fork_or_exec(), expand_builtin_frob_return_addr(), expand_builtin_goacc_parlevel_id_size(), expand_builtin_init_descriptor(), expand_builtin_init_trampoline(), expand_builtin_int_roundingfn(), expand_builtin_int_roundingfn_2(), expand_builtin_interclass_mathfn(), expand_builtin_issignaling(), expand_builtin_mathfn_3(), expand_builtin_mathfn_ternary(), expand_builtin_memcmp(), expand_builtin_memcpy(), expand_builtin_memmove(), expand_builtin_memory_chk(), expand_builtin_memory_copy_args(), expand_builtin_mempcpy(), expand_builtin_memset(), expand_builtin_memset_args(), expand_builtin_next_arg(), expand_builtin_nonlocal_goto(), expand_builtin_powi(), expand_builtin_prefetch(), expand_builtin_return_addr(), expand_builtin_set_thread_pointer(), expand_builtin_setjmp_setup(), expand_builtin_signbit(), expand_builtin_sincos(), expand_builtin_stpcpy(), expand_builtin_stpcpy_1(), expand_builtin_strcmp(), expand_builtin_strcpy(), expand_builtin_strlen(), expand_builtin_strncmp(), expand_builtin_strncpy(), expand_builtin_strnlen(), expand_builtin_strub_enter(), expand_builtin_strub_leave(), expand_builtin_strub_update(), expand_builtin_thread_pointer(), expand_builtin_trap(), expand_builtin_unop(), expand_builtin_va_copy(), expand_call(), expand_ccmp_expr(), expand_ccmp_expr_1(), expand_clrsb_using_clz(), expand_cmpstr(), expand_cmpstrn_or_cmpmem(), expand_compare_and_swap_loop(), expand_compound_operation(), expand_cond_expr_using_cmove(), expand_constructor(), expand_copysign(), expand_copysign_absneg(), expand_copysign_bit(), expand_crc_optab_fn(), expand_ctz(), expand_debug_expr(), expand_debug_locations(), expand_debug_parm_decl(), expand_debug_source_expr(), expand_DEFERRED_INIT(), expand_DIVMOD(), expand_divmod(), expand_DIVMODBITINT(), expand_doubleword_bswap(), expand_doubleword_clz_ctz_ffs(), expand_doubleword_divmod(), expand_doubleword_mod(), expand_doubleword_mult(), expand_doubleword_parity(), expand_doubleword_popcount(), expand_expr_addr_expr_1(), expand_expr_force_mode(), expand_expr_real_1(), expand_expr_real_2(), expand_ffs(), expand_fix(), expand_fixed_convert(), expand_float(), expand_fn_using_insn(), expand_function_end(), expand_function_start(), expand_gather_load_optab_fn(), expand_gimple_basic_block(), expand_gimple_stmt(), expand_gimple_stmt_1(), expand_GOACC_DIM_POS(), expand_GOACC_DIM_SIZE(), expand_GOMP_SIMT_ENTER_ALLOC(), expand_GOMP_SIMT_LANE(), expand_GOMP_SIMT_LAST_LANE(), expand_GOMP_SIMT_ORDERED_PRED(), expand_GOMP_SIMT_VOTE_ANY(), expand_GOMP_SIMT_XCHG_BFLY(), expand_GOMP_SIMT_XCHG_IDX(), expand_HWASAN_ALLOCA_UNPOISON(), expand_HWASAN_CHOOSE_TAG(), expand_HWASAN_MARK(), expand_HWASAN_SET_TAG(), expand_ifn_atomic_bit_test_and(), expand_ifn_atomic_compare_exchange(), expand_ifn_atomic_compare_exchange_into_call(), expand_ifn_atomic_op_fetch_cmp_0(), expand_load_lanes_optab_fn(), expand_loc(), expand_mem_thread_fence(), expand_misaligned_mem_ref(), expand_movstr(), expand_mul_overflow(), expand_MULBITINT(), expand_mult(), expand_mult_const(), expand_mult_highpart(), expand_mult_highpart_adjust(), expand_neg_overflow(), expand_normal(), expand_one_cmpl_abs_nojump(), expand_operands(), expand_parity(), expand_partial_load_optab_fn(), expand_partial_store_optab_fn(), expand_POPCOUNT(), expand_RAWMEMCHR(), expand_rotate_as_vec_perm(), expand_sdiv_pow2(), expand_shift_1(), expand_single_bit_test(), expand_smod_pow2(), expand_SPACESHIP(), expand_speculation_safe_value(), expand_stack_save(), expand_stack_vars(), expand_store_lanes_optab_fn(), expand_strided_load_optab_fn(), expand_twoval_binop_libfunc(), expand_UADDC(), expand_ubsan_result_store(), expand_UNIQUE(), expand_unop(), expand_unop_direct(), expand_used_vars(), expand_vec_cond_mask_optab_fn(), expand_vec_perm_1(), expand_vec_perm_const(), expand_vec_perm_var(), expand_vec_set_optab_fn(), expand_vector_broadcast(), expand_vector_ubsan_overflow(), expand_while_optab_fn(), expmed_mult_highpart_optab(), expr_size(), ext_dce_process_bb(), ext_dce_process_sets(), ext_dce_process_uses(), extract_ashift_operands_p(), extract_bit_field_as_subreg(), extract_bit_field_using_extv(), extract_integral_bit_field(), extract_left_shift(), extract_low_bits(), extract_split_bit_field(), extract_writebacks(), fill_eager_delay_slots(), fill_simple_delay_slots(), fill_slots_from_thread(), final_scan_insn_1(), find_active_insn_after(), find_active_insn_before(), find_base_term(), rtx_vector_builder::find_cached_value(), find_call_crossed_cheap_reg(), find_constant_src(), find_costs_and_classes(), find_equiv_reg(), find_if_case_1(), find_moveable_pseudos(), find_moveable_store(), find_oldest_value_reg(), find_operand(), find_pseudo_copy(), find_rarely_executed_basic_blocks_and_crossing_edges(), find_reg_offset_for_const(), find_reloads(), find_reloads_address(), find_reloads_address_1(), find_reloads_address_part(), find_reloads_subreg_address(), find_removable_extensions(), find_shift_sequence(), find_simple_exit(), find_split_point(), find_src_set_src(), compare_by_pieces_d::finish_mode(), first_insn_after_basic_block_note(), fix_crossing_conditional_branches(), fix_reg_equiv_init(), fixup_abnormal_edges(), fixup_args_size_notes(), fixup_debug_uses(), fixup_eh_region_note(), fixup_reorder_chain(), flip_storage_order(), fold_rtx(), follow_jumps(), force_const_mem(), force_int_to_mode(), force_move_args_size_note(), force_nonfallthru_and_redirect(), force_operand(), force_reg(), forward_propagate_and_simplify(), forward_propagate_into(), fp_setter_insn(), free_loop_data(), pair_fusion_bb_info::fuse_pair(), gcse_emit_move_after(), gen_addr_rtx(), gen_common_operation_to_reflect(), gen_cond_trap(), gen_label_rtx(), gen_lowpart_for_debug(), compare_by_pieces_d::generate(), move_by_pieces_d::generate(), get_base_reg(), get_biv_step_1(), get_builtin_sync_mem(), get_call_args(), get_call_fndecl(), get_call_rtx_from(), get_condition(), get_dynamic_stack_base(), get_dynamic_stack_size(), get_eh_region_and_lp_from_rtx(), get_equiv(), get_equiv_regno(), get_group_info(), get_hard_reg_initial_reg(), get_memory_rtx(), get_pattern_stats_1(), get_pressure_class_and_nregs(), get_reload_reg(), lra_autoinc_reload_context::get_reload_reg(), get_secondary_mem(), get_stored_val(), handle_common_deferred_options(), has_hard_reg_initial_val(), hash_scan_set(), hwasan_emit_prologue(), hwasan_emit_untag_frame(), hwasan_frame_base(), hwasan_get_frame_extent(), hwasan_record_frame_init(), in_list_p(), index_part_to_reg(), indirect_jump_optimize(), inherit_in_ebb(), inherit_reload_reg(), init_alias_analysis(), init_eliminable_invariants(), init_elimination(), init_emit_once(), init_emit_regs(), init_expr_target(), init_insn_rhs_dead_pseudo_p(), init_noce_multiple_sets_info(), initialize_lra_reg_info_element(), inline_expand_builtin_bytecmp(), inline_string_cmp(), insert_insn_end_basic_block(), insert_insn_on_edge(), insert_insn_start_basic_block(), insert_one_insn(), insert_restore(), insert_save(), insert_store(), insert_with_costs(), insn_invalid_p(), insn_propagation::insn_propagation(), insn_stack_adjust_offset_pre_post(), insns_have_identical_cfa_notes(), instantiate_new_reg(), instantiate_virtual_regs_in_insn(), internal_arg_pointer_based_exp(), internal_arg_pointer_based_exp_scan(), inv_can_prop_to_addr_use(), ira_equiv_no_lvalue_p(), ira_reuse_stack_slot(), ira_update_equiv_info_by_shuffle_insn(), is_cond_copy_insn(), is_dead_debug_insn(), iv_analyze_biv(), iv_analyze_def(), iv_analyze_expr(), iv_number_of_iterations(), label_before_next_insn(), latest_hazard_before(), layout_decl(), ldst_entry(), loc_descriptor_from_tree(), loc_equivalence_callback(), loc_list_for_address_of_addr_expr_of_indirect_ref(), loc_list_from_tree_1(), lookup_constant_def(), lra_assign(), lra_coalesce(), lra_constraints(), lra_create_live_ranges_1(), lra_create_new_reg(), lra_create_new_reg_with_unique_value(), lra_eliminate_regs_1(), lra_emit_add(), lra_emit_move(), lra_init_equiv(), lra_process_new_insns(), lra_set_insn_recog_data(), lra_spill(), lra_substitute_pseudo(), lra_undo_inheritance(), lra_update_insn_regno_info(), main(), make_compound_operation_int(), make_edges(), make_extraction(), make_field_assignment(), make_hard_regno_dead(), make_memloc(), make_object_dead(), make_reg_eh_region_note_nothrow_nononlocal(), make_return_insns(), match_pattern_2(), match_reload(), maybe_emit_atomic_exchange(), maybe_emit_atomic_test_and_set(), maybe_emit_compare_and_swap_exchange_loop(), maybe_emit_op(), maybe_emit_sync_lock_test_and_set(), maybe_emit_unop_insn(), maybe_merge_cfa_adjust(), maybe_mode_change(), maybe_move_args_size_note(), maybe_optimize_fetch_op(), maybe_optimize_mod_cmp(), maybe_optimize_pow2p_mod_cmp(), mem_loc_descriptor(), mem_might_overlap_already_clobbered_arg_p(), memory_address_addr_space(), move2add_note_store(), move2add_use_add2_insn(), move2add_use_add3_insn(), move_insn_for_shrink_wrap(), move_invariant_reg(), move_invariants(), multiple_reg_loc_descriptor(), multiplier_allowed_in_address_p(), native_decode_rtx(), native_decode_vector_rtx(), negate_rtx(), no_equiv(), noce_bbs_ok_for_cond_zero_arith(), noce_convert_multiple_sets_1(), noce_emit_cmove(), noce_emit_czero(), noce_emit_move_insn(), noce_emit_store_flag(), noce_find_if_block(), noce_get_condition(), noce_process_if_block(), noce_try_abs(), noce_try_addcc(), noce_try_bitop(), noce_try_cmove_arith(), noce_try_cond_zero_arith(), noce_try_minmax(), noce_try_sign_mask(), noce_try_store_flag_constants(), non_conflicting_reg_copy_p(), nonzero_bits(), num_sign_bit_copies(), operand_for_swap_move_operator(), rtx_writer::operand_has_default_value_p(), insn_gen_fn::operator()(), optab_libfunc(), optimize_bitfield_assignment_op(), optimize_one_addr_into_implicit_ptr(), output_asm_insn(), output_constant(), output_dependence(), output_operand(), output_ttype(), patch_jump_insn(), pattern_cost(), pc_set(), peep2_attempt(), peep2_find_free_register(), peep2_reg_dead_p(), peep2_regno_dead_p(), pieces_addr::pieces_addr(), pre_edge_insert(), pre_insert_copy_insn(), prepare_call_address(), prepare_call_arguments(), prepare_cmp_insn(), prepare_decl_rtl(), prepare_float_lib_cmp(), compare_by_pieces_d::prepare_mode(), prepare_operand(), print_exp(), print_rtl_with_bb(), probe_stack_range(), process_address_1(), process_alt_operands(), process_bb_lives(), process_bb_node_for_hard_reg_moves(), process_bb_node_lives(), process_invariant_for_inheritance(), process_pending_assemble_externals(), process_regs_for_copy(), propagate_for_debug_subst(), push_insns(), push_reload(), read_complex_part(), rtx_reader::read_nested_rtx(), rtx_reader::read_rtx_operand(), recog_for_combine_1(), record_dead_and_set_regs(), record_dead_and_set_regs_1(), record_jump_cond(), record_jump_equiv(), record_operand_costs(), record_set(), record_store(), redirect_jump_1(), redirect_jump_2(), redirect_target(), redundant_insn(), reg_loc_descriptor(), reg_saved_in(), reg_set_p(), regno_use_in(), regno_val_use_in(), regrename_do_replace(), relational_result(), reload(), reload_as_needed(), reload_combine(), reload_combine_note_use(), reload_combine_recognize_const_pattern(), reload_combine_recognize_pattern(), reload_cse_move2add(), reload_cse_move2add_invalidate(), reload_cse_regs_1(), reload_cse_simplify(), reload_reg_free_for_value_p(), reload_reg_reaches_end_p(), remove_inheritance_pseudos(), remove_note(), remove_pseudos(), replace_dead_reg(), replace_read(), resolve_clobber(), resolve_reg_notes(), resolve_shift_zext(), resolve_simple_move(), rest_of_clean_state(), reverse_equiv_p(), reverse_op(), reversed_comparison(), reversed_condition(), round_push(), rtl_for_decl_init(), rtl_for_decl_location(), rtl_force_nonfallthru(), rtl_lv_add_condition_to_bb(), rtl_redirect_edge_and_branch_force(), rtl_verify_bb_insn_chain(), rtl_verify_edges(), rtx_equal_for_cselib_1(), op_by_pieces_d::run(), scan_insn(), scan_one_insn(), scan_reads(), sel_bb_empty_or_nop_p(), set_dst_reg_note(), set_for_reg_notes(), set_of(), set_stack_check_libfunc(), set_storage_via_libcall(), set_unique_reg_note(), set_user_assembler_name(), setup_live_pseudos_and_spill_after_risky_transforms(), setup_reg_equiv(), setup_regno_cost_classes_by_aclass(), setup_save_areas(), shift_amt_for_vec_perm_mask(), shorten_branches(), simple_move(), simple_move_p(), simplify_and_const_int_1(), simplify_context::simplify_associative_operation(), simplify_context::simplify_binary_operation(), simplify_context::simplify_binary_operation_1(), simplify_context::simplify_binary_operation_series(), simplify_context::simplify_byte_swapping_operation(), simplify_comparison(), simplify_context::simplify_cond_clz_ctz(), simplify_const_binary_operation(), simplify_const_relational_operation(), simplify_const_unary_operation(), simplify_const_vector_subreg(), simplify_context::simplify_distributive_operation(), simplify_context::simplify_gen_subreg(), simplify_gen_subreg_concatn(), simplify_if_then_else(), simplify_immed_subreg(), simplify_context::simplify_merge_mask(), simplify_operand_subreg(), simplify_context::simplify_plus_minus(), simplify_context::simplify_relational_operation(), simplify_context::simplify_relational_operation_1(), simplify_rotate_op(), simplify_set(), simplify_shift_const_1(), simplify_context::simplify_subreg(), simplify_subreg_concatn(), simplify_context::simplify_ternary_operation(), simplify_context::simplify_truncation(), simplify_using_initial_values(), simplify_while_replacing(), single_reg_class(), single_reg_operand_class(), single_set(), single_set_2(), single_set_for_csa(), sjlj_emit_function_enter(), sjlj_fix_up_crossing_landing_pad(), skip_usage_debug_insns(), spill_pseudos(), spill_pseudos(), split_all_insns(), split_if_necessary(), split_reg(), st_expr_entry(), stack_protect_epilogue(), std_expand_builtin_va_start(), store_by_pieces_d::store_by_pieces_d(), store_expr(), store_field(), store_fixed_bit_field_1(), store_integral_bit_field(), store_killed_after(), store_one_arg(), store_split_bit_field(), store_unaligned_arguments_into_pseudos(), substitute(), suitable_set_for_replacement(), tablejump_casesi_pattern(), tablejump_p(), target_supports_divmod_p(), true_dependence(), true_dependence_1(), try_apply_stack_adjustment(), try_back_substitute_reg(), try_casesi(), try_combine(), try_const_anchors(), try_crossjump_to_edge(), try_emit_cmove_seq(), pair_fusion_bb_info::try_fuse_pair(), try_fwprop_subst_pattern(), try_head_merge_bb(), pair_fusion::try_promote_writeback(), try_replace_in_use(), try_split(), try_store_by_multiple_pieces(), rtx_properties::try_to_add_insn(), try_validate_parallel(), undo_optional_reloads(), unroll_loop_constant_iterations(), unroll_loop_runtime_iterations(), update_alignments(), update_br_prob_note(), update_ebb_live_info(), update_equiv(), update_equiv_regs(), update_nonlocal_goto_save_area(), update_rsp_from_reg_equal(), uses_hard_regs_p(), val_bind(), val_resolve(), validate_pattern(), variable_merge_over_cur(), vector_compare_rtx(), verify_changes(), vt_init_cfa_base(), vt_initialize(), widen_bswap(), widen_leading(), and write_dependence_p().
#define NUM_RTX_CODE ((int) LAST_AND_UNUSED_RTX_CODE) |
The cast here, saves many elsewhere.
#define OBJECT_P | ( | X | ) |
1 if X can be used to represent an object.
Referenced by apply_distributive_law(), avoid_complex_debug_insns(), combine_simplify_rtx(), commutative_operand_precedence(), find_reloads(), find_split_point(), gen_reload(), make_compound_operation_int(), noce_emit_move_insn(), simple_move_operand(), simplify_if_then_else(), simplify_set(), strip_address_mutations(), and subst().
#define ORIGINAL_REGNO | ( | RTX | ) |
ORIGINAL_REGNO holds the number the register originally had; for a pseudo register turned into a hard reg this will hold the old pseudo register number.
Referenced by allocnos_conflict_by_live_ranges_p(), assign_by_spills(), build_def_use(), cleanup_auto_inc_dec(), combine_reloads(), copy_insn_1(), copy_rtx(), copy_rtx_if_shared_1(), copyprop_hardreg_forward_1(), df_ref_record(), find_dummy_reload(), find_oldest_value_reg(), fix_reg_equiv_init(), inherit_in_ebb(), init_raw_REG(), ira_create_new_reg(), lra_coalesce(), lra_create_new_reg_with_unique_value(), lra_emit_move(), make_decl_rtl(), output_asm_operand_names(), rtx_writer::print_rtx_operand_code_r(), process_alt_operands(), push_reload(), rtx_reader::read_rtx_operand(), function_reader::read_rtx_operand_r(), record_out_operands(), regrename_do_replace(), reload_cse_simplify_set(), setup_preferred_alternate_classes_for_new_pseudos(), simplify_context::simplify_subreg(), track_loc_p(), and verify_rtx_sharing().
#define PAT_VAR_LOCATION_DECL | ( | PAT | ) |
Variable declaration and the location of a variable.
Referenced by compute_bb_dataflow(), dw_loc_list_1(), emit_notes_in_bb(), rtx_writer::print_rtx(), and use_type().
#define PAT_VAR_LOCATION_LOC | ( | PAT | ) |
Referenced by add_uses(), compute_bb_dataflow(), df_uses_record(), dw_loc_list_1(), dw_sra_loc_expr(), emit_notes_in_bb(), expand_gimple_basic_block(), loc_descriptor(), print_pattern(), rtx_writer::print_rtx(), and use_type().
#define PAT_VAR_LOCATION_STATUS | ( | PAT | ) |
Initialization status of the variable in the location. Status can be unknown, uninitialized or initialized. See enumeration type below.
Referenced by gen_rtx_VAR_LOCATION(), and rtx_writer::print_rtx().
#define pic_offset_table_rtx (this_target_rtl->x_pic_offset_table_rtx) |
Referenced by change_loop(), const_or_frame_p(), deletable_insn_p(), delete_trivially_dead_insns(), do_reload(), expand_builtin_nonlocal_goto(), expand_used_vars(), find_base_term(), find_costs_and_classes(), force_operand(), gen_rtx_REG(), hash_rtx(), init_emit_regs(), initialize_uninitialized_regs(), ira_subloop_allocnos_can_differ_p(), lra_constraints(), must_not_spill_p(), nonzero_address_p(), offset_address(), process_bb_lives(), process_bb_node_lives(), rtx_addr_can_trap_p_1(), rtx_unstable_p(), rtx_varies_p(), scan_one_insn(), setup_live_pseudos_and_spill_after_risky_transforms(), split_live_ranges_for_shrink_wrap(), try_shrink_wrapping(), and update_ebb_live_info().
#define PREFETCH_SCHEDULE_BARRIER_P | ( | RTX | ) |
True if RTX is flagged to be a scheduling barrier.
#define PUT_CODE | ( | RTX, | |
CODE ) |
Referenced by apply_code_iterator(), canonicalize_address_mult(), canonicalize_reload_addr(), create_block_symbol(), cse_insn(), decompose_register(), delete_insn(), delete_vta_debug_insn(), generate_match_dup(), new_cselib_val(), process_rtx(), rtx_reader::read_rtx_code(), reload(), rtl_tidy_fallthru_edge(), rtx_init(), set_insn_deleted(), and shift_cost().
#define PUT_MODE_RAW | ( | RTX, | |
MODE ) |
Referenced by new_cselib_val(), PUT_MODE(), rtx_reader::read_rtx_code(), and set_mode_and_regno().
#define PUT_NUM_ELEM | ( | RTVEC, | |
NUM ) |
Referenced by rtvec_alloc().
#define PUT_REG_NOTE_KIND | ( | LINK, | |
KIND ) |
Referenced by alloc_EXPR_LIST(), alloc_INSN_LIST(), alloc_reg_note(), concat_INSN_LIST(), decrease_live_ranges_number(), and distribute_notes().
#define REG_ATTRS | ( | RTX | ) |
The register attribute block. We provide access macros for each value in the block and provide defaults if none specified.
Referenced by copyprop_hardreg_forward_1(), emit_note_insn_var_location(), entry_register(), find_oldest_value_reg(), init_raw_REG(), ira_create_new_reg(), lra_create_new_reg_with_unique_value(), rtx_writer::print_rtx_operand_code_r(), process_alt_operands(), rtx_reader::read_rtx_operand(), reg_scan_mark_refs(), regrename_do_replace(), resolve_simple_move(), set_reg_attrs_for_decl_rtl(), set_reg_attrs_for_parm(), set_reg_attrs_from_value(), update_reg_offset(), and vt_get_decl_and_offset().
#define REG_CFA_NOTE | ( | NAME | ) |
#define REG_CHECK | ( | RTX | ) |
Referenced by rhs_regno(), and set_regno_raw().
#define REG_EXPR | ( | RTX | ) |
For a REG rtx, the decl it is known to refer to, if it is known to refer to part of a DECL.
Referenced by add_stores(), expand_expr_real_gassign(), find_src_set_src(), find_src_status(), get_mem_expr_from_op(), make_debug_expr_from_rtl(), non_spilled_static_chain_regno_p(), rtx_writer::print_rtx_operand_code_r(), process_alt_operands(), reg_is_parm_p(), register_asm_p(), same_variable_part_p(), set_rtl(), unsigned_reg_p(), update_reg_offset(), use_type(), var_reg_delete(), var_reg_delete_and_set(), var_reg_set(), and vt_get_decl_and_offset().
#define REG_FUNCTION_VALUE_P | ( | RTX | ) |
1 if RTX is a reg or parallel that is the current function's return value.
Referenced by assign_parms(), bb_is_just_return(), expand_divmod(), expand_function_end(), flow_active_insn_p(), reload(), reload_combine_note_use(), and reload_cse_simplify().
#define REG_NOTE | ( | NAME | ) |
Register note definitions. Copyright (C) 2004-2025 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 file defines all the codes that may appear on individual EXPR_LIST, INSN_LIST and INT_LIST rtxes in the REG_NOTES chain of an insn. The codes are stored in the mode field of the rtx. Source files define DEF_REG_NOTE appropriately before including this file. CFA related notes meant for RTX_FRAME_RELATED_P instructions should be declared with REG_CFA_NOTE macro instead of REG_NOTE.
Shorthand.
#define REG_NOTE_KIND | ( | LINK | ) |
Define macros to extract and insert the reg-note kind in an EXPR_LIST.
Referenced by add_shallow_copy_of_reg_note(), br_prob_note_reliable_p(), build_def_use(), calculate_loop_reg_pressure(), can_combine_p(), combine_and_move_insns(), combine_instructions(), combine_predictions_for_insn(), combine_reloads(), compute_ld_motion_mems(), concat_INSN_LIST(), copy_frame_info_to_split_insn(), copyprop_hardreg_forward_1(), count_reg_usage(), cse_extended_basic_block(), delete_computation(), delete_related_insns(), df_insn_refs_collect(), df_notes_rescan(), df_remove_dead_and_unused_notes(), df_remove_dead_eq_notes(), df_simulate_one_insn_forwards(), distribute_notes(), duplicate_reg_note(), dwarf2out_frame_debug(), eliminate_regs_1(), eliminate_regs_in_insn(), elimination_costs_in_insn(), emit_copy_of_insn_after(), emit_delay_sequence(), emit_group_load_into_temps(), emit_group_move_into_temps(), fill_slots_from_thread(), filter_notes(), find_all_hard_reg_sets(), find_equiv_reg(), find_moveable_pseudos(), find_reg_equal_equiv_note(), find_reg_note(), find_regno_note(), fix_reg_dead_note(), get_args_size(), hash_scan_set(), hash_scan_set(), init_alias_analysis(), init_label_info(), insn_invalid_p(), insns_have_identical_cfa_notes(), invert_br_probabilities(), lra_eliminate_regs_1(), make_edges(), mark_target_live_regs(), move_dead_notes(), no_unhandled_cfa(), old_insns_match_p(), peep2_attempt(), print_insn_with_notes(), process_bb_lives(), push_reload(), record_dead_and_set_regs(), record_opr_changes(), reg_inc_found_and_valid_p(), regstat_bb_compute_ri(), reload(), reload_as_needed(), reload_combine(), reload_cse_move2add_invalidate(), remove_note(), remove_reg_equal_equiv_notes(), resolve_reg_notes(), rtl_predicted_by_p(), set_label_offsets(), spill_pseudos(), try_combine(), try_fwprop_subst_notes(), try_fwprop_subst_pattern(), try_replace_reg(), try_split(), rtx_properties::try_to_add_insn(), update_auto_inc_notes(), update_equiv_regs(), update_inc_notes(), update_reg_dead_notes(), update_reg_equal_equiv_notes(), update_reg_unused_notes(), validate_equiv_mem(), and validate_replace_rtx_group().
#define REG_NOTES | ( | INSN | ) |
Holds a list of notes on what this insn does to various REGs. It is a chain of EXPR_LIST rtx's, where the second operand is the chain pointer and the first operand is the REG being described. The mode field of the EXPR_LIST contains not a real machine mode but a value from enum reg_note.
Referenced by add_int_reg_note(), add_reg_note(), build_def_use(), calculate_elim_costs_all_insns(), calculate_loop_reg_pressure(), calculate_needs_all_insns(), can_combine_p(), canonicalize_insn(), combine_and_move_insns(), combine_instructions(), combine_predictions_for_insn(), combine_reg_notes(), combine_reloads(), cond_exec_process_insns(), copy_frame_info_to_split_insn(), copyprop_hardreg_forward_1(), cse_change_cc_mode_insn(), cse_extended_basic_block(), cse_insn(), decrease_live_ranges_number(), delete_computation(), delete_prior_computation(), delete_related_insns(), df_create_unused_note(), df_insn_refs_collect(), df_note_bb_compute(), df_notes_rescan(), df_remove_dead_and_unused_notes(), df_remove_dead_eq_notes(), df_set_dead_notes_for_mw(), df_set_unused_notes_for_mw(), df_simulate_one_insn_forwards(), distribute_notes(), dwarf2out_frame_debug(), eliminate_regs_in_insn(), elimination_costs_in_insn(), emit_copy_of_insn_after(), emit_delay_sequence(), fill_slots_from_thread(), find_all_hard_reg_sets(), find_equiv_reg(), find_moveable_pseudos(), find_reg_equal_equiv_note(), find_reg_note(), find_regno_note(), fix_reg_dead_note(), pair_fusion_bb_info::fuse_pair(), init_alias_analysis(), init_label_info(), insns_have_identical_cfa_notes(), instantiate_virtual_regs(), invert_br_probabilities(), make_call_insn_raw(), make_debug_insn_raw(), make_edges(), make_insn_raw(), make_jump_insn_raw(), mark_target_live_regs(), move_dead_notes(), no_unhandled_cfa(), old_insns_match_p(), peep2_attempt(), print_insn_with_notes(), process_bb_lives(), push_reload(), recog_for_combine_1(), record_dead_and_set_regs(), record_opr_changes(), reg_inc_found_and_valid_p(), reg_scan(), regstat_bb_compute_ri(), reload(), reload_as_needed(), reload_combine(), reload_cse_move2add_invalidate(), remove_note(), remove_reg_equal_equiv_notes(), replace_store_insn(), reset_all_used_flags(), reset_insn_used_flags(), resolve_reg_notes(), rtl_predicted_by_p(), set_label_offsets(), set_unique_reg_note(), spill_pseudos(), try_combine(), try_fwprop_subst_notes(), try_fwprop_subst_pattern(), try_split(), rtx_properties::try_to_add_insn(), unshare_all_rtl_again(), unshare_all_rtl_in_chain(), update_auto_inc_notes(), update_br_prob_note(), update_equiv_regs(), update_inc_notes(), update_reg_dead_notes(), update_reg_equal_equiv_notes(), update_reg_unused_notes(), validate_equiv_mem(), validate_replace_rtx_group(), and verify_insn_sharing().
#define REG_NREGS | ( | RTX | ) |
Return the number of consecutive registers in a REG. This is always 1 for pseudo registers and is determined by TARGET_HARD_REGNO_NREGS for hard registers.
Referenced by add_removable_extension(), add_used_regs(), insn_propagation::apply_to_rvalue_1(), build_def_use(), can_change_dest_mode(), combine_reaching_defs(), combine_reloads(), complex_word_subreg_p(), copy_value(), copyprop_hardreg_forward_1(), cselib_record_set(), dead_debug_insert_temp(), delete_output_reload(), df_mark_reg(), df_simulate_one_insn_forwards(), distribute_notes(), emit_move_complex(), emit_reload_insns(), END_REGNO(), find_dummy_reload(), find_oldest_value_reg(), find_reload_regs(), forget_old_reloads_1(), kill_value(), likely_spilled_retval_1(), likely_spilled_retval_p(), look_for_hardregs(), lra_set_insn_recog_data(), mark_effect(), move2add_record_mode(), move_deaths(), multiple_reg_loc_descriptor(), push_reload(), read_complex_part(), record_set(), reg_loc_descriptor(), reload_adjust_reg_for_mode(), reload_adjust_reg_for_temp(), reload_combine_note_use(), reload_combine_recognize_const_pattern(), reload_combine_recognize_pattern(), reload_cse_move2add_invalidate(), reload_reg_free_for_value_p(), scan_rtx_reg(), rtx_properties::try_to_add_reg(), verify_reg_in_set(), and write_complex_part().
#define REG_OFFSET | ( | RTX | ) |
For a REG rtx, the offset from the start of REG_EXPR, if known, as an HOST_WIDE_INT.
Referenced by add_stores(), get_tracked_reg_offset(), rtx_writer::print_rtx_operand_code_r(), same_variable_part_p(), update_reg_offset(), use_type(), var_reg_delete(), and vt_get_decl_and_offset().
#define REG_P | ( | X | ) |
Predicate yielding nonzero iff X is an rtx for a register.
Referenced by add_insn_allocno_copies(), add_regs_to_insn_regno_info(), add_removable_extension(), add_store_equivs(), add_stored_regs(), add_stores(), add_used_regs(), add_uses(), adjust_cleared_regs(), adjust_for_new_dest(), adjust_one_expanded_partition_var(), aggregate_value_p(), allocate_dynamic_stack_space(), allocate_initial_values(), alter_reg(), alter_subreg(), alter_subregs(), altered_reg_used(), analyze_insn_to_expand_var(), analyze_iv_to_split_insn(), insn_propagation::apply_to_lvalue_1(), insn_propagation::apply_to_rvalue_1(), approx_reg_cost(), arithmetic_flags_clobber_p(), assemble_variable(), assign_by_spills(), assign_mem_slot(), assign_parm_adjust_entry_rtl(), assign_parm_setup_block(), assign_parm_setup_block_p(), assign_parm_setup_reg(), assign_parm_setup_stack(), assign_parms(), assign_spill_hard_regs(), autoinc_split(), avoid_likely_spilled_reg(), baseness(), bb_estimate_probability_locally(), bb_is_just_return(), bb_ok_for_noce_convert_multiple_sets(), bb_valid_for_noce_process_p(), bbs_ok_for_cmove_arith(), find_comparison_dom_walker::before_dom_children(), block_move_libcall_safe_for_call_parm(), build_def_use(), bypass_conditional_jumps(), calculate_bb_reg_pressure(), calculate_elim_costs_all_insns(), calculate_gen_cands(), calculate_needs_all_insns(), calculate_spill_cost(), can_change_dest_mode(), can_combine_p(), can_decompose_p(), can_move_invariant_reg(), can_reload_into(), can_simplify_addr(), canon_asm_operands(), canon_reg_for_combine(), canon_rtx(), canonicalize_condition(), canonicalize_insn(), cant_combine_insn_p(), change_zero_ext(), check_and_make_def_conflict(), check_and_process_move(), check_cond_move_block(), check_promoted_subreg(), check_secondary_memory_needed_p(), choose_reload_regs(), cleanup_auto_inc_dec(), clobber_reg_mode(), clobber_return_register(), clobber_slot_part(), collect_non_operand_hard_regs(), combinable_i3pat(), combine_and_move_insns(), combine_reaching_defs(), combine_reload_insn(), combine_reloads(), combine_simplify_rtx(), combine_stack_adjustments_for_block(), commutative_operand_precedence(), compare_by_pieces(), compare_reg_or_pc(), compress_float_constant(), computation_cost(), compute_bb_dataflow(), compute_ld_motion_mems(), compute_local_properties(), cond_move_convert_if_block(), conforming_compare(), constprop_register(), constrain_operands(), contains_reg_p(), contains_reloaded_insn_p(), convert_debug_memory_address(), convert_mode_scalar(), convert_modes(), copy_blkmode_from_reg(), copy_cost(), copy_insn_1(), copy_rtx(), copy_rtx_if_shared_1(), copy_to_suggested_reg(), copyprop_hardreg_forward_1(), count_reg_usage(), count_stores(), covers_regno_no_parallel_p(), cprop_find_used_regs(), cprop_reg_p(), create_cand(), create_cands(), cse_cc_succs(), cse_change_cc_mode(), cse_condition_code_reg(), cse_insn(), cse_process_note_1(), cselib_expand_value_rtx_1(), cselib_hash_rtx(), cselib_invalidate_regno_val(), cselib_invalidate_rtx(), cselib_lookup_1(), cselib_preserve_cfa_base_value(), cselib_record_set(), cselib_record_sets(), cselib_reg_set_mode(), curr_insn_transform(), dead_debug_global_replace_temp(), dead_debug_insert_temp(), dead_or_set_p(), dead_pseudo_p(), decl_overlaps_hard_reg_set_p(), decompose(), decrease_live_ranges_number(), deletable_insn_p(), delete_address_reloads_1(), delete_computation(), delete_dead_insn(), delete_prior_computation(), delete_slot_part(), delete_unmarked_insns(), df_def_record_1(), df_find_def(), df_find_hard_reg_defs_1(), df_find_single_def_src(), df_find_use(), df_get_call_refs(), df_get_entry_block_def_set(), df_get_exit_block_use_set(), df_ref_record(), df_uses_record(), df_whole_mw_reg_dead_p(), df_whole_mw_reg_unused_p(), diddle_return_value_1(), distribute_links(), distribute_notes(), do_input_reload(), do_jump(), do_local_cprop(), do_output_reload(), do_remat(), do_tablejump(), doloop_condition_get(), dwarf2out_frame_debug(), dwarf2out_frame_debug_cfa_expression(), dwarf2out_frame_debug_cfa_restore(), dwarf2out_frame_debug_cfa_val_expression(), dwarf2out_frame_debug_def_cfa(), dwarf2out_frame_debug_expr(), dwf_cfa_reg(), eliminate_partially_redundant_loads(), eliminate_regs_1(), eliminate_regs_in_insn(), eliminate_regs_in_insn(), elimination_costs_in_insn(), elimination_effects(), address_reload_context::emit_autoinc(), emit_block_cmp_via_loop(), emit_group_load_1(), emit_group_store(), emit_input_reload_insns(), emit_libcall_block_1(), emit_library_call_value_1(), emit_move_complex(), emit_move_complex_parts(), emit_move_insn(), emit_move_list(), emit_note_insn_var_location(), emit_notes_in_bb(), emit_output_reload_insns(), emit_push_insn(), emit_reload_insns(), emit_store_flag_force(), equiv_address_substitution(), equiv_constant(), equivalent_reg_at_start(), expand_abs(), expand_addsub_overflow(), expand_asm_stmt(), expand_assignment(), expand_binop(), expand_builtin_apply(), expand_builtin_apply_args(), expand_builtin_frame_address(), expand_builtin_setjmp_receiver(), expand_builtin_thread_pointer(), expand_call(), expand_clobber(), expand_cmpstr(), expand_cmpstrn_or_cmpmem(), expand_debug_parm_decl(), expand_divmod(), expand_doubleword_bswap(), expand_doubleword_mult(), expand_eh_return(), expand_expr_real_1(), expand_expr_real_2(), expand_expr_real_gassign(), expand_float(), expand_function_end(), expand_function_start(), expand_loc(), expand_one_register_var(), expand_return(), ext_dce_process_sets(), ext_dce_process_uses(), ext_dce_try_optimize_insn(), extract_bit_field_1(), extract_bit_field_using_extv(), extract_fixed_bit_field_1(), extract_integral_bit_field(), extract_mentioned_regs(), extract_split_bit_field(), extract_writebacks(), fill_slots_from_thread(), find_all_hard_regs(), find_and_remove_re(), find_args_size_adjust(), find_avail_set(), find_bypass_set(), find_call_crossed_cheap_reg(), find_cc_set(), find_decomposable_shift_zext(), find_decomposable_subregs(), find_dummy_reload(), find_equiv_reg(), find_first_parameter_load(), find_invariant_insn(), find_mem(), find_moveable_pseudos(), find_pseudo_copy(), find_reg(), find_reg_fusage(), find_reg_offset_for_const(), find_regno_fusage(), find_regno_note(), find_reloads(), find_reloads_address(), find_reloads_address_1(), find_reloads_toplev(), find_reusable_reload(), find_single_use(), find_single_use_1(), find_split_point(), find_src_set_src(), find_src_status(), find_temp_slot_from_address(), pair_fusion::find_trailing_add(), find_used_regs(), fix_bb_live_info(), fix_reg_dead_note(), fix_reg_equiv_init(), fixup_debug_use(), fixup_debug_uses(), flow_active_insn_p(), flush_hash_table(), fold_rtx(), force_int_to_mode(), force_operand(), force_reg(), forget_old_reloads_1(), forward_propagate_and_simplify(), forward_propagate_subreg(), forward_propagate_subreg(), pair_fusion_bb_info::fuse_pair(), gcse_emit_move_after(), gen_const_die(), gen_exp(), gen_insn(), gen_lowpart_common(), gen_lowpart_general(), gen_lowpart_or_truncate(), gen_memset_value_from_prev(), gen_reload(), gen_reload_chain_without_interm_reg_p(), general_operand(), get_addr(), get_avail_load_store_reg(), get_base_reg(), get_call_args(), get_elimination(), get_equiv(), get_equiv_regno(), get_extended_src_reg(), get_hard_regno(), get_last_value(), get_last_value_validate(), get_mem_expr_from_op(), get_op_class(), get_pressure_class_and_nregs(), get_pressure_class_and_nregs(), get_regno(), get_reload_reg(), get_sub_rtx(), get_subtarget(), pair_fusion::get_viable_bases(), go_through_subreg(), hard_function_value(), hard_reg_set_here_p(), HASH(), hash_rtx(), hash_scan_set(), hash_scan_set(), hash_scan_set(), if_then_else_cond(), implies_p(), in_class_p(), inc_for_reload(), indirect_jump_optimize(), inherit_in_ebb(), inherit_reload_reg(), init_alias_analysis(), init_eliminable_invariants(), init_noce_multiple_sets_info(), insert_regs(), insert_value_copy_on_edge(), insert_with_costs(), instantiate_decl_rtl(), instantiate_virtual_regs_in_insn(), interesting_dest_for_shprep_1(), internal_arg_pointer_based_exp(), internal_arg_pointer_based_exp_scan(), invalid_mode_reg_p(), invalidate_dest(), invalidate_for_call(), invalidate_from_clobbers(), invalidate_from_sets_and_clobbers(), invalidate_reg(), invariant_p(), ira_implicitly_set_insn_hard_regs(), ira_register_new_scratch_op(), ira_restore_scratches(), ira_setup_alts(), is_based_loc(), is_dead_reg(), is_parallel_of_n_reg_sets(), is_pseudo_reg(), iv_analyze_biv(), iv_analyze_def(), iv_analyze_expr(), iv_get_reaching_def(), keep_with_call_p(), kill_set_value(), kill_value(), likely_spilled_retval_1(), likely_spilled_retval_p(), loc_cmp(), loc_descriptor(), loc_equivalence_callback(), look_for_hardregs(), lookup(), lookup_for_remove(), lra_coalesce(), lra_constraints(), lra_create_new_reg(), lra_create_new_reg_with_unique_value(), lra_delete_dead_insn(), lra_eliminate_reg_if_possible(), lra_eliminate_regs_1(), lra_emit_add(), lra_emit_move(), lra_final_code_change(), lra_set_insn_recog_data(), lra_substitute_pseudo(), lra_undo_inheritance(), make_compound_operation_int(), make_debug_expr_from_rtl(), make_extraction(), make_more_copies(), make_pseudo_conflict(), make_safe_from(), mark_altered(), mark_effect(), mark_hard_reg_early_clobbers(), mark_nonreg_stores_1(), mark_nonreg_stores_2(), mark_not_eliminable(), mark_referenced_regs(), mark_referenced_resources(), mark_reg_store(), mark_set_regs(), mark_set_resources(), mark_target_live_regs(), mark_user_reg(), match_asm_constraints_1(), match_reload(), may_assign_reg_p(), maybe_legitimize_operand_same_code(), mem_loc_descriptor(), memory_address_addr_space(), memrefs_conflict_p(), mention_regs(), mentions_nonequal_regs(), merge_equiv_classes(), move2add_note_store(), move2add_record_mode(), move_insn_for_shrink_wrap(), move_invariant_reg(), narrow_reload_pseudo_class(), new_cselib_val(), no_equiv(), noce_bbs_ok_for_cond_zero_arith(), noce_convert_multiple_sets(), noce_convert_multiple_sets_1(), noce_emit_move_insn(), noce_get_condition(), noce_process_if_block(), noce_try_abs(), noce_try_inverse_constants(), noce_try_store_flag_constants(), noce_try_store_flag_mask(), non_conflicting_reg_copy_p(), nonoverlapping_memrefs_p(), note_add_store(), note_pattern_stores(), note_reg_elim_costly(), note_sets_clobbers(), notreg_cost(), operand_subword_force(), operand_to_remat(), operands_match_p(), operands_match_p(), optimize_bitfield_assignment_op(), output_asm_operand_names(), output_operand(), pair_mem_strip_offset(), parms_set(), parse_add_or_inc(), pre_check_invariant_p(), pre_insert_copy_insn(), precompute_arguments(), precompute_register_parameters(), prepare_call_address(), prepare_call_arguments(), prepare_shrink_wrap(), preserve_temp_slots(), process_addr_reg(), process_address_1(), process_alt_operands(), process_bb_lives(), process_bb_node_for_hard_reg_moves(), process_bb_node_lives(), process_invariant_for_inheritance(), process_register_constraint_filters(), process_regs_for_copy(), process_single_reg_class_operands(), profile_function(), propagate_for_debug_subst(), push_block(), push_reload(), push_secondary_reload(), PUT_MODE(), read_complex_part(), recog_for_combine_1(), record_address_regs(), record_dead_and_set_regs(), record_dead_and_set_regs_1(), record_hard_reg_sets(), record_jump_cond(), record_last_set_info(), record_last_set_info(), record_one_stack_ref(), record_operand_costs(), record_out_operands(), record_promoted_value(), record_reg_classes(), record_reg_sets(), record_set(), record_store(), record_subregs_of_mode(), record_truncated_value(), refers_to_mem_for_reload_p(), refers_to_regno_for_reload_p(), refers_to_regno_p(), reg_bitfield_target_p(), reg_dead_at_p_1(), reg_is_parm_p(), reg_mentioned_p(), reg_or_subregno(), reg_overlap_mentioned_for_reload_p(), reg_referenced_p(), reg_scan_mark_refs(), reg_set_p(), reg_single_def_p(), reg_subword_p(), register_asm_p(), register_operand(), regno_clobbered_p(), regno_use_in(), regno_val_use_in(), rehash_using_reg(), reload(), reload_combine(), reload_combine_note_store(), reload_combine_note_use(), reload_combine_recognize_const_pattern(), reload_combine_recognize_pattern(), reload_cse_move2add(), reload_cse_move2add_invalidate(), reload_cse_regs_1(), reload_cse_simplify(), reload_cse_simplify_operands(), reload_cse_simplify_set(), reload_inner_reg_of_subreg(), reload_reg_free_for_value_p(), remove_clobbers(), remove_inheritance_pseudos(), remove_invalid_refs(), remove_invalid_subreg_refs(), remove_pseudos(), replace_dead_reg(), replace_expr_with_values(), replace_pseudos_in(), replace_read(), replace_rtx(), replace_single_def_regs(), requires_stack_frame_p(), reset_subreg_promoted_p(), resolve_shift_zext(), resolve_simple_move(), reverse_equiv_p(), reverse_op(), reversed_comparison_code_parts(), rtl_for_decl_location(), rtx_equal_for_cselib_1(), rtx_renumbered_equal_p(), safe_from_p(), SAFE_HASH(), same_variable_part_p(), save_call_clobbered_regs(), scan_loop(), scan_one_insn(), scan_paradoxical_subregs(), scratch_operand(), set_for_reg_notes(), set_nonzero_bits_and_sign_copies(), set_noop_p(), set_paradoxical_subreg(), set_reg_attrs_for_decl_rtl(), set_reg_attrs_for_parm(), set_reg_attrs_from_value(), set_rtl(), set_slot_part(), setjmp_args_warning(), setjmp_vars_warning(), setup_incoming_promotions(), setup_reg_equiv(), shift_return_value(), simple_reg_p(), simple_rhs_p(), simplify_comparison(), simplify_const_relational_operation(), simplify_if_then_else(), simplify_operand_subreg(), simplify_context::simplify_plus_minus(), simplify_plus_minus_op_data_cmp(), simplify_set(), simplify_context::simplify_subreg(), simplify_context::simplify_truncation(), simplify_context::simplify_unary_operation_1(), simplify_using_condition(), sp_based_mem_offset(), spilled_pseudo_p(), store_bit_field_1(), store_bit_field_using_insv(), store_constructor(), store_expr(), store_field(), store_integral_bit_field(), store_split_bit_field(), strip_paradoxical_subreg(), subst(), subst_indexed_address(), suitable_set_for_replacement(), swap_commutative_operands_with_target(), pair_fusion_bb_info::track_access(), track_loc_p(), true_regnum(), truncated_to_mode(), try_apply_stack_adjustment(), try_back_substitute_reg(), try_combine(), try_eliminate_compare(), try_fwprop_subst(), try_fwprop_subst_pattern(), pair_fusion::try_promote_writeback(), try_replace_in_use(), try_replace_reg(), rtx_properties::try_to_add_dest(), undo_optional_reloads(), unmentioned_reg_p(), unsigned_reg_p(), update_ebb_live_info(), update_equiv_regs(), update_live_status(), update_reg_dead_notes(), update_reg_unused_notes(), update_scratch_ops(), update_temp_slot_address(), use_group_regs(), use_reg_mode(), use_related_value(), use_type(), uses_hard_regs_p(), val_bind(), val_resolve(), valid_base_or_index_term_p(), validate_autoinc_and_mem_addr_p(), validate_equiv_mem(), validate_equiv_mem_from_store(), validate_replace_rtx_1(), validate_subreg(), var_lowpart(), variable_part_different_p(), variable_post_merge_perm_vals(), variable_union(), vectorizable_store(), verify_changes(), verify_reg_in_set(), verify_rtx_sharing(), vt_add_function_parameter(), vt_get_decl_and_offset(), will_delete_init_insn_p(), and write_complex_part().
#define REG_POINTER | ( | RTX | ) |
1 if RTX is a reg that holds a pointer value.
Referenced by baseness(), bb_estimate_probability_locally(), commutative_operand_precedence(), convert_debug_memory_address(), convert_memory_address_addr_space_1(), copyprop_hardreg_forward_1(), dump_reg_info(), entry_register(), find_oldest_value_reg(), force_not_mem(), init_emit(), ira_create_new_reg(), lra_create_new_reg_with_unique_value(), mark_reg_pointer(), nonzero_bits1(), num_sign_bit_copies1(), preserve_temp_slots(), record_address_regs(), reg_scan_mark_refs(), regrename_do_replace(), set_reg_attrs_from_value(), and simplify_context::simplify_unary_operation_1().
#define REG_USERVAR_P | ( | RTX | ) |
1 if RTX is a reg that corresponds to a variable declared by the user.
Referenced by can_change_dest_mode(), can_combine_p(), dump_reg_info(), emit_libcall_block_1(), entry_register(), ira_build_conflicts(), ira_create_new_reg(), lra_create_new_reg_with_unique_value(), make_decl_rtl(), mark_user_reg(), process_alt_operands(), reg_scan_mark_refs(), and reload().
#define REGNO | ( | RTX | ) |
For a REG rtx, REGNO extracts the register number. REGNO can only be used on RHS. Use SET_REGNO to change the value.
Referenced by add_range_and_copies_from_move_list(), add_regs_to_insn_regno_info(), add_removable_extension(), inchash::add_rtx(), add_store_equivs(), add_stored_regs(), add_used_regs(), adjust_cleared_regs(), adjust_for_new_dest(), adjust_insn(), aggregate_value_p(), allocate_initial_values(), alter_subregs(), altered_reg_used(), analyzed_for_bivness_p(), insn_propagation::apply_to_rvalue_1(), approx_reg_cost(), arithmetic_flags_clobber_p(), assign_by_spills(), assign_parm_adjust_entry_rtl(), assign_parm_setup_block(), assign_parm_setup_reg(), assign_parms(), attempt_change(), avoid_likely_spilled_reg(), based_loc_descr(), baseness(), bb_valid_for_noce_process_p(), find_comparison_dom_walker::before_dom_children(), build_def_use(), bypass_block(), calculate_bb_reg_pressure(), calculate_elim_costs_all_insns(), calculate_gen_cands(), calculate_loop_reg_pressure(), calculate_needs_all_insns(), calculate_spill_cost(), can_change_dest_mode(), can_combine_p(), can_decompose_p(), can_move_invariant_reg(), can_simplify_addr(), canon_reg(), canon_rtx(), canonicalize_insn(), canonicalize_values_star(), cant_combine_insn_p(), change_loop(), change_regs(), change_zero_ext(), check_and_make_def_conflict(), check_and_process_move(), check_eliminable_occurrences(), check_secondary_memory_needed_p(), choose_reload_regs(), choose_reload_regs_init(), cleanup_auto_inc_dec(), clobber_reg_mode(), clobber_return_register(), clobber_slot_part(), collect_non_operand_hard_regs(), combinable_i3pat(), combine_reaching_defs(), combine_reload_insn(), combine_reloads(), combine_set_extension(), combine_stack_adjustments_for_block(), compare_by_pieces(), compare_reg_or_pc(), compute_bb_dataflow(), compute_local_properties(), compute_transp(), conforming_compare(), consolidate_reg(), constrain_operands(), contains_reg_p(), contains_reloaded_insn_p(), convert_mode_scalar(), convert_modes(), copy_cost(), copy_info_to_removed_store_destinations(), copy_insn_1(), copy_rtx(), copy_rtx_if_shared_1(), copy_value(), copyprop_hardreg_forward_1(), count_reg_usage(), count_stores(), covers_regno_no_parallel_p(), cprop_find_used_regs(), cprop_insn(), cprop_jump(), create_cand(), create_cands(), create_insn_allocnos(), cse_cc_succs(), cse_change_cc_mode(), cse_condition_code_reg(), cse_insn(), cse_process_note_1(), cselib_expand_value_rtx_1(), cselib_hash_rtx(), cselib_invalidate_regno_val(), cselib_invalidate_rtx(), cselib_lookup_1(), cselib_record_set(), cselib_reg_set_mode(), cselib_subst_to_values(), curr_insn_transform(), dead_debug_global_replace_temp(), dead_debug_insert_temp(), dead_debug_promote_uses(), dead_or_set_p(), dead_pseudo_p(), debug_df_reg(), debugger_reg_number(), decl_overlaps_hard_reg_set_p(), decompose(), decompose_register(), decrease_live_ranges_number(), deletable_insn_p(), delete_address_reloads_1(), delete_dead_insn(), delete_output_reload(), delete_prior_computation(), delete_slot_part(), delete_trivially_dead_insns(), df_def_record_1(), df_find_def(), df_find_hard_reg_defs_1(), df_find_single_def_src(), df_find_use(), df_get_call_refs(), df_get_entry_block_def_set(), df_mark_reg(), df_ref_change_reg_with_loc(), df_ref_create_structure(), df_ref_record(), df_remove_dead_and_unused_notes(), df_simulate_one_insn_forwards(), df_word_lr_mark_ref(), diddle_return_value_1(), discover_loop(), discover_loops(), distribute_links(), distribute_notes(), do_input_reload(), do_local_cprop(), do_output_reload(), do_reload(), do_remat(), dump_hwloops(), dump_inc_insn(), dump_mem_insn(), dwarf2out_frame_debug_expr(), dwf_regno(), eliminate_partially_redundant_load(), eliminate_regs_1(), eliminate_regs_in_insn(), eliminate_regs_in_insn(), elimination_costs_in_insn(), elimination_effects(), emit_block_cmp_via_loop(), emit_group_store(), emit_input_reload_insns(), emit_libcall_block_1(), emit_library_call_value_1(), emit_move_list(), emit_note_insn_var_location(), emit_notes_in_bb(), emit_output_reload_insns(), emit_push_insn(), emit_reload_insns(), END_REGNO(), entry_register(), biv_entry_hasher::equal(), equiv_constant(), equiv_init_movable_p(), equiv_init_varies_p(), equivalent_reg_at_start(), exp_equiv_p(), expand_abs(), expand_asm_stmt(), expand_builtin_apply_args(), expand_builtin_init_dwarf_reg_sizes(), expand_call(), expand_debug_parm_decl(), expand_expr_real_1(), expand_expr_real_2(), expand_float(), expand_function_end(), expand_loc(), ext_dce_process_sets(), ext_dce_process_uses(), ext_dce_try_optimize_insn(), find_all_hard_regs(), find_and_remove_re(), find_args_size_adjust(), find_avail_set(), find_base_value(), find_bypass_set(), find_call_crossed_cheap_reg(), find_costs_and_classes(), find_decomposable_shift_zext(), find_decomposable_subregs(), find_dummy_reload(), find_equiv_reg(), find_first_parameter_load(), find_implicit_sets(), find_inc(), find_moveable_pseudos(), find_oldest_value_reg(), find_pseudo_copy(), find_reg(), find_reg_fusage(), find_regno_fusage(), find_regno_note(), find_reload_regs(), find_reloads(), find_reloads_address(), find_reloads_address_1(), find_reloads_subreg_address(), find_reloads_toplev(), find_single_use(), find_single_use_1(), pair_fusion::find_trailing_add(), fix_bb_live_info(), fix_reg_equiv_init(), fixup_debug_use(), fixup_debug_uses(), fold_rtx(), forget_old_reloads_1(), forward_propagate_subreg(), free_load_extend(), pair_fusion_bb_info::fuse_pair(), gen_exp(), gen_insn(), gen_memset_value_from_prev(), gen_reload(), general_operand(), generate_edge_moves(), get_call_args(), get_defs(), get_elimination(), get_equiv(), get_equiv_regno(), get_hard_regno(), get_last_value(), get_last_value_validate(), get_op_class(), get_pressure_class_and_nregs(), get_pressure_class_and_nregs(), get_regno(), get_reload_reg(), get_subreg_tracking_sizes(), get_subtarget(), get_uses(), pair_fusion::get_viable_bases(), go_through_subreg(), hard_reg_set_here_p(), has_hard_reg_initial_val(), HASH(), dead_debug_hash_descr::hash(), hash_rtx(), hash_scan_set(), hash_scan_set(), in_class_p(), inc_for_reload(), indirect_jump_optimize(), inherit_in_ebb(), inherit_reload_reg(), init_alias_analysis(), init_eliminable_invariants(), init_noce_multiple_sets_info(), initial_return_save(), initialize_uninitialized_regs(), insert_insn_end_basic_block(), insert_insn_start_basic_block(), insert_regs(), insert_set_in_table(), insert_with_costs(), instantiate_virtual_regs_in_insn(), interesting_dest_for_shprep_1(), internal_arg_pointer_based_exp(), internal_arg_pointer_based_exp_scan(), invalid_mode_reg_p(), invalidate_for_call(), invalidate_reg(), invariant_p(), ira(), ira_bad_reload_regno_1(), ira_create_new_reg(), ira_flattening(), ira_implicitly_set_insn_hard_regs(), ira_register_new_scratch_op(), ira_remove_insn_scratches(), ira_restore_scratches(), ira_subloop_allocnos_can_differ_p(), is_based_loc(), is_dead_debug_insn(), is_dead_reg(), is_pseudo_reg(), keep_with_call_p(), kill_autoinc_value(), kill_set_value(), kill_value(), latch_dominating_def(), likely_spilled_retval_1(), likely_spilled_retval_p(), load_register_parameters(), loc_cmp(), look_for_hardregs(), lookup_for_remove(), lookup_set(), lra_coalesce(), lra_constraints(), lra_create_new_reg(), lra_create_new_reg_with_unique_value(), lra_delete_dead_insn(), lra_eliminate_reg_if_possible(), lra_final_code_change(), lra_rtx_hash(), lra_set_insn_recog_data(), lra_substitute_pseudo(), lra_undo_inheritance(), make_hard_regno_dead(), make_more_copies(), make_object_dead(), make_pseudo_conflict(), make_safe_from(), mark_altered(), mark_effect(), mark_hard_reg_dead(), mark_hard_reg_early_clobbers(), mark_hard_reg_live(), mark_not_eliminable(), mark_ref_dead(), mark_ref_live(), mark_ref_regs(), mark_referenced_regs(), mark_referenced_resources(), mark_reg_death(), mark_reg_pointer(), mark_reg_store(), mark_set_regs(), mark_set_resources(), mark_target_live_regs(), mark_used_regs_combine(), match_pattern_2(), match_reload(), match_rtx(), may_assign_reg_p(), maybe_fix_stack_asms(), maybe_legitimize_operand_same_code(), mem_loc_descriptor(), memref_referenced_p(), mention_regs(), mentions_nonequal_regs(), merge_equiv_classes(), merge_in_block(), modify_move_list(), move2add_note_store(), move2add_record_mode(), move2add_record_sym_value(), move2add_use_add2_insn(), move2add_use_add3_insn(), move_deaths(), move_insn_for_shrink_wrap(), move_invariant_reg(), move_invariants(), move_unallocated_pseudos(), multiple_reg_loc_descriptor(), must_not_spill_p(), narrow_reload_pseudo_class(), new_cselib_val(), next_set(), no_equiv(), noce_convert_multiple_sets(), non_conflicting_reg_copy_p(), nonoverlapping_memrefs_p(), nonzero_bits1(), note_add_store(), note_pattern_stores(), note_reg_elim_costly(), note_sets_clobbers(), ok_for_base_p_nonstrict(), ok_for_index_p_nonstrict(), old_insns_match_p(), operand_to_remat(), operands_match_p(), operands_match_p(), oprs_unchanged_p(), oprs_unchanged_p(), output_asm_operand_names(), output_operand(), parms_set(), peep2_reg_dead_p(), pre_check_invariant_p(), pre_delete(), pre_insert_copy_insn(), prepare_call_arguments(), prepare_shrink_wrap(), rtx_writer::print_rtx_operand_code_r(), print_value(), process_addr_reg(), process_address_1(), process_alt_operands(), process_bb_lives(), process_bb_node_for_hard_reg_moves(), process_bb_node_lives(), process_invariant_for_inheritance(), process_register_constraint_filters(), process_regs_for_copy(), process_single_reg_class_operands(), profile_function(), push_reload(), push_secondary_reload(), PUT_MODE(), read_complex_part(), rtx_reader::read_rtx_operand(), record_address_regs(), record_biv(), record_dead_and_set_regs(), record_dead_and_set_regs_1(), record_hard_reg_sets(), record_jump_cond(), record_last_reg_set_info(), record_last_set_info(), record_operand_costs(), record_out_operands(), record_promoted_value(), record_reg_classes(), record_reg_sets(), record_set(), record_stack_refs(), record_subregs_of_mode(), record_truncated_value(), record_value_for_reg(), refers_to_mem_for_reload_p(), refers_to_regno_for_reload_p(), refers_to_regno_p(), reg_available_p(), reg_bitfield_target_p(), reg_changed_after_insn_p(), reg_dead_at_p(), reg_dead_at_p_1(), reg_fits_class_p(), reg_in_class_p(), reg_inc_found_and_valid_p(), reg_loc_descriptor(), reg_mentioned_p(), reg_nonzero_bits_for_combine(), reg_not_set_p(), reg_num_sign_bit_copies_for_combine(), reg_or_subregno(), reg_overlap_mentioned_for_reload_p(), reg_overlap_mentioned_p(), reg_saved_in(), reg_scan_mark_refs(), reg_set_p(), reg_single_def_p(), reg_truncated_to_mode(), regno_clobbered_p(), regno_use_in(), regno_val_use_in(), regrename_do_replace(), regstat_bb_compute_ri(), rehash_using_reg(), reload(), reload_adjust_reg_for_mode(), reload_adjust_reg_for_temp(), reload_as_needed(), reload_combine(), reload_combine_note_store(), reload_combine_note_use(), reload_combine_recognize_const_pattern(), reload_combine_recognize_pattern(), reload_cse_move2add(), reload_cse_move2add_invalidate(), reload_cse_simplify_operands(), reload_cse_simplify_set(), reload_reg_reaches_end_p(), reload_reg_rtx_reaches_end_p(), remove_inheritance_pseudos(), remove_invalid_subreg_refs(), remove_pseudos(), replace_dead_reg(), replace_oldest_value_addr(), replace_oldest_value_reg(), replace_pseudos_in(), replace_ref(), replace_rtx(), requires_stack_frame_p(), reset_subreg_promoted_p(), resolve_simple_move(), reverse_equiv_p(), rtl_for_decl_location(), rtx_equal_for_cselib_1(), rtx_equal_for_memref_p(), rtx_equal_p(), rtx_renumbered_equal_p(), safe_from_p(), SAFE_HASH(), save_call_clobbered_regs(), scan_loop(), scan_one_insn(), scan_paradoxical_subregs(), scan_rtx_address(), scan_rtx_reg(), scratch_operand(), set_allocno_somewhere_renamed_p(), set_nonzero_bits_and_sign_copies(), set_noop_p(), set_paradoxical_subreg(), set_reg_attrs_from_value(), set_slot_part(), setjmp_args_warning(), setjmp_vars_warning(), setup_live_pseudos_and_spill_after_risky_transforms(), setup_reg_equiv(), simple_reg_p(), simplify_operand_subreg(), simplify_context::simplify_plus_minus(), simplify_plus_minus_op_data_cmp(), simplify_set(), simplify_context::simplify_subreg(), spilled_pseudo_p(), split_live_ranges_for_shrink_wrap(), split_reg(), store_can_be_removed_p(), store_integral_bit_field(), store_ops_ok(), subreg_nregs(), subreg_regno(), subst(), subst_indexed_address(), subst_reg_equivs(), substitute(), pair_fusion_bb_info::track_access(), track_loc_p(), transform_ifelse(), true_regnum(), try_apply_stack_adjustment(), try_back_substitute_reg(), try_combine(), try_eliminate_compare(), try_merge(), try_merge_compare(), pair_fusion::try_promote_writeback(), try_shrink_wrapping(), rtx_properties::try_to_add_dest(), rtx_properties::try_to_add_reg(), undo_optional_reloads(), union_defs(), update_auto_inc_notes(), update_bb_reg_pressure(), update_ebb_live_info(), update_equiv_regs(), update_live_status(), update_reg_unused_notes(), update_scratch_ops(), update_table_tick(), use_type(), val_bind(), val_resolve(), validate_replace_rtx_1(), validate_subreg(), var_lowpart(), var_reg_decl_set(), var_reg_delete(), var_reg_delete_and_set(), variable_merge_over_cur(), variable_part_different_p(), variable_post_merge_new_vals(), variable_post_merge_perm_vals(), variable_union(), vectorizable_store(), verify_reg_in_set(), verify_rtx_sharing(), vt_add_function_parameter(), vt_equate_reg_base_value(), vt_init_cfa_base(), vt_initialize(), will_delete_init_insn_p(), and write_complex_part().
#define REGNO_PTR_FRAME_P | ( | REGNUM | ) |
Nonzero if REGNUM is a pointer into the stack frame.
Referenced by nonoverlapping_memrefs_p().
#define return_address_pointer_rtx (this_target_rtl->x_return_address_pointer_rtx) |
Referenced by gen_rtx_REG(), init_emit_regs(), and lookup_global_register().
#define RTL_CHECK1 | ( | RTX, | |
N, | |||
C1 ) |
General accessor macros for accessing the fields of an rtx.
#define RTL_CONST_CALL_P | ( | RTX | ) |
1 if RTX is a call to a const function. Built from ECF_CONST and TREE_READONLY.
Referenced by delete_prior_computation(), df_get_call_refs(), emit_call_1(), emit_copy_of_insn_after(), ext_dce_process_bb(), memref_used_between_p(), scan_insn(), store_killed_in_insn(), and rtx_properties::try_to_add_insn().
#define RTL_CONST_OR_PURE_CALL_P | ( | RTX | ) |
1 if RTX is a call to a const or pure function.
Referenced by can_move_insns_across(), compute_hash_table_work(), cse_insn(), cselib_process_insn(), deletable_insn_p(), find_exits(), find_invariants_bb(), mark_insn(), need_fake_edge_p(), record_opr_changes(), and validate_equiv_mem().
#define RTL_FLAG_CHECK1 | ( | NAME, | |
RTX, | |||
C1 ) |
#define RTL_FLAG_CHECK2 | ( | NAME, | |
RTX, | |||
C1, | |||
C2 ) |
#define RTL_FLAG_CHECK3 | ( | NAME, | |
RTX, | |||
C1, | |||
C2, | |||
C3 ) |
#define RTL_FLAG_CHECK4 | ( | NAME, | |
RTX, | |||
C1, | |||
C2, | |||
C3, | |||
C4 ) |
#define RTL_FLAG_CHECK5 | ( | NAME, | |
RTX, | |||
C1, | |||
C2, | |||
C3, | |||
C4, | |||
C5 ) |
#define RTL_FLAG_CHECK6 | ( | NAME, | |
RTX, | |||
C1, | |||
C2, | |||
C3, | |||
C4, | |||
C5, | |||
C6 ) |
#define RTL_FLAG_CHECK7 | ( | NAME, | |
RTX, | |||
C1, | |||
C2, | |||
C3, | |||
C4, | |||
C5, | |||
C6, | |||
C7 ) |
#define RTL_INSN_CHAIN_FLAG_CHECK | ( | NAME, | |
RTX ) |
Referenced by INSN_UID().
#define RTL_LOCATION | ( | X | ) |
LOCATION of an RTX if relevant.
Referenced by make_tree().
#define RTL_LOOPING_CONST_OR_PURE_CALL_P | ( | RTX | ) |
1 if RTX is a call to a looping const or pure function. Built from ECF_LOOPING_CONST_OR_PURE and DECL_LOOPING_CONST_OR_PURE_P.
Referenced by compute_hash_table_work(), cselib_process_insn(), deletable_insn_p(), emit_call_1(), emit_copy_of_insn_after(), find_exits(), find_invariants_bb(), mark_insn(), and record_opr_changes().
#define RTL_PURE_CALL_P | ( | RTX | ) |
1 if RTX is a call to a pure function. Built from ECF_PURE and DECL_PURE_P.
Referenced by df_get_call_refs(), emit_call_1(), emit_copy_of_insn_after(), and rtx_properties::try_to_add_insn().
#define RTVEC_ELT | ( | RTVEC, | |
I ) |
Referenced by add_implicit_parallel(), alter_attrs_for_insn(), alter_attrs_for_subst_insn(), rtx_vector_builder::build(), change_subst_attribute(), convert_memory_address_addr_space_1(), create_trace_edges(), decompose_register(), delete_insn(), delete_related_insns(), emit_group_load_into_temps(), emit_group_move_into_temps(), expand_asm_reg_clobber_mem_blockage(), expand_vector_broadcast(), gen_emit_seq(), gen_insn(), gen_mnemonic_setattr(), gen_rewrite_sequence(), gen_rtx_CONST_VECTOR(), get_pattern_stats(), get_peephole2_pattern(), has_subst_attribute(), is_predicable(), label_is_jump_target_p(), loc_descriptor(), make_edges(), match_asm_constraints_1(), output_add_clobbers(), patch_jump_insn(), process_one_cond_exec(), process_substs_on_one_elem(), purge_dead_tablejump_edges(), replace_label(), rtvec_all_equal_p(), rtvec_series_p(), simplify_context::simplify_binary_operation_1(), simplify_const_binary_operation(), simplify_replace_fn_rtx(), simplify_context::simplify_ternary_operation(), store_constructor(), try_combine(), and try_eliminate_compare().
#define rtx_alloc_v | ( | c, | |
SZ ) |
Referenced by immed_wide_int_const().
#define rtx_alloca | ( | code | ) |
#define RTX_ARITHMETIC_MASK (~1) |
#define RTX_ARITHMETIC_RESULT (RTX_COMM_ARITH & RTX_ARITHMETIC_MASK) |
#define RTX_BINARY_MASK (~3) |
#define RTX_BINARY_RESULT (RTX_COMPARE & RTX_BINARY_MASK) |
#define RTX_CODE enum rtx_code |
Register Transfer Language EXPRESSIONS CODES
Referenced by apply_int_iterator(), check_sibcall_argument_overlap_1(), cleanup_auto_inc_dec(), copy_insn_1(), copy_rtx(), cselib_expand_value_rtx_1(), df_defs_record(), df_find_hard_reg_defs(), df_uses_record(), equiv_init_varies_p(), function_reader::extra_parsing_for_operand_code_0(), find_matching_operand(), find_operand(), find_reloads(), find_reloads_address_1(), find_reloads_toplev(), gen_exp(), get_equiv_regno(), get_pattern_stats_1(), invert_exp_1(), loc_cmp(), mark_jump_label_1(), mark_ref_regs(), mark_used_regs_combine(), match_rtx(), max_operand_1(), operands_match_p(), operands_match_p(), plus_constant(), print_code(), print_code(), rtx_reader::read_rtx_code(), function_reader::read_rtx_operand(), rtx_reader::read_rtx_operand(), redirect_exp_1(), refers_to_regno_for_reload_p(), refers_to_regno_p(), replace_oldest_value_addr(), rtx_alloc(), rtx_alloc(), rtx_alloc_stat_v(), rtx_alloc_stat_v(), rtx_init(), rtx_unstable_p(), rtx_varies_p(), scan_rtx_address(), side_effects_p(), subst_pattern_match(), subst_reg_equivs(), validate_pattern(), volatile_insn_p(), volatile_refs_p(), walk_attr_value(), walk_insn_part(), walk_rtx(), and write_test_expr().
#define RTX_CODE_BITSIZE 8 |
Similar, but since generator files get more entries...
#define RTX_CODE_SIZE | ( | CODE | ) |
The size in bytes of an rtx with code CODE.
Referenced by md_reader::copy_rtx_for_iterators(), function_reader::extra_parsing_for_operand_code_0(), rtx_reader::read_rtx_code(), rtx_alloc_stat_v(), and rtx_size().
#define RTX_COMMUTATIVE_MASK (~2) |
#define RTX_COMMUTATIVE_RESULT (RTX_COMM_COMPARE & RTX_COMMUTATIVE_MASK) |
#define RTX_COMPARE_MASK (~1) |
#define RTX_COMPARE_RESULT (RTX_COMPARE & RTX_COMPARE_MASK) |
#define RTX_FLAG | ( | RTX, | |
FLAG ) |
General accessor macros for accessing the flags of an rtx.
Access an individual rtx flag, with no checking of any kind.
Referenced by build_constant_desc(), cleanup_auto_inc_dec(), copy_insn_1(), copy_rtx_if_shared_1(), default_stack_protect_guard(), mark_used_flags(), rtx_writer::print_rtx(), read_flags(), shallow_copy_rtx(), and verify_rtx_sharing().
#define RTX_FRAME_RELATED_P | ( | RTX | ) |
Referenced by adjust_insn(), combine_reg_notes(), cond_exec_process_insns(), copy_frame_info_to_split_insn(), copyprop_hardreg_forward_1(), dead_or_predicable(), deletable_insn_p(), delete_unmarked_insns(), dwarf2out_frame_debug_expr(), emit_copy_of_insn_after(), fill_slots_from_thread(), pair_fusion::find_trailing_add(), fp_setter_insn(), insn_stack_adjust_offset_pre_post(), maybe_merge_cfa_adjust(), no_unhandled_cfa(), old_insns_match_p(), optimize_skip(), peep2_attempt(), peep2_fill_buffer(), scan_insn(), scan_insn_after(), scan_trace(), steal_delay_list_from_target(), pair_fusion_bb_info::try_fuse_pair(), and try_split().
The size in bytes of an rtx header (code, mode and flags).
Referenced by create_block_symbol(), function_reader::extra_parsing_for_operand_code_0(), new_cselib_val(), rtx_init(), and rtx_size().
#define RTX_NEXT | ( | X | ) |
#define RTX_NON_COMMUTATIVE_RESULT (RTX_COMPARE & RTX_COMMUTATIVE_MASK) |
#define RTX_OBJ_MASK (~1) |
#define RTX_OBJ_RESULT (RTX_OBJ & RTX_OBJ_MASK) |
#define RTX_PREV | ( | X | ) |
FIXME: the "NEXT_INSN (PREV_INSN (X)) == X" condition shouldn't be needed.
#define SCHED_GROUP_P | ( | RTX | ) |
During sched, 1 if RTX is an insn that must be scheduled together with the preceding insn.
#define SET_DEST | ( | RTX | ) |
For a SET rtx, SET_DEST is the place that is set and SET_SRC is the value it is set to.
Referenced by add_equal_note(), add_insn_allocno_copies(), add_regs_to_insn_regno_info(), add_removable_extension(), add_store_equivs(), add_stores(), adjust_for_new_dest(), adjust_mem_stores(), adjust_stack_1(), allocate_dynamic_stack_space(), alter_attrs_for_insn(), analyze_insn_to_expand_var(), analyze_iv_to_split_insn(), insn_propagation::apply_to_pattern_1(), arithmetic_flags_clobber_p(), assign_parm_setup_reg(), assign_spill_hard_regs(), bb_ok_for_noce_convert_multiple_sets(), bb_valid_for_noce_process_p(), bbs_ok_for_cmove_arith(), find_comparison_dom_walker::before_dom_children(), build_def_use(), bypass_block(), bypass_conditional_jumps(), calculate_elim_costs_all_insns(), calculate_equiv_gains(), calculate_gen_cands(), calculate_needs_all_insns(), can_assign_to_reg_without_clobbers_p(), can_combine_p(), can_replace_by(), can_split_parallel_of_n_reg_sets(), canonicalize_condition(), canonicalize_insn(), cant_combine_insn_p(), change_zero_ext(), cheap_bb_rtx_cost_p(), check_and_process_move(), check_cond_move_block(), check_secondary_memory_needed_p(), classify_insn(), collect_non_operand_hard_regs(), combinable_i3pat(), combine_and_move_insns(), combine_instructions(), combine_reaching_defs(), combine_reload_insn(), combine_set_extension(), combine_stack_adjustments_for_block(), compute_bb_dataflow(), compute_ld_motion_mems(), computed_jump_p(), cond_move_convert_if_block(), condjump_in_parallel_p(), condjump_p(), conforming_compare(), constprop_register(), contains_reloaded_insn_p(), copyprop_hardreg_forward_1(), count_occurrences(), count_reg_usage(), cprop_jump(), create_cands(), create_insn_allocnos(), create_new_invariant(), cse_cc_succs(), cse_condition_code_reg(), cse_insn(), cselib_record_sets(), cselib_redundant_set_p(), curr_insn_transform(), dead_debug_insert_temp(), dead_or_set_regno_p(), decode_asm_operands(), decrease_live_ranges_number(), delete_address_reloads(), delete_address_reloads_1(), delete_dead_insn(), delete_jump(), delete_output_reload(), delete_prior_computation(), delete_trivially_dead_insns(), df_defs_record(), df_find_hard_reg_defs(), df_find_single_def_src(), df_uses_record(), distribute_links(), distribute_notes(), do_remat(), doloop_condition_get(), dwarf2out_frame_debug_cfa_expression(), dwarf2out_frame_debug_cfa_val_expression(), dwarf2out_frame_debug_expr(), eliminate_partially_redundant_load(), eliminate_partially_redundant_loads(), eliminate_regs_in_insn(), eliminate_regs_in_insn(), elimination_costs_in_insn(), elimination_effects(), emit_input_reload_insns(), emit_libcall_block_1(), emit_move_insn(), emit_move_list(), emit_notes_in_bb(), emit_output_reload_insns(), emit_reload_insns(), expand_field_assignment(), expand_var_during_unrolling(), ext_dce_process_sets(), ext_dce_process_uses(), ext_dce_try_optimize_insn(), fill_slots_from_thread(), find_and_remove_re(), find_args_size_adjust(), find_call_crossed_cheap_reg(), find_call_stack_args(), find_decomposable_shift_zext(), find_equiv_reg(), find_identical_invariants(), find_invariant_insn(), find_moveable_store(), find_pseudo_copy(), find_reloads(), find_sets_in_insn(), find_single_use_1(), find_split_point(), fix_reg_equiv_init(), fixup_debug_uses_trailing_add(), force_reg(), forward_propagate_and_simplify(), forward_propagate_into(), free_load_extend(), gcse_emit_move_after(), gen_mnemonic_attr(), get_avail_load_store_reg(), get_branch_condition(), get_pressure_class_and_nregs(), get_pressure_class_and_nregs(), get_sub_rtx(), hard_reg_set_here_p(), has_subst_attribute(), hash_scan_set(), hash_scan_set(), hash_scan_set(), hoist_code(), if_test_bypass_p(), inherit_in_ebb(), inherit_reload_reg(), init_alias_analysis(), init_eliminable_invariants(), init_expr_target(), init_noce_multiple_sets_info(), insn_valid_noce_process_p(), instantiate_virtual_regs_in_insn(), interesting_dest_for_shprep_1(), internal_arg_pointer_based_exp_scan(), inv_can_prop_to_addr_use(), invalidate_from_sets_and_clobbers(), is_cond_copy_insn(), is_parallel_of_n_reg_sets(), is_predicable(), iv_analyze_def(), keep_with_call_p(), lra_coalesce(), lra_constraints(), lra_delete_dead_insn(), lra_final_code_change(), lra_set_insn_recog_data(), make_edges(), make_field_assignment(), make_insn_raw(), make_more_copies(), mark_effect(), mark_not_eliminable(), mark_referenced_regs(), mark_referenced_resources(), mark_set_resources(), mark_used_regs_combine(), match_asm_constraints_1(), maybe_clear_subreg_promoted_p(), maybe_merge_cfa_adjust(), maybe_propagate_label_ref(), memref_referenced_p(), merge_def_and_ext(), move2add_note_store(), move_deaths(), move_insn_for_shrink_wrap(), move_invariant_reg(), move_unallocated_pseudos(), needs_barrier_p(), no_conflict_move_test(), noce_convert_multiple_sets_1(), noce_get_alt_condition(), noce_process_if_block(), noce_try_abs(), noce_try_cmove_arith(), non_conflicting_reg_copy_p(), note_pattern_stores(), note_uses(), onlyjump_p(), parse_add_or_inc(), pattern_cost(), pc_set(), pre_delete(), pre_insert_copy_insn(), print_pattern(), process_bb_lives(), process_bb_node_for_hard_reg_moves(), process_bb_node_lives(), process_invariant_for_inheritance(), purge_dead_tablejump_edges(), recog_for_combine(), record_dead_and_set_regs_1(), record_operand_costs(), record_promoted_value(), record_set_data(), record_store(), redirect_exp_1(), refers_to_regno_for_reload_p(), refers_to_regno_p(), reg_bitfield_target_p(), reg_referenced_p(), reg_scan_mark_refs(), reload(), reload_combine_note_store(), reload_combine_note_use(), reload_combine_recognize_const_pattern(), reload_combine_recognize_pattern(), reload_cse_move2add(), reload_cse_move2add_invalidate(), reload_cse_simplify(), reload_cse_simplify_operands(), reload_cse_simplify_set(), remove_inheritance_pseudos(), replace_store_insn(), resolve_shift_zext(), resolve_simple_move(), reverse_op(), reversed_comparison_code_parts(), rtx_cost(), rtx_moveable_p(), save_call_clobbered_regs(), scan_one_insn(), scan_rtx(), scan_rtx_reg(), set_dst_reg_note(), set_for_reg_notes(), set_label_offsets(), set_live_p(), set_nonzero_bits_and_sign_copies(), set_noop_p(), setup_reg_equiv(), simple_move(), simple_move_p(), simple_regno_set(), simplejump_p(), simplify_set(), single_set_2(), single_set_for_csa(), split_insn(), split_iv(), stack_adjust_offset_pre_post(), store_data_bypass_p_1(), store_killed_in_pat(), subst(), suitable_set_for_replacement(), tablejump_casesi_pattern(), transform_ifelse(), try_apply_stack_adjustment(), try_back_substitute_reg(), try_combine(), try_eliminate_compare(), try_fwprop_subst_pattern(), try_replace_in_use(), try_replace_reg(), rtx_properties::try_to_add_pattern(), undo_optional_reloads(), union_defs(), update_ebb_live_info(), update_equiv_regs(), validate_pattern(), validate_replace_rtx_1(), validate_simplify_insn(), verify_rtx_sharing(), walk_insn_part(), and will_delete_init_insn_p().
#define SET_INSN_DELETED | ( | INSN | ) |
Referenced by cond_exec_process_insns(), delete_dead_insn(), distribute_notes(), lra_set_insn_deleted(), remove_init_insns(), split_insn(), and try_combine().
#define SET_IS_RETURN_P | ( | RTX | ) |
Referenced by returnjump_p().
#define SET_LABEL_KIND | ( | LABEL, | |
KIND ) |
#define SET_REGNO | ( | RTX, | |
N ) |
Referenced by allocate_initial_values(), allocno_reload_assign(), alter_reg(), and lra_final_code_change().
#define SET_SRC | ( | RTX | ) |
Referenced by add_equal_note(), add_insn_allocno_copies(), add_regs_to_insn_regno_info(), add_removable_extension(), add_store_equivs(), add_stores(), adjust_insn(), allocate_basic_variable(), allocate_dynamic_stack_space(), alter_attrs_for_insn(), analyze_insn_to_expand_var(), any_condjump_p(), any_uncondjump_p(), insn_propagation::apply_to_pattern_1(), asm_noperands(), assign_spill_hard_regs(), bb_ok_for_noce_convert_multiple_sets(), bb_valid_for_noce_process_p(), bypass_block(), calculate_elim_costs_all_insns(), calculate_gen_cands(), calculate_needs_all_insns(), can_assign_to_reg_without_clobbers_p(), can_combine_p(), can_replace_by(), can_split_parallel_of_n_reg_sets(), canonicalize_condition(), canonicalize_insn(), cant_combine_insn_p(), change_zero_ext(), check_and_process_move(), check_cond_move_block(), classify_insn(), collect_non_operand_hard_regs(), combinable_i3pat(), combine_instructions(), combine_reaching_defs(), combine_reload_insn(), combine_set_extension(), combine_stack_adjustments_for_block(), compare_and_jump_seq(), compute_bb_dataflow(), compute_costs(), compute_ld_motion_mems(), computed_jump_p(), cond_exec_get_condition(), condjump_in_parallel_p(), condjump_label(), condjump_p(), conforming_compare(), copyprop_hardreg_forward_1(), count_occurrences(), count_reg_usage(), cprop_jump(), create_cands(), create_insn_allocnos(), create_new_invariant(), create_trace_edges(), cse_cc_succs(), cse_condition_code_reg(), cse_insn(), cselib_record_sets(), cselib_redundant_set_p(), curr_insn_transform(), dead_debug_insert_temp(), decode_asm_operands(), decompose_multiword_subregs(), decrease_live_ranges_number(), delete_address_reloads(), delete_address_reloads_1(), delete_dead_insn(), delete_prior_computation(), delete_trivially_dead_insns(), df_find_single_def_src(), df_uses_record(), distribute_notes(), do_remat(), doloop_condition_get(), dwarf2out_frame_debug_cfa_expression(), dwarf2out_frame_debug_cfa_val_expression(), dwarf2out_frame_debug_expr(), eliminate_partially_redundant_loads(), eliminate_regs_in_insn(), eliminate_regs_in_insn(), elimination_costs_in_insn(), elimination_effects(), emit_input_reload_insns(), emit_move_insn(), emit_notes_in_bb(), emit_output_reload_insns(), emit_reload_insns(), equiv_init_movable_p(), equivalent_reg_at_start(), expand_field_assignment(), ext_dce_process_uses(), ext_dce_try_optimize_insn(), extract_asm_operands(), extract_insn(), fill_slots_from_thread(), find_and_remove_re(), find_args_size_adjust(), find_call_crossed_cheap_reg(), find_constant_src(), find_decomposable_shift_zext(), find_equiv_reg(), find_flags_uses_in_insn(), find_identical_invariants(), find_invariant_insn(), find_loads(), find_moveable_store(), find_pseudo_copy(), find_reloads(), find_sets_in_insn(), find_single_use_1(), find_split_point(), fix_crossing_conditional_branches(), fix_reg_equiv_init(), fixup_debug_uses_trailing_add(), force_reg(), forward_propagate_and_simplify(), forward_propagate_into(), free_load_extend(), gcse_emit_move_after(), get_avail_load_store_reg(), get_biv_step_1(), get_branch_condition(), get_call_rtx_from(), get_condition(), get_inv_cost(), get_pressure_class_and_nregs(), get_pressure_class_and_nregs(), has_subst_attribute(), hash_scan_set(), hash_scan_set(), hash_scan_set(), if_test_bypass_p(), in_class_p(), indirect_jump_optimize(), inherit_in_ebb(), init_alias_analysis(), init_expr_target(), init_noce_multiple_sets_info(), insert_base_initialization(), insn_rhs_dead_pseudo_p(), insn_valid_noce_process_p(), instantiate_virtual_regs_in_insn(), interesting_dest_for_shprep_1(), internal_arg_pointer_based_exp_scan(), inv_can_prop_to_addr_use(), invalidate_from_sets_and_clobbers(), invert_jump_1(), is_cond_copy_insn(), is_just_move(), is_predicable(), iv_analyze_def(), keep_with_call_p(), location_for_asm(), lra_coalesce(), lra_constraints(), lra_delete_dead_insn(), lra_final_code_change(), make_defs_and_copies_lists(), make_edges(), make_field_assignment(), make_more_copies(), mark_not_eliminable(), mark_not_eliminable(), mark_referenced_regs(), mark_referenced_resources(), mark_set_resources(), mark_used_regs_combine(), match_asm_constraints_1(), maybe_clear_subreg_promoted_p(), maybe_merge_cfa_adjust(), maybe_propagate_label_ref(), memref_referenced_p(), merge_def_and_ext(), move2add_note_store(), move2add_use_add2_insn(), move2add_use_add3_insn(), move_deaths(), move_insn_for_shrink_wrap(), needs_barrier_p(), no_conflict_move_test(), noce_convert_multiple_sets_1(), noce_emit_store_flag(), noce_get_alt_condition(), noce_get_condition(), noce_process_if_block(), noce_try_abs(), non_conflicting_reg_copy_p(), note_uses(), onlyjump_p(), outgoing_edges_match(), parse_add_or_inc(), patch_jump_insn(), pattern_cost(), pre_insert_copy_insn(), print_pattern(), process_address_1(), process_alt_operands(), process_bb_lives(), process_bb_node_for_hard_reg_moves(), purge_dead_tablejump_edges(), recog_for_combine(), record_dead_and_set_regs_1(), record_jump_equiv(), record_operand_costs(), record_promoted_value(), record_set(), record_store(), redirect_exp_1(), refers_to_regno_for_reload_p(), refers_to_regno_p(), reg_referenced_p(), reg_scan_mark_refs(), reload(), reload_combine_note_use(), reload_combine_recognize_const_pattern(), reload_combine_recognize_pattern(), reload_cse_move2add(), reload_cse_regs_1(), reload_cse_simplify(), reload_cse_simplify_operands(), reload_cse_simplify_set(), remove_inheritance_pseudos(), replace_store_insn(), resolve_shift_zext(), resolve_simple_move(), reverse_equiv_p(), reverse_op(), reversed_comparison_code_parts(), rtx_moveable_p(), scan_one_insn(), scan_rtx(), scan_rtx_reg(), set_label_offsets(), set_live_p(), set_noop_p(), setup_reg_equiv(), simple_move(), simple_move_p(), simplejump_p(), simplify_set(), single_set_for_csa(), sp_based_mem_offset(), split_insn(), split_iv(), stack_adjust_offset_pre_post(), subst(), suitable_set_for_replacement(), tablejump_casesi_pattern(), thread_jump(), transform_ifelse(), try_apply_stack_adjustment(), try_back_substitute_reg(), try_combine(), try_eliminate_compare(), try_fwprop_subst_pattern(), try_merge_compare(), try_replace_in_use(), try_replace_reg(), rtx_properties::try_to_add_pattern(), undo_optional_reloads(), union_defs(), update_equiv_regs(), update_ld_motion_stores(), update_rsp_from_reg_equal(), validate_pattern(), validate_replace_rtx_1(), validate_simplify_insn(), verify_rtx_sharing(), and walk_insn_part().
#define SET_SYMBOL_REF_CONSTANT | ( | RTX, | |
C ) |
Set RTX's SYMBOL_REF_CONSTANT to C. RTX must be a constant pool symbol.
Referenced by force_const_mem().
#define SET_SYMBOL_REF_DECL | ( | RTX, | |
DECL ) |
Set RTX's SYMBOL_REF_DECL to DECL. RTX must not be a constant pool symbol.
Referenced by build_constant_desc(), build_personality_function(), make_decl_rtl(), produce_memory_decl_rtl(), and set_stack_check_libfunc().
#define SIBLING_CALL_P | ( | RTX | ) |
1 if RTX is a call_insn for a sibling call.
Referenced by control_flow_insn_p(), create_trace_edges(), deletable_insn_p(), df_get_call_refs(), emit_call_1(), emit_copy_of_insn_after(), expand_gimple_tailcall(), inherit_in_ebb(), insert_prologue_epilogue_for_components(), leaf_function_p(), make_edges(), mark_insn(), merge_if_block(), need_fake_edge_p(), old_insns_match_p(), outgoing_edges_match(), peep2_attempt(), purge_dead_edges(), requires_stack_frame_p(), save_call_clobbered_regs(), scan_insn(), set_nothrow_function_flags(), setup_save_areas(), split_live_ranges_for_shrink_wrap(), thread_prologue_and_epilogue_insns(), and try_split().
#define stack_pointer_rtx (global_rtl[GR_STACK_POINTER]) |
All references to certain hard regs, except those created by allocating pseudo regs into them (when that's possible), go through these unique rtx objects.
Referenced by add_stores(), adjust_mems(), adjust_stack_1(), allocate_dynamic_stack_space(), anti_adjust_stack_and_probe(), anti_adjust_stack_and_probe_stack_clash(), auto_inc_p(), based_loc_descr(), can_combine_p(), combine_stack_adjustments_for_block(), compute_frame_pointer_to_fb_displacement(), compute_stack_clash_protection_loop_data(), copyprop_hardreg_forward_1(), create_cie_data(), cse_insn(), cselib_init(), cselib_invalidate_mem(), cselib_lookup_1(), cselib_process_insn(), cselib_record_sp_cfa_base_equiv(), curr_insn_transform(), default_static_chain(), dwarf2out_frame_debug_expr(), eliminate_regs_in_insn(), elimination_effects(), emit_call_1(), emit_library_call_value_1(), emit_move_resolve_push(), emit_stack_clash_protection_probe_loop_end(), emit_stack_clash_protection_probe_loop_start(), emit_stack_restore(), emit_stack_save(), expand_asan_emit_allocas_unpoison(), expand_builtin_longjmp(), expand_builtin_nonlocal_goto(), expand_builtin_stack_address(), expand_expr_real_2(), expand_HWASAN_ALLOCA_UNPOISON(), find_args_size_adjust(), find_call_stack_args(), find_equiv_reg(), find_memory_stores(), find_oldest_value_reg(), find_reloads_address(), gen_rtx_REG(), hash_rtx(), immune_p(), init_emit(), init_emit_regs(), init_expr_target(), init_fake_stack_mems(), instantiate_new_reg(), keep_with_call_p(), lookup_global_register(), lra_eliminate_regs_1(), mark_not_eliminable(), may_trap_p_1(), maybe_mode_change(), move_insn_for_shrink_wrap(), nonzero_address_p(), nonzero_bits1(), notice_stack_pointer_modification_1(), pop_operand(), probe_stack_range(), process_alt_operands(), push_operand(), record_one_stack_ref(), record_stack_refs(), reg_set_p(), reload(), reload_combine_recognize_const_pattern(), reload_cse_move2add_invalidate(), reload_cse_simplify(), rtx_addr_can_trap_p_1(), simple_mem(), simplify_context::simplify_plus_minus(), sp_based_mem_offset(), stack_adjust_offset_pre_post(), stack_adjust_offset_pre_post_cb(), stack_memref_p(), try_apply_stack_adjustment(), try_merge(), update_reg_eliminate(), vt_init_cfa_base(), and vt_initialize().
#define STATIC_CHAIN_REG_P | ( | RTX | ) |
True if the REG is the static chain register for some CALL_INSN.
Referenced by find_first_parameter_load(), and prepare_call_address().
#define SUBREG_BYTE | ( | RTX | ) |
Referenced by inchash::add_rtx(), add_stored_regs(), adjust_mems(), alter_subreg(), apply_int_iterator(), insn_propagation::apply_to_rvalue_1(), choose_reload_regs(), combine_simplify_rtx(), compute_reload_subreg_offset(), constrain_operands(), cselib_expand_value_rtx_1(), cselib_hash_rtx(), curr_insn_transform(), df_ref_record(), eliminate_regs_1(), equiv_constant(), exp_equiv_p(), ext_dce_process_sets(), ext_dce_process_uses(), extract_bit_field_1(), find_dummy_reload(), find_reloads(), find_reloads_address_1(), find_reloads_subreg_address(), find_reloads_toplev(), find_replacement(), force_operand(), gen_exp(), general_operand(), get_hard_regno(), get_subreg_tracking_sizes(), go_through_subreg(), hash_invariant_expr_1(), hash_rtx(), if_then_else_cond(), indirect_operand(), instantiate_virtual_regs_in_insn(), invariant_expr_equal_p(), kill_value(), known_cond(), loc_cmp(), loc_equivalence_change_p(), lra_eliminate_regs_1(), lra_rtx_hash(), lra_substitute_pseudo(), make_compound_operation_int(), match_pattern_2(), match_reload(), mention_regs(), noce_emit_cmove(), noce_emit_move_insn(), operands_match_p(), operands_match_p(), rtx_writer::print_rtx_operand(), print_value(), push_reload(), reg_overlap_mentioned_for_reload_p(), reload_combine_note_store(), remove_invalid_subreg_refs(), replace_rtx(), resolve_debug(), resolve_simple_move(), resolve_subreg_use(), rtx_equal_for_cselib_1(), rtx_equal_for_memref_p(), rtx_equal_p(), rtx_renumbered_equal_p(), set_noop_p(), shape_of_subreg(), simplify_gen_subreg_concatn(), simplify_operand_subreg(), simplify_replace_fn_rtx(), simplify_rotate_op(), simplify_rtx(), simplify_context::simplify_subreg(), simplify_while_replacing(), store_bit_field_using_insv(), subreg_lowpart_p(), subreg_lsb(), subreg_memory_offset(), subreg_nregs_with_regno(), subreg_regno(), subst(), true_regnum(), and vt_expand_loc_callback().
#define SUBREG_CHECK_PROMOTED_SIGN | ( | RTX, | |
SIGN ) |
Checks if RTX of SUBREG_PROMOTED_VAR_P() is promoted for given SIGN.
Referenced by convert_modes(), convert_move(), set_reg_attrs_from_value(), store_expr(), and widen_operand().
#define SUBREG_P | ( | RTX | ) |
Predicate yielding nonzero iff RTX is a subreg.
Referenced by insn_propagation::apply_to_lvalue_1(), bb_valid_for_noce_process_p(), contains_paradoxical_subreg_p(), emit_move_insn(), expand_assignment(), expand_crc_optab_fn(), ext_dce_process_sets(), ext_dce_process_uses(), ext_dce_try_optimize_insn(), extract_split_bit_field(), find_sets_in_insn(), gen_lowpart_if_possible(), get_hard_regno(), invalid_mode_reg_p(), ira_setup_alts(), match_asm_constraints_1(), match_reload(), maybe_clear_subreg_promoted_p(), noce_can_force_operand(), process_alt_operands(), process_register_constraint_filters(), set_rtl(), simplify_context::simplify_binary_operation_1(), store_split_bit_field(), undo_optional_reloads(), and uses_hard_regs_p().
#define SUBREG_PROMOTED_GET | ( | RTX | ) |
Gets the value stored in promoted mode for SUBREG_PROMOTED_VAR_P(), including SRP_SIGNED_AND_UNSIGNED if promoted for both signed and unsigned.
Referenced by noce_emit_cmove(), and simplify_context::simplify_subreg().
#define SUBREG_PROMOTED_SET | ( | RTX, | |
VAL ) |
Sets promoted mode for SUBREG_PROMOTED_VAR_P().
Referenced by assign_parm_setup_reg(), convert_modes(), convert_move(), expand_call(), expand_expr_real_1(), noce_emit_cmove(), precompute_arguments(), simplify_context::simplify_subreg(), and simplify_context::simplify_unary_operation_1().
#define SUBREG_PROMOTED_SIGN | ( | RTX | ) |
Returns sign of promoted mode for SUBREG_PROMOTED_VAR_P().
Referenced by assign_call_lhs(), expand_assignment(), expand_gimple_stmt_1(), expand_ubsan_result_store(), simplify_context::simplify_subreg(), store_expr(), and unsigned_reg_p().
#define SUBREG_PROMOTED_SIGNED_P | ( | RTX | ) |
Predicate to check if RTX of SUBREG_PROMOTED_VAR_P() is promoted for SIGNED type.
Referenced by do_tablejump(), ext_dce_process_uses(), num_sign_bit_copies1(), and simplify_context::simplify_unary_operation_1().
#define SUBREG_PROMOTED_UNSIGNED_P | ( | RTX | ) |
Predicate to check if RTX of SUBREG_PROMOTED_VAR_P() is promoted for UNSIGNED type.
Referenced by ext_dce_process_uses(), nonzero_bits1(), record_promoted_value(), and simplify_context::simplify_unary_operation_1().
#define SUBREG_PROMOTED_VAR_P | ( | RTX | ) |
1 if RTX is a subreg containing a reg that is already known to be sign- or zero-extended from the mode of the subreg to the mode of the reg. SUBREG_PROMOTED_UNSIGNED_P gives the signedness of the extension. When used as a LHS, is means that this extension must be done when assigning to SUBREG_REG.
Referenced by assign_call_lhs(), assign_parm_setup_reg(), check_promoted_subreg(), convert_debug_memory_address(), convert_memory_address_addr_space_1(), convert_modes(), convert_move(), create_call_lhs_operand(), do_jump(), do_tablejump(), expand_assignment(), expand_call(), expand_crc_optab_fn(), expand_expr_real_1(), expand_gimple_stmt_1(), expand_ubsan_result_store(), ext_dce_process_uses(), maybe_clear_subreg_promoted_p(), noce_emit_cmove(), nonzero_bits1(), num_sign_bit_copies1(), precompute_arguments(), reset_subreg_promoted_p(), set_reg_attrs_from_value(), simplify_context::simplify_subreg(), simplify_context::simplify_unary_operation_1(), store_expr(), subreg_promoted_mode(), subreg_unpromoted_mode(), and widen_operand().
#define SUBREG_REG | ( | RTX | ) |
For a SUBREG rtx, SUBREG_REG extracts the value we want a subreg of. SUBREG_BYTE extracts the byte-number.
Referenced by add_insn_allocno_copies(), add_regs_to_insn_regno_info(), add_stored_regs(), adjust_mems(), alter_subreg(), alter_subregs(), analyze_insn_to_expand_var(), insn_propagation::apply_to_lvalue_1(), insn_propagation::apply_to_rvalue_1(), assign_call_lhs(), assign_parm_setup_reg(), bb_valid_for_noce_process_p(), cant_combine_insn_p(), change_zero_ext(), check_and_make_def_conflict(), check_and_process_move(), check_cond_move_block(), check_promoted_subreg(), choose_reload_regs(), collect_non_operand_hard_regs(), combinable_i3pat(), combine_simplify_rtx(), commutative_operand_precedence(), compute_reload_subreg_offset(), constrain_operands(), convert_debug_memory_address(), convert_memory_address_addr_space_1(), convert_modes(), convert_move(), covers_regno_no_parallel_p(), cse_insn(), cselib_expand_value_rtx_1(), curr_insn_transform(), dead_debug_insert_temp(), decompose(), delete_output_reload(), df_def_record_1(), df_find_def(), df_find_hard_reg_defs_1(), df_find_use(), df_ref_create_structure(), df_ref_record(), df_uses_record(), df_word_lr_mark_ref(), do_output_reload(), do_SUBST(), dw_sra_loc_expr(), eliminate_regs_1(), eliminate_regs_in_insn(), eliminate_regs_in_insn(), elimination_effects(), emit_input_reload_insns(), emit_move_insn(), emit_move_list(), emit_reload_insns(), emit_spill_move(), equiv_constant(), expand_assignment(), expand_compound_operation(), expand_field_assignment(), expand_gimple_stmt_1(), expand_mult_const(), expand_shift_1(), expand_ubsan_result_store(), ext_dce_process_sets(), ext_dce_process_uses(), ext_dce_try_optimize_insn(), extract_bit_field_1(), find_decomposable_subregs(), find_dummy_reload(), find_reloads(), find_reloads_address_1(), find_reloads_subreg_address(), find_reloads_toplev(), find_replacement(), find_single_use_1(), find_split_point(), force_operand(), force_to_mode(), forget_old_reloads_1(), forward_propagate_subreg(), gen_lowpart_for_combine(), general_operand(), get_biv_step_1(), get_equiv_regno(), get_hard_regno(), get_last_value(), get_pressure_class_and_nregs(), get_pressure_class_and_nregs(), get_regno(), get_subreg_tracking_sizes(), go_through_subreg(), hard_reg_set_here_p(), hash_rtx(), if_then_else_cond(), implies_p(), in_class_p(), indirect_operand(), insert_regs(), instantiate_virtual_regs_in_insn(), invalid_mode_reg_p(), invalidate(), invariant_p(), ira_implicitly_set_insn_hard_regs(), is_pseudo_reg(), iv_analyze(), iv_analyze_op(), iv_get_reaching_def(), kill_value(), known_cond(), loc_descriptor(), loc_equivalence_change_p(), lra_constraints(), lra_eliminate_regs_1(), lra_rtx_hash(), lra_substitute_pseudo(), make_compound_operation_int(), make_extraction(), make_field_assignment(), make_pseudo_conflict(), make_safe_from(), mark_altered(), mark_hard_reg_early_clobbers(), mark_not_eliminable(), mark_ref_dead(), mark_ref_live(), mark_referenced_regs(), mark_referenced_resources(), mark_reg_store(), mark_set_regs(), mark_set_resources(), match_reload(), maybe_clear_subreg_promoted_p(), mem_loc_descriptor(), memory_operand(), mention_regs(), move_deaths(), move_invariant_reg(), move_plus_up(), narrow_reload_pseudo_class(), noce_can_force_operand(), noce_emit_cmove(), nonzero_bits1(), note_pattern_stores(), note_sets_clobbers(), notreg_cost(), num_sign_bit_copies1(), operands_match_p(), operands_match_p(), paradoxical_subreg_p(), partial_subreg_p(), precompute_register_parameters(), prepare_call_arguments(), print_value(), process_addr_reg(), process_address_1(), process_alt_operands(), process_bb_node_lives(), process_register_constraint_filters(), process_single_reg_class_operands(), push_reload(), push_secondary_reload(), read_modify_subreg_p(), record_address_regs(), record_dead_and_set_regs_1(), record_jump_cond(), record_last_set_info(), record_last_set_info(), record_operand_costs(), record_promoted_value(), record_subregs_of_mode(), record_truncated_value(), refers_to_regno_for_reload_p(), refers_to_regno_p(), reg_bitfield_target_p(), reg_or_subregno(), reg_overlap_mentioned_for_reload_p(), reg_overlap_mentioned_p(), reg_referenced_p(), reg_subword_p(), register_operand(), rehash_using_reg(), reload_combine_note_store(), reload_inner_reg_of_subreg(), remove_inheritance_pseudos(), remove_invalid_subreg_refs(), remove_pseudos(), replace_oldest_value_addr(), replace_read(), replace_rtx(), replaced_subreg(), reset_subreg_promoted_p(), resolve_clobber(), resolve_debug(), resolve_simple_move(), resolve_subreg_p(), resolve_subreg_use(), rtx_cost(), rtx_equal_for_field_assignment_p(), rtx_renumbered_equal_p(), safe_from_p(), scan_one_insn(), scan_paradoxical_subregs(), scan_rtx_address(), set_nonzero_bits_and_sign_copies(), set_noop_p(), set_paradoxical_subreg(), set_reg_attrs_for_decl_rtl(), set_rtl(), shape_of_subreg(), simple_move_operand(), simple_reg_p(), simplify_context::simplify_binary_operation_1(), simplify_comparison(), simplify_gen_subreg_concatn(), simplify_if_then_else(), simplify_operand_subreg(), simplify_replace_fn_rtx(), simplify_rotate_op(), simplify_rtx(), simplify_set(), simplify_shift_const_1(), simplify_context::simplify_subreg(), simplify_context::simplify_ternary_operation(), simplify_context::simplify_truncation(), simplify_context::simplify_unary_operation_1(), simplify_while_replacing(), store_bit_field_1(), store_bit_field_using_insv(), store_expr(), store_integral_bit_field(), store_split_bit_field(), strip_address_mutations(), strip_paradoxical_subreg(), strip_subreg(), subreg_lowpart_p(), subreg_lsb(), subreg_memory_offset(), subreg_nregs(), subreg_nregs_with_regno(), subreg_promoted_mode(), subreg_regno(), subst(), true_regnum(), try_combine(), rtx_properties::try_to_add_dest(), rtx_properties::try_to_add_src(), undefined_operand_subword_p(), update_live_status(), use_narrower_mode_test(), uses_hard_regs_p(), valid_base_or_index_term_p(), vt_expand_loc_callback(), and wider_subreg_mode().
#define SWAPPABLE_OPERANDS_P | ( | X | ) |
1 if X is a commutative arithmetic operator or a comparison operator. These two are sometimes selected together because it is possible to swap the two operands.
Referenced by simplify_while_replacing().
#define SYMBOL_FLAG_ANCHOR (1 << 8) |
Set if this symbol is a section anchor. SYMBOL_REF_ANCHOR_P implies SYMBOL_REF_HAS_BLOCK_INFO_P.
Referenced by get_section_anchor().
#define SYMBOL_FLAG_EXTERNAL (1 << 6) |
Set if this symbol is not defined in this translation unit.
Referenced by default_encode_section_info().
#define SYMBOL_FLAG_FUNCTION (1 << 0) |
These flags are common enough to be defined for all targets. They are computed by the default version of targetm.encode_section_info.
Set if this symbol is a function.
Referenced by default_encode_section_info().
#define SYMBOL_FLAG_HAS_BLOCK_INFO (1 << 7) |
Set if this symbol has a block_symbol structure associated with it.
Referenced by create_block_symbol(), and default_encode_section_info().
#define SYMBOL_FLAG_LOCAL (1 << 1) |
Set if targetm.binds_local_p is true.
Referenced by assemble_static_space(), assemble_trampoline_template(), build_constant_desc(), default_encode_section_info(), dwarf2out_do_cfi_startproc(), force_const_mem(), get_section_anchor(), output_fde(), and sjlj_emit_function_enter().
#define SYMBOL_FLAG_MACH_DEP (1 << SYMBOL_FLAG_MACH_DEP_SHIFT) |
#define SYMBOL_FLAG_MACH_DEP_SHIFT 9 |
Subsequent bits are available for the target to use.
#define SYMBOL_FLAG_SMALL (1 << 2) |
Set if targetm.in_small_data_p is true.
Referenced by default_encode_section_info().
#define SYMBOL_FLAG_TLS_SHIFT 3 |
The three-bit field at [5:3] is true for TLS variables; use SYMBOL_REF_TLS_MODEL to extract the field as an enum tls_model.
Referenced by default_encode_section_info(), and get_section_anchor().
#define SYMBOL_REF_ANCHOR_P | ( | RTX | ) |
Referenced by use_anchored_address().
#define SYMBOL_REF_BLOCK | ( | RTX | ) |
If SYMBOL_REF_HAS_BLOCK_INFO_P (RTX), this is the object_block structure to which the symbol belongs, or NULL if it has not been assigned a block.
Referenced by assemble_variable(), change_symbol_block(), compare_base_symbol_refs(), create_block_symbol(), default_use_anchors_for_symbol_p(), function_reader::extra_parsing_for_operand_code_0(), offset_within_block_p(), optimize_constant_pool(), output_constant_def_contents(), output_constant_pool_contents(), place_block_symbol(), and use_anchored_address().
#define SYMBOL_REF_BLOCK_OFFSET | ( | RTX | ) |
If SYMBOL_REF_HAS_BLOCK_INFO_P (RTX), this is the offset of RTX from the first object in SYMBOL_REF_BLOCK (RTX). The value is negative if RTX has not yet been assigned to a block, or it has not been given an offset within that block.
Referenced by change_symbol_block(), compare_base_symbol_refs(), create_block_symbol(), function_reader::extra_parsing_for_operand_code_0(), get_section_anchor(), offset_within_block_p(), output_object_block(), place_block_symbol(), and use_anchored_address().
#define SYMBOL_REF_CONSTANT | ( | RTX | ) |
The rtx constant pool entry for a symbol, or null.
Referenced by get_pool_constant(), get_pool_constant_mark(), get_pool_mode(), mark_constants_in_pattern(), output_object_block(), and place_block_symbol().
#define SYMBOL_REF_DATA | ( | RTX | ) |
#define SYMBOL_REF_DECL | ( | RTX | ) |
The tree (decl or constant) associated with the symbol, or null.
Referenced by add_string_csts(), assemble_variable(), compare_base_symbol_refs(), const_ok_for_output_1(), cst_pool_loc_descr(), default_elf_select_rtx_section(), default_use_anchors_for_symbol_p(), emit_library_call_value_1(), emit_push_insn(), expand_debug_expr(), final_scan_insn_1(), force_reg(), gen_subprogram_die(), get_call_fndecl(), make_tree(), mark_constants_in_pattern(), mark_symbol_refs_as_used(), offset_within_block_p(), old_insns_match_p(), optimize_one_addr_into_implicit_ptr(), output_addr_const(), output_constant_def_contents(), output_object_block(), place_block_symbol(), prepare_call_arguments(), rtx_writer::print_rtx_operand_code_0(), read_complex_part(), rtl_for_decl_location(), rtx_addr_can_trap_p_1(), scan_insn(), string_cst_pool_decl(), and tree_output_constant_def().
#define SYMBOL_REF_EXTERNAL_P | ( | RTX | ) |
Referenced by const_ok_for_output_1().
#define SYMBOL_REF_FLAG | ( | RTX | ) |
Used if RTX is a symbol_ref, for machine-specific purposes.
#define SYMBOL_REF_FLAGS | ( | RTX | ) |
A set of flags on a symbol_ref that are, in some respects, redundant with information derivable from the tree decl associated with this symbol. Except that we build a *lot* of SYMBOL_REFs that aren't associated with a decl. In some cases this is a bug. But beyond that, it's nice to cache this information to avoid recomputing it. Finally, this allows space for the target to store more than one bit of information, as with SYMBOL_REF_FLAG.
Referenced by assemble_static_space(), assemble_trampoline_template(), build_constant_desc(), create_block_symbol(), default_encode_section_info(), dwarf2out_do_cfi_startproc(), function_reader::extra_parsing_for_operand_code_0(), force_const_mem(), get_section_anchor(), output_fde(), rtx_writer::print_rtx_operand_code_0(), and sjlj_emit_function_enter().
#define SYMBOL_REF_FUNCTION_P | ( | RTX | ) |
Referenced by rtx_addr_can_trap_p_1().
#define SYMBOL_REF_HAS_BLOCK_INFO_P | ( | RTX | ) |
Referenced by assemble_variable(), symtab_node::can_increase_alignment_p(), compare_base_symbol_refs(), function_reader::extra_parsing_for_operand_code_0(), make_decl_rtl(), offset_within_block_p(), optimize_constant_pool(), output_constant_def_contents(), output_constant_pool_contents(), place_block_symbol(), rtx_size(), and use_anchored_address().
#define SYMBOL_REF_LOCAL_P | ( | RTX | ) |
Referenced by compute_reloc_for_rtx_1().
#define SYMBOL_REF_P | ( | RTX | ) |
Predicate yielding true iff RTX is a symbol ref.
Referenced by const_ok_for_output_1(), contains_constant_pool_address_p(), contains_symbol_ref_p(), contains_symbolic_reference_p(), and emit_push_insn().
#define SYMBOL_REF_SMALL_P | ( | RTX | ) |
#define SYMBOL_REF_TLS_MODEL | ( | RTX | ) |
Referenced by const_ok_for_output_1(), get_section_anchor(), get_some_local_dynamic_name(), mem_loc_descriptor(), tls_referenced_p(), and use_anchored_address().
#define SYMBOL_REF_USED | ( | RTX | ) |
1 if RTX is a symbol_ref that has been the library function in emit_library_call.
Referenced by assemble_external_libcall().
#define SYMBOL_REF_WEAK | ( | RTX | ) |
1 if RTX is a symbol_ref for a weak symbol.
Referenced by symtab_node::copy_visibility_from(), symtab_node::make_decl_local(), make_decl_rtl(), mark_weak(), nonzero_address_p(), and rtx_addr_can_trap_p_1().
#define this_target_rtl (&default_target_rtl) |
Referenced by toplev::finalize(), initialize_rtl(), lang_dependent_init_target(), reinit_regs(), and target_reinit().
#define top_of_stack (this_target_rtl->x_top_of_stack) |
Referenced by init_fake_stack_mems(), and memory_move_secondary_cost().
#define TRAP_CODE | ( | RTX | ) |
Referenced by find_cond_trap().
#define TRAP_CONDITION | ( | RTX | ) |
For a TRAP_IF rtx, TRAP_CONDITION is an expression.
Referenced by block_has_only_trap(), merge_if_block(), note_uses(), print_exp(), print_pattern(), and reg_referenced_p().
#define TREE_CONSTANT_POOL_ADDRESS_P | ( | RTX | ) |
1 if RTX is a symbol_ref that addresses a value in the file's tree constant pool. This information is private to varasm.cc.
Referenced by asan_protect_global(), assemble_variable(), build_constant_desc(), mark_constants_in_pattern(), output_object_block(), place_block_symbol(), and prepare_call_arguments().
#define UINTVAL | ( | RTX | ) |
Referenced by assign_parm_setup_block(), calculate_table_based_CRC(), carry_backpropagate(), clear_storage(), combine_simplify_rtx(), compute_const_anchors(), contains_muldiv(), cselib_hash_plus_const_int(), cselib_hash_rtx(), cselib_record_sp_cfa_base_equiv(), cselib_reset_table(), determine_block_size(), determine_max_iter(), do_tablejump(), emit_block_cmp_via_loop(), emit_block_move(), emit_block_move_via_oriented_loop(), emit_block_move_via_sized_loop(), expand_binop(), extract_left_shift(), find_split_point(), fold_builtin_atomic_always_lock_free(), force_int_to_mode(), lra_rtx_hash(), make_compound_operation_int(), make_extraction(), make_field_assignment(), maybe_swap_commutative_operands(), move2add_note_store(), move2add_use_add2_insn(), move2add_use_add3_insn(), nonzero_bits1(), num_sign_bit_copies1(), prepare_cmp_insn(), reload_combine_recognize_pattern(), reload_cse_move2add(), scompare_loc_descriptor_narrow(), simplify_context::simplify_binary_operation_1(), simplify_comparison(), simplify_const_relational_operation(), simplify_if_then_else(), simplify_context::simplify_relational_operation_1(), simplify_shift_const_1(), simplify_context::simplify_subreg(), simplify_context::simplify_ternary_operation(), simplify_context::simplify_truncation(), store_expr(), store_fixed_bit_field_1(), try_combine(), and validate_pattern().
#define UNARY_P | ( | X | ) |
1 if X is a unary operator.
Referenced by combine_simplify_rtx(), contains_muldiv(), find_split_point(), force_operand(), gen_reload(), get_mem_expr_from_op(), if_then_else_cond(), noce_can_force_operand(), rtx_equal_for_memref_p(), rtx_renumbered_equal_p(), and simplify_context::simplify_merge_mask().
#define USE_LOAD_POST_DECREMENT | ( | MODE | ) |
Referenced by add_autoinc_candidates(), and get_address_cost_ainc().
#define USE_LOAD_POST_INCREMENT | ( | MODE | ) |
Some architectures do not have complete pre/post increment/decrement instruction sets, or only move some modes efficiently. These macros allow us to tune autoincrement generation.
Referenced by add_autoinc_candidates(), pieces_addr::decide_autoinc(), and get_address_cost_ainc().
#define USE_LOAD_PRE_DECREMENT | ( | MODE | ) |
Referenced by add_autoinc_candidates(), pieces_addr::decide_autoinc(), and get_address_cost_ainc().
#define USE_LOAD_PRE_INCREMENT | ( | MODE | ) |
Referenced by add_autoinc_candidates(), and get_address_cost_ainc().
#define USE_STORE_POST_DECREMENT | ( | MODE | ) |
Referenced by add_autoinc_candidates(), and get_address_cost_ainc().
#define USE_STORE_POST_INCREMENT | ( | MODE | ) |
Referenced by add_autoinc_candidates(), pieces_addr::decide_autoinc(), and get_address_cost_ainc().
#define USE_STORE_PRE_DECREMENT | ( | MODE | ) |
Referenced by add_autoinc_candidates(), pieces_addr::decide_autoinc(), and get_address_cost_ainc().
#define USE_STORE_PRE_INCREMENT | ( | MODE | ) |
Referenced by add_autoinc_candidates(), and get_address_cost_ainc().
#define VAR_LOC_UNKNOWN_P | ( | X | ) |
Determine whether X is such an unknown location.
Referenced by add_uses(), build_def_use(), compute_bb_dataflow(), copyprop_hardreg_forward_1(), df_insn_rescan_debug_internal(), emit_notes_in_bb(), print_insn(), and use_type().
#define VIRTUAL_CFA_REGNUM ((FIRST_VIRTUAL_REGISTER) + 4) |
#define virtual_cfa_rtx (global_rtl[GR_VIRTUAL_CFA]) |
This points to the Canonical Frame Address of the function. This should correspond to the CFA produced by INCOMING_FRAME_SP_OFFSET, but is calculated relative to the arg pointer for simplicity; the frame pointer nor stack pointer are necessarily fixed relative to the CFA until after reload.
Referenced by expand_builtin(), init_emit(), init_emit_regs(), init_virtual_regs(), instantiate_new_reg(), and lookup_global_register().
#define VIRTUAL_INCOMING_ARGS_REGNUM (FIRST_VIRTUAL_REGISTER) |
#define virtual_incoming_args_rtx (global_rtl[GR_VIRTUAL_INCOMING_ARGS]) |
This points to the first word of the incoming arguments passed on the stack, either by the caller or by the callee when pretending it was passed by the caller.
Referenced by adjust_mems(), assign_parm_setup_reg(), default_internal_arg_pointer(), expand_debug_parm_decl(), init_emit(), init_emit_regs(), init_virtual_regs(), instantiate_new_reg(), and lookup_global_register().
#define VIRTUAL_OUTGOING_ARGS_REGNUM ((FIRST_VIRTUAL_REGISTER) + 3) |
#define virtual_outgoing_args_rtx (global_rtl[GR_VIRTUAL_OUTGOING_ARGS]) |
This points to the location in the stack at which outgoing arguments should be written when the stack is pre-pushed (arguments pushed using push insns always use sp).
Referenced by emit_library_call_value_1(), emit_push_insn(), expand_builtin_apply(), expand_call(), init_emit(), init_emit_regs(), init_virtual_regs(), instantiate_new_reg(), lookup_global_register(), push_block(), and safe_from_p().
#define VIRTUAL_PREFERRED_STACK_BOUNDARY_REGNUM ((FIRST_VIRTUAL_REGISTER) + 5) |
#define virtual_preferred_stack_boundary_rtx (global_rtl[GR_VIRTUAL_PREFERRED_STACK_BOUNDARY]) |
This is replaced by crtl->preferred_stack_boundary / BITS_PER_UNIT when finalized.
Referenced by init_emit_regs(), init_virtual_regs(), instantiate_new_reg(), lookup_global_register(), and round_push().
#define VIRTUAL_REGISTER_NUM_P | ( | REG_NO | ) |
1 if the given register number REG_NO corresponds to a virtual register.
Referenced by refers_to_regno_p().
#define VIRTUAL_REGISTER_P | ( | REG | ) |
1 if the given register REG corresponds to a virtual register.
Referenced by force_operand(), instantiate_decl_rtl(), nonzero_address_p(), and rtx_addr_can_trap_p_1().
#define VIRTUAL_STACK_DYNAMIC_REGNUM ((FIRST_VIRTUAL_REGISTER) + 2) |
#define virtual_stack_dynamic_rtx (global_rtl[GR_VIRTUAL_STACK_DYNAMIC]) |
This points to the location of dynamically-allocated memory on the stack immediately after the stack pointer has been adjusted by the amount desired.
Referenced by allocate_dynamic_stack_space(), emit_push_insn(), expand_asan_emit_allocas_unpoison(), expand_call(), expand_HWASAN_ALLOCA_UNPOISON(), expand_used_vars(), init_emit(), init_emit_regs(), init_virtual_regs(), instantiate_new_reg(), and lookup_global_register().
#define VIRTUAL_STACK_VARS_REGNUM ((FIRST_VIRTUAL_REGISTER) + 1) |
#define virtual_stack_vars_rtx (global_rtl[GR_VIRTUAL_STACK_ARGS]) |
If FRAME_GROWS_DOWNWARD, this points to immediately above the first variable on the stack. Otherwise, it points to the first variable on the stack.
Referenced by assign_stack_local_1(), default_builtin_setjmp_frame_value(), expand_one_stack_var_1(), expand_stack_vars(), expand_used_vars(), find_temp_slot_from_address(), hwasan_frame_base(), hwasan_get_frame_extent(), init_emit(), init_emit_regs(), init_virtual_regs(), instantiate_new_reg(), lookup_global_register(), and stack_vars_base_reg_p().
#define X0ADVFLAGS | ( | RTX, | |
N ) |
#define X0ANY | ( | RTX, | |
N ) |
Access a '0' field with any type.
#define X0BBDEF | ( | RTX, | |
N ) |
#define X0CONSTANT | ( | RTX, | |
N ) |
#define X0CSELIB | ( | RTX, | |
N ) |
#define X0EXP | ( | RTX, | |
N ) |
Referenced by attr_rtx_1().
#define X0INT | ( | RTX, | |
N ) |
These are like XINT, etc. except that they expect a '0' field instead of the normal type code.
#define X0LOC | ( | RTX, | |
N ) |
#define X0MEMATTR | ( | RTX, | |
N ) |
#define X0MODE | ( | RTX, | |
N ) |
#define X0STR | ( | RTX, | |
N ) |
#define X0TREE | ( | RTX, | |
N ) |
#define X0UINT | ( | RTX, | |
N ) |
#define X0VEC | ( | RTX, | |
N ) |
#define XBBDEF | ( | RTX, | |
N ) |
Referenced by BLOCK_FOR_INSN(), and rtx_writer::print_rtx_operand().
#define XC2EXP | ( | RTX, | |
N, | |||
C1, | |||
C2 ) |
#define XC3EXP | ( | RTX, | |
N, | |||
C1, | |||
C2, | |||
C3 ) |
#define XCBBDEF | ( | RTX, | |
N, | |||
C ) |
#define XCCFI | ( | RTX, | |
N, | |||
C ) |
#define XCCSELIB | ( | RTX, | |
N, | |||
C ) |
#define XCEXP | ( | RTX, | |
N, | |||
C ) |
Referenced by label_ref_label(), and set_label_ref_label().
#define XCFI | ( | RTX, | |
N ) |
#define XCINT | ( | RTX, | |
N, | |||
C ) |
#define XCLOC | ( | RTX, | |
N, | |||
C ) |
#define XCMODE | ( | RTX, | |
N, | |||
C ) |
#define XCNMPFV | ( | RTX, | |
C, | |||
M ) |
#define XCNMPRV | ( | RTX, | |
C, | |||
M ) |
#define XCSTR | ( | RTX, | |
N, | |||
C ) |
#define XCSUBREG | ( | RTX, | |
N, | |||
C ) |
#define XCTREE | ( | RTX, | |
N, | |||
C ) |
#define XCUINT | ( | RTX, | |
N, | |||
C ) |
#define XCVEC | ( | RTX, | |
N, | |||
C ) |
#define XCVECEXP | ( | RTX, | |
N, | |||
M, | |||
C ) |
#define XCVECLEN | ( | RTX, | |
N, | |||
C ) |
#define XEXP | ( | RTX, | |
N ) |
Referenced by add_auto_inc_notes(), add_const_value_attribute(), add_constraint(), add_constraints(), add_define_attr(), add_equal_note(), add_function_usage_to(), add_label_notes(), add_location_or_const_value_attribute(), add_mem_for_addr(), add_mode_tests(), add_next_usage_insn(), add_regs_to_insn_regno_info(), add_removable_extension(), inchash::add_rtx(), add_shallow_copy_of_reg_note(), add_stores(), add_string_csts(), add_test(), add_uses(), add_var_loc_to_decl(), addr_offset_valid_p(), addr_side_effect_eval(), adjust_address_1(), adjust_for_new_dest(), adjust_insn(), adjust_mems(), adjust_piece_list(), alloc_EXPR_LIST(), alloc_INSN_LIST(), allocate_dynamic_stack_space(), alter_attrs_for_insn(), alter_constraints(), alter_predicate_for_insn(), alter_subregs(), analyze_insn_to_expand_var(), any_condjump_p(), fixup_insn_uid::apply(), apply_distributive_law(), insn_propagation::apply_to_lvalue_1(), insn_propagation::apply_to_mem_1(), insn_propagation::apply_to_pattern_1(), insn_propagation::apply_to_rvalue_1(), arithmetic_flags_clobber_p(), asan_clear_shadow(), asan_protect_global(), asm_operand_ok(), assemble_crc_table(), assemble_undefined_decl(), assemble_variable(), assign_parm_adjust_entry_rtl(), assign_parm_is_stack_parm(), assign_parm_setup_block(), assign_parm_setup_reg(), assign_stack_temp_for_type(), AT_discr_list(), attempt_change(), attr_rtx_1(), attr_rtx_cost(), attr_value_alignment(), auto_inc_p(), autoinc_split(), avoid_complex_debug_insns(), avoid_constant_pool_reference(), bad_for_rematerialization_p(), base_alias_check(), bb_estimate_probability_locally(), bb_is_just_return(), find_comparison_dom_walker::before_dom_children(), break_out_memory_refs(), bswap_loc_descriptor(), build_def_use(), build_personality_function(), bypass_block(), cached_nonzero_bits(), cached_num_sign_bit_copies(), calculate_loop_reg_pressure(), call_from_call_insn(), can_combine_p(), can_eliminate_compare(), symtab_node::can_increase_alignment_p(), can_nonlocal_goto(), can_simplify_addr(), canon_address(), canon_condition(), canon_list_insert(), canon_reg(), canon_reg_for_combine(), canon_rtx(), canonicalize_address_mult(), canonicalize_change_group(), canonicalize_condition(), canonicalize_insn(), canonicalize_reload_addr(), carry_backpropagate(), cc_in_cond(), change_address(), change_address_1(), change_regs(), change_zero_ext(), check_attr_test(), check_attr_value(), check_defs(), check_eliminable_occurrences(), check_maybe_invariant(), check_promoted_subreg(), check_sibcall_argument_overlap_1(), check_tune_attr(), check_tune_attr(), choose_reload_regs(), cleanup_auto_inc_dec(), clear_struct_flag(), clobber_overlapping_mems(), clz_loc_descriptor(), collect_insn_data(), collect_non_operand_hard_regs(), combinable_i3pat(), combine_and_move_insns(), combine_instructions(), combine_predictions_for_insn(), combine_reloads(), combine_set_extension(), combine_simplify_rtx(), combine_stack_adjustments_for_block(), compare_and_jump_seq(), compare_base_symbol_refs(), compares_alternatives_p(), computation_cost(), compute_alternative_mask(), compute_argument_addresses(), compute_bb_dataflow(), compute_ld_motion_mems(), compute_test_codes(), compute_transp(), computed_jump_p(), computed_jump_p_1(), cond_exec_get_condition(), cond_exec_process_if_block(), cond_move_convert_if_block(), condition_dominates_p(), condjump_in_parallel_p(), condjump_label(), condjump_p(), conforming_compare(), const_ok_for_output(), const_ok_for_output_1(), constrain_operands(), contains_muldiv(), contains_reg_p(), control_flow_insn_p(), convert_debug_memory_address(), convert_memory_address_addr_space_1(), convert_mode_scalar(), convert_move(), convert_set_attr_alternative(), copy_boolean(), copy_frame_info_to_split_insn(), copy_insn_1(), copy_INSN_LIST(), copy_reg_eh_region_note_backward(), copy_reg_eh_region_note_forward(), copy_replacements_1(), copy_rtx(), md_reader::copy_rtx_for_iterators(), copy_rtx_if_shared_1(), symtab_node::copy_visibility_from(), copyprop_hardreg_forward_1(), count_alternatives(), count_occurrences(), count_reg_usage(), count_rtxs(), covers_regno_p(), cprop_insn(), cprop_jump(), create_insn_allocnos(), create_trace_edges(), cse_cc_succs(), cse_extended_basic_block(), cse_insn(), cse_process_note_1(), cselib_expand_value_rtx_1(), cselib_hash_plus_const_int(), cselib_hash_rtx(), cselib_invalidate_mem(), cselib_invalidate_rtx(), cselib_lookup_mem(), cselib_process_insn(), cselib_record_sets(), cselib_record_sp_cfa_base_equiv(), cselib_redundant_set_p(), cselib_reset_table(), cselib_sp_derived_value_p(), cselib_subst_to_values(), cst_pool_loc_descr(), curr_insn_transform(), dbr_schedule(), dead_or_predicable(), dead_pseudo_p(), decl_piece_bitsize(), decl_piece_varloc_ptr(), decode_addr_const(), decompose(), decompose_automod_address(), decompose_incdec_address(), decompose_mem_address(), decrease_live_ranges_number(), default_elf_select_rtx_section(), default_encode_section_info(), default_globalize_decl_name(), delegitimize_mem_from_attrs(), deletable_insn_p(), delete_address_reloads(), delete_address_reloads_1(), delete_computation(), delete_insn(), delete_move_and_clobber(), delete_output_reload(), delete_prior_computation(), delete_related_insns(), delete_unmarked_insns(), determine_max_iter(), df_def_record_1(), df_defs_record(), df_find_hard_reg_defs(), df_find_hard_reg_defs_1(), df_find_single_def_src(), df_get_call_refs(), df_insn_refs_collect(), df_notes_rescan(), df_remove_dead_and_unused_notes(), df_remove_dead_eq_notes(), df_simulate_one_insn_forwards(), df_uses_record(), diddle_return_value_1(), distribute_and_simplify_rtx(), distribute_links(), distribute_notes(), do_compare_rtx_and_jump(), do_jump(), do_local_cprop(), do_output_reload(), do_SUBST(), doloop_condition_get(), doloop_modify(), doloop_simplify_count(), drop_writeback(), dump_tm_clone_pairs(), duplicate_reg_note(), dw2_fix_up_crossing_landing_pad(), dw_loc_list_1(), dw_sra_loc_expr(), dwarf2out_frame_debug(), dwarf2out_frame_debug_adjust_cfa(), dwarf2out_frame_debug_cfa_expression(), dwarf2out_frame_debug_cfa_offset(), dwarf2out_frame_debug_cfa_register(), dwarf2out_frame_debug_def_cfa(), dwarf2out_frame_debug_expr(), rtx_expr_list::element(), eliminate_constant_term(), eliminate_implied_conditions(), eliminate_known_true(), eliminate_regs_1(), eliminate_regs_in_insn(), eliminate_regs_in_insn(), elimination_costs_in_insn(), elimination_effects(), address_reload_context::emit_autoinc(), emit_block_cmp_via_loop(), emit_block_move_via_loop(), emit_block_move_via_oriented_loop(), emit_block_op_via_libcall(), emit_call_1(), emit_clobber(), emit_cmp_and_jump_insn_1(), emit_conditional_add(), emit_conditional_move(), emit_copy_of_insn_after(), emit_delay_sequence(), emit_group_load(), emit_group_load_1(), emit_group_load_into_temps(), emit_group_move(), emit_group_move_into_temps(), emit_group_store(), emit_input_reload_insns(), emit_libcall_block_1(), emit_library_call_value_1(), emit_move_change_mode(), emit_move_complex_push(), emit_move_insn(), emit_move_multi_word(), emit_move_resolve_push(), emit_note_insn_var_location(), emit_notes_in_bb(), emit_push_insn(), emit_reload_insns(), emit_use(), equiv_address_substitution(), equiv_init_movable_p(), equiv_init_varies_p(), evaluate_eq_attr(), exact_int_to_float_conversion_p(), exp_equiv_p(), expand_assignment(), expand_atomic_compare_and_swap(), expand_atomic_fetch_op(), expand_builtin(), expand_builtin_apply(), expand_builtin_apply_args_1(), expand_builtin_cexpi(), expand_builtin_memory_copy_args(), expand_builtin_memset_args(), expand_builtin_strncpy(), expand_call(), expand_ccmp_expr(), expand_compound_operation(), expand_debug_expr(), expand_debug_parm_decl(), expand_delays(), expand_doubleword_mod(), expand_expr_addr_expr_1(), expand_expr_real_1(), expand_expr_real_2(), expand_field_assignment(), expand_function_end(), expand_function_start(), expand_loc(), expand_movstr(), expand_vec_cmp_expr(), ext_dce_process_sets(), ext_dce_process_uses(), ext_dce_try_optimize_insn(), extract_ashift_operands_p(), extract_left_shift(), extract_mem_from_operand(), extract_plus_operands(), extract_writebacks(), fill_attr(), fill_slots_from_thread(), filter_notes(), final_scan_insn_1(), find_address(), find_all_hard_reg_sets(), find_and_remove_re(), find_args_size_adjust(), find_attrs_to_cache(), find_auto_inc(), find_base_term(), find_base_value(), find_call_crossed_cheap_reg(), find_call_stack_args(), find_comparison_args(), find_cond_trap(), find_constant_src(), find_constant_term_loc(), find_decomposable_shift_zext(), find_decomposable_subregs(), find_equiv_reg(), find_first_parameter_load(), find_flags_uses_in_insn(), find_implicit_sets(), find_inc_amount(), find_list_elem(), find_loads(), find_matching_operand(), find_mem(), find_mem_conflicts(), find_memory_stores(), find_moveable_pseudos(), find_operand(), find_reg_equal_equiv_note(), find_reg_fusage(), find_reg_note(), find_reg_offset_for_const(), find_regno_fusage(), find_regno_note(), find_reloads(), find_reloads_address(), find_reloads_address_1(), find_reloads_address_part(), find_reloads_subreg_address(), find_reloads_toplev(), find_replacement(), find_reusable_reload(), find_single_use_1(), find_split_point(), find_subregs_of_mode(), find_temp_slot_from_address(), pair_fusion::find_trailing_add(), find_tune_attr(), find_tune_attr(), find_used_regs(), fix_crossing_conditional_branches(), fix_reg_dead_note(), fix_reg_equiv_init(), fixed_base_plus_p(), fixup_debug_uses(), flow_active_insn_p(), fold_rtx(), for_each_inc_dec(), for_each_inc_dec_find_inc_dec(), force_const_mem(), force_int_to_mode(), force_move_args_size_note(), force_nonfallthru_and_redirect(), force_operand(), force_reg(), force_reload_address(), form_sum(), form_sum(), forward_propagate_and_simplify(), forward_propagate_subreg(), fp_setter_insn(), free_EXPR_LIST_node(), free_INSN_LIST_node(), free_list(), free_load_extend(), function_invariant_p(), pair_fusion_bb_info::fuse_pair(), gcse_emit_move_after(), gen_addr_rtx(), gen_array_type_die(), gen_attr(), gen_attr(), gen_cond_trap(), gen_exp(), gen_group_rtx(), gen_insn(), gen_insn_reserv(), gen_insn_reserv(), gen_lowpart_common(), gen_lowpart_for_combine(), gen_lowpart_if_possible(), gen_reload(), gen_reload_chain_without_interm_reg_p(), general_operand(), get_addr(), get_address_mode(), get_alternatives_number(), get_args_size(), get_base_term(), get_biv_step_1(), get_branch_condition(), get_call_args(), get_call_fndecl(), get_call_rtx_from(), get_condition(), get_eh_region_and_lp_from_rtx(), get_equiv_regno(), get_extended_src_reg(), get_fnname_from_decl(), get_index_scale(), get_index_term(), get_integer_term(), get_last_value_validate(), get_mem_expr_from_op(), get_pattern_stats_1(), get_personality_function(), get_related_value(), get_secondary_mem(), pair_fusion::get_viable_bases(), globalize_decl(), hash_invariant_expr_1(), hash_rtx(), hash_scan_set(), hash_scan_set(), hash_scan_set(), identify_predicable_attribute(), if_test_bypass_p(), if_then_else_cond(), implicit_set_cond_p(), implies_p(), in_insn_list_p(), in_list_p(), inc_for_reload(), indirect_jump_optimize(), indirect_operand(), inherit_in_ebb(), inherit_reload_reg(), init_alias_analysis(), init_eliminable_invariants(), init_expmed_one_mode(), init_label_info(), init_one_libfunc_visibility(), initial_return_save(), initialize_argument_information(), insert_one_insn(), insert_right_side(), rtx_insn_list::insn(), insn_invalid_p(), insn_stack_adjust_offset_pre_post(), insns_have_identical_cfa_notes(), instantiate_decl_rtl(), instantiate_virtual_regs_in_insn(), instantiate_virtual_regs_in_rtx(), internal_arg_pointer_based_exp(), inv_can_prop_to_addr_use(), invalidate(), invalidate_any_buried_refs(), invalidate_dest(), invalidate_from_clobbers(), invalidate_from_sets_and_clobbers(), invariant_expr_equal_p(), invariant_or_equiv_p(), invariant_p(), invert_br_probabilities(), invert_exp_1(), is_based_loc(), is_cond_copy_insn(), is_parallel_of_n_reg_sets(), iv_analyze_def(), iv_analyze_expr(), iv_number_of_iterations(), kill_autoinc_value(), known_cond(), label_is_jump_target_p(), likely_spilled_retval_1(), likely_spilled_retval_p(), load_register_parameters(), loc_cmp(), loc_descriptor(), loc_equivalence_change_p(), loc_list_from_tree_1(), loc_mentioned_in_p(), local_cprop_pass(), lra_eliminate_regs_1(), lra_emit_add(), lra_emit_move(), lra_final_code_change(), lra_rtx_hash(), lra_set_insn_recog_data(), lra_substitute_pseudo(), lra_update_insn_regno_info(), lsb_bitfield_op_p(), main(), make_automaton_attrs(), make_canonical(), make_compound_operation(), make_compound_operation_int(), symtab_node::make_decl_local(), make_decl_rtl(), make_defs_and_copies_lists(), make_edges(), make_extraction(), make_field_assignment(), make_memloc(), make_reg_eh_region_note_nothrow_nononlocal(), make_safe_from(), make_tree(), mark_effect(), mark_jump_label_1(), mark_label_nuses(), mark_mode_tests(), mark_not_eliminable(), mark_not_eliminable(), mark_operands_from_match_dup(), mark_operands_used_in_match_dup(), mark_ref_regs(), mark_referenced_regs(), mark_referenced_resources(), mark_set_resources(), mark_target_live_regs(), mark_used_flags(), mark_used_regs_combine(), mark_user_reg(), mark_weak(), match_pattern_2(), match_plus_neg_pattern(), match_rtx(), max_attr_value(), max_operand_1(), may_alias_p(), may_trap_p_1(), maybe_emit_sync_lock_test_and_set(), maybe_fix_stack_asms(), maybe_legitimize_operand_same_code(), maybe_merge_cfa_adjust(), maybe_move_args_size_note(), maybe_output_constant_def_contents(), maybe_propagate_label_ref(), maybe_swap_commutative_operands(), mem_autoinc_base(), mem_loc_descriptor(), memory_address_addr_space(), memref_referenced_p(), memrefs_conflict_p(), mems_conflict_for_gcse_p(), mention_regs(), merge_def_and_ext(), merge_memattrs(), merge_notes(), min_attr_value(), minmax_loc_descriptor(), modified_between_p(), modified_in_p(), modify_attr_enabled_ce(), move2add_note_store(), move2add_use_add3_insn(), move_dead_notes(), move_deaths(), move_invariant_reg(), move_plus_up(), multiplier_allowed_in_address_p(), needs_variable(), rtx_expr_list::next(), rtx_insn_list::next(), NEXT_INSN(), no_unhandled_cfa(), noce_bbs_ok_for_cond_zero_arith(), noce_can_force_operand(), noce_convert_multiple_sets(), noce_convert_multiple_sets_1(), noce_emit_czero(), noce_emit_move_insn(), noce_emit_store_flag(), noce_find_if_block(), noce_get_alt_condition(), noce_get_condition(), noce_operand_ok(), noce_process_if_block(), noce_try_abs(), noce_try_addcc(), noce_try_bitop(), noce_try_cmove(), noce_try_cmove_arith(), noce_try_minmax(), noce_try_move(), noce_try_sign_mask(), noce_try_store_flag_constants(), nonoverlapping_memrefs_p(), nonzero_address_p(), nonzero_bits1(), note_pattern_stores(), note_stores(), note_uses(), notice_stack_pointer_modification_1(), notify_dependents_of_changed_value(), num_sign_bit_copies1(), offset_address(), offsettable_address_addr_space_p(), offsettable_memref_p(), offsettable_nonstrict_memref_p(), old_insns_match_p(), one_cprop_pass(), operand_for_swap_move_operator(), rtx_writer::operand_has_default_value_p(), operand_subword(), operands_match_p(), operands_match_p(), oprs_unchanged_p(), oprs_unchanged_p(), outgoing_edges_match(), output_addr_const(), output_constant_pool_1(), pair_mem_strip_offset(), parse_add_or_inc(), patch_jump_insn(), PATTERN(), peep2_attempt(), pieces_addr::pieces_addr(), place_block_symbol(), plus_constant(), plus_minus_operand_p(), pop_operand(), popcount_loc_descriptor(), prefer_and_bit_test(), prepare_call_arguments(), prepare_cmp_insn(), preserve_temp_slots(), PREV_INSN(), print_exp(), print_insn_with_notes(), print_pattern(), rtx_writer::print_rtx_operand_code_e(), rtx_writer::print_rtx_operand_code_u(), print_value(), process_address_1(), process_bb_lives(), pair_fusion::process_block(), process_define_constraint(), process_define_predicate(), process_define_predicate(), process_one_cond_exec(), process_pending_assemble_externals(), process_set_for_memref_referenced_p(), prune_expressions(), purge_dead_edges(), purge_dead_tablejump_edges(), push_operand(), push_reg_equiv_alt_mem(), push_reload(), read_complex_part(), rtx_reader::read_rtx_operand(), rtx_reader::read_rtx_variadic(), recog_for_combine_1(), record_address_regs(), record_dead_and_set_regs(), record_jump_equiv(), record_one_stack_ref(), record_operand_costs(), record_opr_changes(), record_set(), record_store(), record_value_for_reg(), redirect_exp_1(), redirect_jump_2(), references_value_p(), refers_to_mem_for_reload_p(), refers_to_regno_for_reload_p(), refers_to_regno_p(), reg_bitfield_target_p(), reg_inc_found_and_valid_p(), reg_mentioned_p(), reg_overlap_mentioned_for_reload_p(), reg_overlap_mentioned_p(), reg_referenced_p(), reg_scan_mark_refs(), reg_set_p(), reg_subword_p(), regno_clobbered_p(), regno_use_in(), regno_val_use_in(), regstat_bb_compute_ri(), reload(), reload_as_needed(), reload_combine(), reload_combine_note_store(), reload_combine_note_use(), reload_combine_recognize_const_pattern(), reload_combine_recognize_pattern(), reload_cse_move2add(), reload_cse_move2add_invalidate(), reload_cse_regs_1(), reload_cse_simplify(), remove_clobbers(), remove_constraints(), remove_free_EXPR_LIST_node(), remove_init_insns(), remove_list_node(), remove_node_from_insn_list(), remove_note(), remove_pseudos(), remove_reachable_equiv_notes(), remove_reg_equal_equiv_notes(), renumerate_operands_in_pattern(), replace_duplicating_operands_in_pattern(), replace_equiv_address(), replace_expr_with_values(), replace_label(), replace_oldest_value_addr(), replace_oldest_value_mem(), replace_operands_with_dups(), replace_pseudos_in(), replace_rtx(), replace_store_insn(), resolve_clobber(), resolve_reg_notes(), resolve_shift_zext(), resolve_simple_move(), resolve_use(), rest_of_handle_final(), reverse_op(), reversed_comparison(), reversed_comparison_code(), reversed_comparison_code_parts(), reversed_condition(), rotate_loc_descriptor(), rtl_for_decl_location(), rtl_lv_add_condition_to_bb(), rtl_predicted_by_p(), rtx_addr_can_trap_p_1(), rtx_addr_varies_p(), rtx_cost(), rtx_equal_for_cselib_1(), rtx_equal_for_memref_p(), rtx_equal_p(), rtx_for_function_call(), rtx_moveable_p(), rtx_renumbered_equal_p(), rtx_unstable_p(), rtx_varies_p(), safe_from_p(), save_call_clobbered_regs(), scan_insn(), scan_one_insn(), scan_operands(), scan_paradoxical_subregs(), scan_rtx(), scan_rtx_address(), scompare_loc_descriptor(), scompare_loc_descriptor_narrow(), set_for_reg_notes(), set_label_offsets(), set_mem_attrs_for_spill(), SET_NEXT_INSN(), set_noop_p(), SET_PREV_INSN(), set_reg_attrs_for_decl_rtl(), set_reg_attrs_for_parm(), set_reg_attrs_from_value(), set_rtl(), set_slot_part(), set_storage_via_libcall(), set_unique_reg_note(), set_user_assembler_libfunc(), setup_reg_equiv(), setup_save_areas(), shared_const_p(), shift_cost(), shorten_branches(), should_replace_address(), side_effects_p(), simple_move_operand(), simple_rhs_p(), simplify_and_const_int_1(), simplify_and_tree(), simplify_context::simplify_associative_operation(), simplify_context::simplify_binary_operation_1(), simplify_context::simplify_byte_swapping_operation(), simplify_comparison(), simplify_cond(), simplify_context::simplify_cond_clz_ctz(), simplify_const_relational_operation(), simplify_context::simplify_distributive_operation(), simplify_if_then_else(), simplify_logical(), simplify_context::simplify_logical_relational_operation(), simplify_context::simplify_merge_mask(), simplify_operand_subreg(), simplify_or_tree(), simplify_context::simplify_plus_minus(), simplify_context::simplify_relational_operation(), simplify_context::simplify_relational_operation_1(), simplify_replace_fn_rtx(), simplify_rotate_op(), simplify_rtx(), simplify_set(), simplify_shift_const_1(), simplify_context::simplify_subreg(), simplify_context::simplify_ternary_operation(), simplify_test_exp(), simplify_context::simplify_truncation(), simplify_context::simplify_unary_operation_1(), simplify_using_condition(), simplify_using_initial_values(), simplify_while_replacing(), sjlj_emit_function_enter(), sjlj_emit_function_exit(), sjlj_fix_up_crossing_landing_pad(), sjlj_mark_call_sites(), skip_usage_debug_insns(), sp_based_mem_offset(), spill_pseudos(), split_const(), split_if_necessary(), split_insn(), split_reg(), stack_adjust_offset_pre_post(), stack_adjust_offset_pre_post_cb(), stack_memref_p(), store_killed_in_insn(), store_killed_in_pat(), store_one_arg(), strip_address_mutations(), strip_not(), strip_offset(), subst(), subst_dup(), subst_indexed_address(), subst_pattern_match(), subst_reg_equivs(), subst_reloads(), substitute(), substitute(), substitute_address(), suitable_set_for_replacement(), tablejump_casesi_pattern(), tests_attr_p(), thread_jump(), pair_fusion_bb_info::track_access(), track_expr_p(), transform_ifelse(), tree_output_constant_def(), true_dependence_1(), try_apply_stack_adjustment(), try_back_substitute_reg(), try_combine(), try_eliminate_compare(), try_emit_cmove_seq(), pair_fusion_bb_info::try_fuse_pair(), try_fwprop_subst_note(), try_fwprop_subst_notes(), try_fwprop_subst_pattern(), pair_fusion::try_promote_writeback(), try_replace_in_use(), try_replace_reg(), try_split(), try_store_by_multiple_pieces(), rtx_properties::try_to_add_dest(), rtx_properties::try_to_add_insn(), rtx_properties::try_to_add_pattern(), rtx_properties::try_to_add_src(), typed_binop(), ucompare_loc_descriptor(), update_auto_inc_notes(), update_br_prob_note(), update_equiv_regs(), update_inc_notes(), update_reg_dead_notes(), update_reg_equal_equiv_notes(), update_reg_unused_notes(), update_rsp_from_reg_equal(), update_table_tick(), update_temp_slot_address(), use_anchored_address(), use_group_regs(), use_narrower_mode(), use_narrower_mode_test(), use_type(), uses_hard_regs_p(), val_bind(), valid_base_or_index_term_p(), validate_autoinc_and_mem_addr_p(), validate_equiv_mem(), validate_exp(), validate_pattern(), validate_replace_rtx_1(), validate_replace_rtx_group(), validate_test_and_branch(), validize_mem(), values_equal_p(), vec_duplicate_p(), vec_series_p(), verify_changes(), verify_rtx_sharing(), volatile_insn_p(), volatile_refs_p(), vt_add_function_parameter(), vt_canon_true_dep(), vt_canonicalize_addr(), vt_get_canonicalize_base(), vt_get_decl_and_offset(), vt_initialize(), walk_alter_subreg(), walk_attr_value(), walk_insn_part(), walk_rtx(), will_delete_init_insn_p(), write_attr_set(), write_attr_value(), write_complex_part(), write_dependence_p(), write_insn_const_int_ok_for_constraint(), write_predicate_expr(), write_predicate_stmts(), write_predicate_subfunction(), and write_test_expr().
#define XINT | ( | RTX, | |
N ) |
Referenced by add_constraints(), inchash::add_rtx(), add_shallow_copy_of_reg_note(), alter_predicate_for_insn(), apply_int_iterator(), attr_rtx_1(), br_prob_note_reliable_p(), collect_insn_data(), combine_predictions_for_insn(), compute_outgoing_frequencies(), cond_exec_process_if_block(), const_ok_for_output_1(), const_rtx_hash_1(), convert_memory_address_addr_space_1(), cselib_hash_rtx(), dead_or_predicable(), duplicate_reg_note(), exp_equiv_p(), find_operand(), fixup_reorder_chain(), force_nonfallthru_and_redirect(), gen_bypass(), gen_exp(), gen_insn_reserv(), gen_insn_reserv(), gen_rtx_scratch(), generate_match_dup(), get_alternatives_number(), get_pattern_stats_1(), hash_invariant_expr_1(), hash_rtx(), invariant_expr_equal_p(), invert_br_probabilities(), loc_cmp(), lra_rtx_hash(), mark_operands_from_match_dup(), mark_operands_used_in_match_dup(), match_pattern_2(), match_rtx(), max_operand_1(), mem_loc_descriptor(), mostly_true_jump(), operands_match_p(), operands_match_p(), output_peephole2_scratches(), print_exp(), print_insn_with_notes(), rtx_writer::print_rtx_operand(), rtx_writer::print_rtx_operand_code_i(), purge_dead_edges(), function_reader::read_rtx_operand_inL(), renumerate_operands_in_pattern(), replace_duplicating_operands_in_pattern(), replace_operands_with_dups(), rtl_verify_edges(), rtx_equal_for_cselib_1(), rtx_equal_for_memref_p(), rtx_equal_p(), rtx_renumbered_equal_p(), scan_operands(), subst_dup(), subst_pattern_match(), try_eliminate_compare(), try_split(), update_br_prob_note(), validate_pattern(), walk_insn_part(), walk_rtx(), and write_test_expr().
#define XLOC | ( | RTX, | |
N ) |
Referenced by inchash::add_rtx(), apply_int_iterator(), attr_rtx_1(), cselib_hash_rtx(), exp_equiv_p(), gen_exp(), hash_invariant_expr_1(), hash_rtx(), INSN_LOCATION(), INSN_LOCATION(), loc_cmp(), lra_rtx_hash(), operands_match_p(), operands_match_p(), rtx_equal_for_cselib_1(), rtx_equal_for_memref_p(), rtx_equal_p(), and rtx_renumbered_equal_p().
#define XMODE | ( | RTX, | |
N ) |
#define XSTR | ( | RTX, | |
N ) |
Referenced by add_attributes(), add_const_value_attribute(), add_constraint(), add_constraints(), add_define_attr(), add_insn(), add_mode_tests(), inchash::add_rtx(), alter_attrs_for_insn(), alter_attrs_for_subst_insn(), alter_constraints(), alter_output_for_insn(), alter_predicate_for_insn(), alter_test_for_insn(), asm_insn_count(), assemble_external_libcall(), assemble_undefined_decl(), assemble_variable(), attr_checksum(), attr_checksum_ordered(), attr_numeral(), attr_rtx_1(), attr_rtx_cost(), attr_value_alignment(), change_subst_attribute(), check_attr_test(), check_attr_value(), check_define_attr_duplicates(), check_defs(), check_tune_attr(), check_tune_attr(), collect_insn_data(), compare_base_symbol_refs(), compare_constant(), compares_alternatives_p(), compute_alternative_mask(), compute_test_codes(), const_hash_1(), const_rtx_hash_1(), convert_set_attr(), convert_set_attr_alternative(), copy_boolean(), md_reader::copy_rtx_for_iterators(), count_alternatives(), create_block_symbol(), cselib_hash_rtx(), debug_optab_libfuncs(), decode_asm_operands(), def_target_insn(), default_globalize_decl_name(), dw2_asm_output_encoded_addr_rtx(), dw2_force_const_mem(), emit_library_call_value_1(), insn_hasher::equal(), evaluate_eq_attr(), exp_equiv_p(), fill_attr(), final_scan_insn_1(), find_attrs_to_cache(), find_matching_operand(), find_tune_attr(), find_tune_attr(), gen_array_type_die(), gen_attr(), gen_attr(), gen_attr(), gen_automata_option(), gen_automaton(), gen_bypass(), gen_bypass(), gen_cpu_unit(), gen_excl_set(), gen_exp(), gen_expand(), gen_expand(), gen_insn(), gen_insn(), gen_insn(), gen_insn(), gen_insn(), gen_insn_reserv(), gen_insn_reserv(), gen_mnemonic_attr(), gen_mnemonic_setattr(), gen_peephole(), gen_presence_absence_set(), gen_proto(), gen_query_cpu_unit(), gen_reserv(), gen_split(), generate_switch_p(), get_alternatives_number(), get_c_test(), get_fnname_from_decl(), get_some_local_dynamic_name(), globalize_decl(), has_subst_attribute(), insn_hasher::hash(), hash_rtx(), identify_predicable_attribute(), is_predicable(), loc_cmp(), lra_rtx_hash(), main(), make_automaton_attrs(), make_canonical(), mark_mode_tests(), match_rtx(), max_attr_value(), min_attr_value(), modify_attr_enabled_ce(), needs_variable(), note_constraint(), rtx_writer::operand_has_default_value_p(), operands_match_p(), operands_match_p(), output_addr_const(), output_constant_def_contents(), output_constant_pool_contents(), output_object_block(), output_peephole2_scratches(), predicate_name(), print_pattern(), rtx_writer::print_rtx_operand(), print_value(), process_define_constraint(), process_define_predicate(), process_define_predicate(), process_define_register_constraint(), process_define_register_constraint(), process_define_subst(), process_one_cond_exec(), process_pending_assemble_externals(), process_rtx(), process_substs_on_one_elem(), read_md_rtx(), rtx_reader::read_rtx_operand(), remove_constraints(), replace_duplicating_operands_in_pattern(), resolve_addr_in_expr(), rtx_equal_for_cselib_1(), rtx_equal_for_memref_p(), rtx_equal_p(), rtx_renumbered_equal_p(), scan_operands(), simplify_and_tree(), simplify_or_tree(), simplify_test_exp(), subst_pattern_match(), tests_attr_p(), validate_exp(), validate_pattern(), walk_attr_value(), write_attr_value(), write_insn_cases(), write_match_code_switch(), write_predicate_expr(), write_predicate_subfunction(), and write_test_expr().
#define XTMPL | ( | RTX, | |
N ) |
Referenced by alter_output_for_insn(), alter_output_for_subst_insn(), convert_syntax(), md_reader::copy_rtx_for_iterators(), gen_insn(), gen_mnemonic_setattr(), gen_peephole(), rtx_writer::print_rtx_operand(), process_one_cond_exec(), process_substs_on_one_elem(), and rtx_reader::read_rtx_operand().
#define XTREE | ( | RTX, | |
N ) |
Referenced by rtx_writer::print_rtx_operand(), and rtx_renumbered_equal_p().
#define XUINT | ( | RTX, | |
N ) |
#define XVEC | ( | RTX, | |
N ) |
Referenced by add_attributes(), add_constraints(), add_implicit_parallel(), alter_attrs_for_insn(), alter_attrs_for_subst_insn(), attr_rtx_1(), change_subst_attribute(), check_defs(), check_promoted_subreg(), cleanup_auto_inc_dec(), collect_insn_data(), function_reader::consolidate_singletons(), convert_set_attr(), convert_set_attr_alternative(), copy_insn_1(), copy_rtx(), md_reader::copy_rtx_for_iterators(), copy_rtx_if_shared_1(), count_alternatives(), cselib_expand_value_rtx_1(), cselib_subst_to_values(), decompose_register(), def_target_insn(), eliminate_regs_1(), expand_delays(), fill_attr(), find_matching_operand(), find_operand(), gen_expand(), gen_expand(), gen_expand(), gen_insn(), gen_insn(), gen_insn(), gen_mnemonic_attr(), gen_mnemonic_setattr(), gen_peephole(), gen_split(), get_alternatives_number(), rtx_jump_table_data::get_labels(), get_peephole2_pattern(), handle_overloaded_gen(), handle_overloaded_gen(), has_subst_attribute(), is_predicable(), loc_descriptor(), lra_eliminate_regs_1(), main(), make_automaton_attrs(), make_canonical(), rtx_writer::print_rtx_operand_codes_E_and_V(), process_one_cond_exec(), process_rtx(), process_substs_on_one_elem(), rtx_reader::read_rtx_operand(), reg_scan_mark_refs(), remove_clobbers(), remove_constraints(), replace_label(), replace_operands_with_dups(), scan_operands(), simplify_cond(), simplify_replace_fn_rtx(), subst_dup(), substitute_address(), try_combine(), vec_series_highpart_p(), vec_series_lowpart_p(), verify_rtx_sharing(), walk_attr_value(), and walk_insn_part().
#define XVECEXP | ( | RTX, | |
N, | |||
M ) |
Referenced by add_attributes(), add_auto_inc_notes(), add_constraints(), add_label_notes(), add_regs_to_insn_regno_info(), inchash::add_rtx(), adjust_insn(), alter_constraints(), alter_predicate_for_insn(), alter_subregs(), insn_propagation::apply_to_pattern_1(), insn_propagation::apply_to_rvalue_1(), arithmetic_flags_clobber_p(), asm_noperands(), assign_parm_adjust_entry_rtl(), assign_parm_is_stack_parm(), attr_rtx_cost(), attr_value_alignment(), avoid_complex_debug_insns(), bad_for_rematerialization_p(), build_def_use(), call_from_call_insn(), can_combine_p(), can_split_parallel_of_n_reg_sets(), canon_reg(), canon_reg_for_combine(), canonicalize_insn(), change_regs(), check_attr_value(), check_defs(), check_eliminable_occurrences(), check_maybe_invariant(), check_promoted_subreg(), check_sibcall_argument_overlap_1(), classify_insn(), cleanup_auto_inc_dec(), clear_struct_flag(), collect_insn_data(), collect_non_operand_hard_regs(), combinable_i3pat(), compares_alternatives_p(), compute_transp(), computed_jump_p(), computed_jump_p_1(), concatn_loc_descriptor(), condjump_in_parallel_p(), conforming_compare(), const_ok_for_output_1(), contains_reg_p(), convert_memory_address_addr_space_1(), convert_set_attr(), convert_set_attr_alternative(), convert_to_eh_region_ranges(), copy_insn_1(), copy_replacements_1(), copy_rtx(), md_reader::copy_rtx_for_iterators(), copy_rtx_if_shared_1(), count_alternatives(), count_occurrences(), count_reg_usage(), count_rtxs(), covers_regno_p(), create_insn_allocnos(), cse_insn(), cselib_expand_value_rtx_1(), cselib_hash_rtx(), cselib_record_sets(), cselib_subst_to_values(), dbr_schedule(), dead_or_set_regno_p(), dead_pseudo_p(), decode_asm_operands(), decompose_register(), default_unspec_may_trap_p(), deletable_insn_p(), delete_address_reloads_1(), delete_prior_computation(), df_def_record_1(), df_defs_record(), df_find_hard_reg_defs(), df_find_hard_reg_defs_1(), df_uses_record(), diddle_return_value_1(), distribute_links(), doloop_condition_get(), dwarf2out_frame_debug(), dwarf2out_frame_debug_cfa_offset(), dwarf2out_frame_debug_cfa_restore(), dwarf2out_frame_debug_expr(), dwf_cfa_reg(), rtx_sequence::element(), eliminate_regs_1(), elimination_effects(), emit_delay_sequence(), emit_group_load(), emit_group_load_1(), emit_group_load_into_temps(), emit_group_move(), emit_group_move_into_temps(), emit_group_store(), equal_different_set_p(), equiv_init_movable_p(), equiv_init_varies_p(), evaluate_eq_attr(), exp_equiv_p(), expand_asm_loc(), expand_asm_stmt(), expand_builtin_init_dwarf_reg_sizes(), expand_call(), expand_debug_expr(), expand_delays(), extract_asm_operands(), extract_insn(), fill_attr(), fill_simple_delay_slots(), fill_slots_from_thread(), final_scan_insn_1(), find_address(), find_args_size_adjust(), find_attrs_to_cache(), find_equiv_reg(), find_flags_uses_in_insn(), find_inc_amount(), find_loads(), find_matching_operand(), find_mem(), find_operand(), find_sets_in_insn(), find_single_use_1(), find_subregs_of_mode(), find_used_regs(), fix_crossing_conditional_branches(), gen_delay(), gen_exp(), gen_expand(), gen_expand(), gen_expand(), gen_group_rtx(), gen_insn(), gen_insn(), gen_insn(), gen_mnemonic_attr(), gen_mnemonic_setattr(), gen_peephole(), gen_peephole(), gen_peephole(), gen_peephole2(), gen_split(), get_alternatives_number(), get_branch_condition(), get_call_rtx_from(), get_eh_region_and_lp_from_rtx(), get_equiv_regno(), get_last_value_validate(), get_pattern_stats_1(), get_peephole2_pattern(), get_sub_rtx(), hard_reg_set_here_p(), hash_invariant_expr_1(), hash_rtx(), hash_scan_insn(), hash_scan_insn(), if_test_bypass_p(), inherit_in_ebb(), initialize_argument_information(), rtx_sequence::insn(), insn_invalid_p(), insn_live_p(), insn_stack_adjust_offset_pre_post(), interesting_dest_for_shprep(), invalidate(), invalidate_any_buried_refs(), invalidate_from_clobbers(), invalidate_from_sets_and_clobbers(), invariant_expr_equal_p(), invariant_p(), is_parallel_of_n_reg_sets(), known_cond(), leaf_function_p(), loc_cmp(), loc_equivalence_change_p(), loc_mentioned_in_p(), location_for_asm(), lra_eliminate_regs_1(), lra_rtx_hash(), lra_set_insn_recog_data(), lra_substitute_pseudo(), main(), make_automaton_attrs(), make_canonical(), make_compound_operation(), mark_jump_label_1(), mark_label_nuses(), mark_not_eliminable(), mark_operands_from_match_dup(), mark_operands_used_in_match_dup(), mark_ref_regs(), mark_referenced_regs(), mark_referenced_resources(), mark_set_resources(), mark_used_flags(), mark_used_regs_combine(), match_pattern_1(), match_pattern_2(), match_rtx(), max_attr_value(), max_operand_1(), may_trap_p_1(), maybe_fix_stack_asms(), mem_loc_descriptor(), memref_referenced_p(), mention_regs(), merge_memattrs(), min_attr_value(), modified_between_p(), modified_in_p(), move2add_use_add2_insn(), move_deaths(), multiple_reg_loc_descriptor(), multiple_sets(), need_fake_edge_p(), noop_move_p(), note_pattern_stores(), note_uses(), num_operands(), operands_match_p(), operands_match_p(), oprs_unchanged_p(), oprs_unchanged_p(), outgoing_edges_match(), output_peephole2_scratches(), pattern_cost(), pc_set(), pre_insert_copy_insn(), print_exp(), print_insn(), print_pattern(), rtx_writer::print_rtx_operand_codes_E_and_V(), process_bb_node_lives(), process_one_cond_exec(), process_rtx(), process_substs_on_one_elem(), recog_for_combine(), recog_for_combine_1(), redirect_exp_1(), redirect_jump_1(), redirect_with_delay_slots_safe_p(), redundant_insn(), references_value_p(), refers_to_regno_for_reload_p(), refers_to_regno_p(), reg_bitfield_target_p(), reg_mentioned_p(), reg_overlap_mentioned_p(), reg_referenced_p(), reg_scan_mark_refs(), reg_set_p(), regno_clobbered_p(), regno_use_in(), regno_val_use_in(), relax_delay_slots(), reload_combine_note_use(), reload_combine_recognize_const_pattern(), reload_cse_move2add(), reload_cse_simplify(), remove_clobbers(), remove_constraints(), remove_pseudos(), renumerate_operands_in_pattern(), replace_duplicating_operands_in_pattern(), replace_oldest_value_addr(), replace_operands_with_dups(), replace_pseudos_in(), replace_reg_with_saved_mem(), replace_rtx(), reset_all_used_flags(), resolve_operand_for_swap_move_operator(), resolve_simple_move(), return_insn_p(), rtx_addr_varies_p(), rtx_cost(), rtx_equal_for_cselib_1(), rtx_equal_for_memref_p(), rtx_equal_p(), rtx_moveable_p(), rtx_renumbered_equal_p(), rtx_unstable_p(), rtx_varies_p(), save_call_clobbered_regs(), scan_insn(), scan_operands(), scan_paradoxical_subregs(), scan_rtx(), scan_rtx_address(), set_for_reg_notes(), set_label_offsets(), set_noop_p(), set_reg_attrs_for_decl_rtl(), set_reg_attrs_for_parm(), set_return_jump_label(), set_rtl(), shorten_branches(), side_effects_p(), simple_regno_set(), simplify_context::simplify_binary_operation_1(), simplify_cond(), simplify_subreg_concatn(), simplify_context::simplify_ternary_operation(), single_set_2(), single_set_for_csa(), store_data_bypass_p(), store_data_bypass_p_1(), store_killed_in_insn(), subst(), subst_dup(), subst_pattern_match(), substitute(), substitute(), substitute_address(), tests_attr_p(), thread_jump(), try_apply_stack_adjustment(), try_combine(), try_eliminate_compare(), try_merge_delay_insns(), rtx_properties::try_to_add_dest(), rtx_properties::try_to_add_pattern(), update_equiv_regs(), update_table_tick(), use_group_regs(), uses_hard_regs_p(), validate_autoinc_and_mem_addr_p(), validate_change_1(), validate_pattern(), validate_replace_rtx_1(), validate_simplify_insn(), verify_changes(), verify_rtl_sharing(), verify_rtx_sharing(), volatile_insn_p(), volatile_refs_p(), vt_add_function_parameter(), vt_get_decl_and_offset(), walk_attr_value(), walk_insn_part(), walk_rtx(), and write_attr_set().
#define XVECLEN | ( | RTX, | |
N ) |
Referenced by add_attributes(), add_auto_inc_notes(), add_constraints(), add_label_notes(), add_regs_to_insn_regno_info(), inchash::add_rtx(), adjust_insn(), alter_constraints(), alter_predicate_for_insn(), alter_subregs(), insn_propagation::apply_to_pattern_1(), insn_propagation::apply_to_rvalue_1(), arithmetic_flags_clobber_p(), asm_noperands(), assign_parm_adjust_entry_rtl(), attr_rtx_cost(), attr_value_alignment(), avoid_complex_debug_insns(), bad_for_rematerialization_p(), can_combine_p(), cancel_changes(), canon_reg(), canon_reg_for_combine(), canonicalize_insn(), change_regs(), check_attr_value(), check_defs(), check_eliminable_occurrences(), check_maybe_invariant(), check_promoted_subreg(), check_sibcall_argument_overlap_1(), classify_insn(), cleanup_auto_inc_dec(), clear_struct_flag(), collect_insn_data(), collect_non_operand_hard_regs(), combinable_i3pat(), compares_alternatives_p(), compute_transp(), computed_jump_p(), computed_jump_p_1(), concatn_loc_descriptor(), conforming_compare(), const_ok_for_output_1(), const_vector_elt(), const_vector_int_elt(), contains_reg_p(), convert_memory_address_addr_space_1(), convert_set_attr_alternative(), copy_insn_1(), copy_replacements_1(), copy_rtx(), md_reader::copy_rtx_for_iterators(), copy_rtx_if_shared_1(), count_alternatives(), count_occurrences(), count_reg_usage(), count_rtxs(), covers_regno_p(), create_insn_allocnos(), cse_insn(), cse_prescan_path(), cselib_expand_value_rtx_1(), cselib_hash_rtx(), cselib_record_sets(), cselib_subst_to_values(), dbr_schedule(), dbr_sequence_length(), dead_or_set_regno_p(), dead_pseudo_p(), decode_asm_operands(), default_unspec_may_trap_p(), deletable_insn_p(), delete_address_reloads_1(), delete_from_delay_slot(), delete_prior_computation(), df_def_record_1(), df_defs_record(), df_find_hard_reg_defs(), df_find_hard_reg_defs_1(), df_uses_record(), diddle_return_value_1(), distribute_links(), dwarf2out_frame_debug_cfa_offset(), dwarf2out_frame_debug_cfa_restore(), dwarf2out_frame_debug_expr(), dwf_cfa_reg(), eliminate_regs_1(), elimination_effects(), emit_group_load(), emit_group_load_1(), emit_group_load_into_temps(), emit_group_move(), emit_group_move_into_temps(), emit_group_store(), equal_different_set_p(), equiv_init_movable_p(), equiv_init_varies_p(), evaluate_eq_attr(), exp_equiv_p(), expand_builtin_init_dwarf_reg_sizes(), expand_delays(), fill_attr(), final_scan_insn_1(), find_address(), find_args_size_adjust(), find_attrs_to_cache(), find_equiv_reg(), find_inc_amount(), find_loads(), find_matching_operand(), find_mem(), find_operand(), find_sets_in_insn(), find_single_use_1(), find_subregs_of_mode(), find_used_regs(), gen_delay(), gen_exp(), gen_expand(), gen_expand(), gen_expand(), gen_group_rtx(), gen_insn(), gen_insn(), gen_insn(), gen_insn(), gen_mnemonic_attr(), gen_mnemonic_setattr(), gen_peephole(), gen_peephole(), gen_peephole(), gen_peephole2(), gen_split(), get_alternatives_number(), get_equiv_regno(), get_last_value_validate(), get_pattern_stats_1(), get_peephole2_pattern(), get_sub_rtx(), hard_reg_set_here_p(), hash_invariant_expr_1(), hash_rtx(), hash_scan_insn(), hash_scan_insn(), if_test_bypass_p(), insn_live_p(), insn_stack_adjust_offset_pre_post(), interesting_dest_for_shprep(), invalidate(), invalidate_any_buried_refs(), invalidate_from_clobbers(), invalidate_from_sets_and_clobbers(), invariant_expr_equal_p(), invariant_p(), is_parallel_of_n_reg_sets(), known_cond(), loc_cmp(), loc_equivalence_change_p(), loc_mentioned_in_p(), lra_eliminate_regs_1(), lra_rtx_hash(), lra_set_insn_recog_data(), lra_substitute_pseudo(), main(), make_canonical(), make_compound_operation(), make_return_insns(), mark_jump_label_1(), mark_label_nuses(), mark_not_eliminable(), mark_operands_from_match_dup(), mark_operands_used_in_match_dup(), mark_ref_regs(), mark_referenced_regs(), mark_referenced_resources(), mark_set_resources(), mark_used_flags(), mark_used_regs_combine(), match_pattern_1(), match_pattern_2(), match_rtx(), max_attr_value(), max_operand_1(), may_trap_p_1(), maybe_fix_stack_asms(), mem_loc_descriptor(), memref_referenced_p(), mention_regs(), merge_memattrs(), min_attr_value(), modified_between_p(), modified_in_p(), move_deaths(), multiple_reg_loc_descriptor(), multiple_sets(), noop_move_p(), note_pattern_stores(), note_uses(), num_operands(), operands_match_p(), operands_match_p(), oprs_unchanged_p(), oprs_unchanged_p(), outgoing_edges_match(), output_peephole2_scratches(), pattern_cost(), pre_insert_copy_insn(), print_exp(), print_pattern(), rtx_writer::print_rtx_operand_codes_E_and_V(), process_bb_node_lives(), process_one_cond_exec(), process_rtx(), process_substs_on_one_elem(), recog_for_combine(), recog_for_combine_1(), redirect_exp_1(), redundant_insn(), references_value_p(), refers_to_regno_for_reload_p(), refers_to_regno_p(), reg_bitfield_target_p(), reg_mentioned_p(), reg_overlap_mentioned_p(), reg_referenced_p(), reg_scan_mark_refs(), reg_set_p(), regno_clobbered_p(), regno_use_in(), regno_val_use_in(), relax_delay_slots(), reload_combine_note_use(), reload_combine_recognize_const_pattern(), reload_cse_simplify(), remove_clobbers(), remove_constraints(), remove_pseudos(), renumerate_operands_in_pattern(), replace_duplicating_operands_in_pattern(), replace_oldest_value_addr(), replace_operands_with_dups(), replace_pseudos_in(), replace_rtx(), reset_all_used_flags(), rtx_addr_varies_p(), rtx_cost(), rtx_equal_for_cselib_1(), rtx_equal_for_memref_p(), rtx_equal_p(), rtx_moveable_p(), rtx_renumbered_equal_p(), rtx_unstable_p(), rtx_varies_p(), scan_insn(), scan_operands(), scan_paradoxical_subregs(), scan_rtx(), scan_rtx_address(), set_label_offsets(), set_noop_p(), set_reg_attrs_for_decl_rtl(), set_reg_attrs_for_parm(), shorten_branches(), side_effects_p(), simple_regno_set(), simplify_context::simplify_binary_operation_1(), simplify_cond(), simplify_subreg_concatn(), single_set_2(), single_set_for_csa(), steal_delay_list_from_target(), store_data_bypass_p(), store_data_bypass_p_1(), store_killed_in_insn(), subst(), subst_dup(), subst_pattern_match(), substitute(), substitute(), substitute_address(), swap_change(), tests_attr_p(), thread_jump(), try_apply_stack_adjustment(), try_combine(), try_eliminate_compare(), try_merge_delay_insns(), rtx_properties::try_to_add_dest(), rtx_properties::try_to_add_pattern(), update_equiv_regs(), update_table_tick(), use_group_regs(), uses_hard_regs_p(), validate_autoinc_and_mem_addr_p(), validate_change_1(), validate_pattern(), validate_replace_rtx_1(), validate_simplify_insn(), vec_series_highpart_p(), vec_series_lowpart_p(), verify_changes(), verify_rtl_sharing(), verify_rtx_sharing(), volatile_insn_p(), volatile_refs_p(), vt_add_function_parameter(), vt_get_decl_and_offset(), walk_attr_value(), walk_insn_part(), walk_rtx(), write_attr_set(), and write_eligible_delay().
#define XWINT | ( | RTX, | |
N ) |
Referenced by inchash::add_rtx(), apply_int_iterator(), attr_alt_complement(), attr_alt_intersection(), attr_alt_subset_of_compl_p(), attr_alt_subset_p(), attr_alt_union(), attr_rtx_1(), check_attr_test(), compute_alternative_mask(), exp_equiv_p(), gen_rtx_CONST_INT(), immed_double_const(), loc_cmp(), lra_rtx_hash(), main(), match_pattern_2(), match_rtx(), operands_match_p(), operands_match_p(), rtx_writer::print_rtx_operand(), rtx_equal_for_cselib_1(), rtx_equal_p(), rtx_renumbered_equal_p(), simplify_test_exp(), and write_test_expr().
Callback for for_each_inc_dec, to process the autoinc operation OP within MEM that sets DEST to SRC + SRCOFF, or SRC if SRCOFF is NULL. The callback is passed the same opaque ARG passed to for_each_inc_dec. Return zero to continue looking for other autoinc operations or any other value to interrupt the traversal and return that value to the caller of for_each_inc_dec.
typedef std::pair<rtx, machine_mode> rtx_mode_t |
This is used to bundle an rtx and a mode together so that the pair can be used with the wi:: routines. If we ever put modes into rtx integer constants, this should go away and then just pass an rtx in.
enum global_rtl_index |
Index labels for global_rtl.
enum insn_note |
Codes that appear in the NOTE_KIND field for kinds of notes that are not line numbers. These codes are all negative. Notice that we do not try to use zero here for any of the special note codes because sometimes the source line actually can be zero! This happens (for example) when we are generating code for the per-translation-unit constructor and destructor routines for some C++ translation unit.
enum label_kind |
enum libcall_type |
enum memop_ret |
Memory operation built-ins differ by return value. Mapping of the enum values is following: - RETURN_BEGIN - return destination, e.g. memcpy - RETURN_END - return destination + n, e.g. mempcpy - RETURN_END_MINUS_ONE - return a pointer to the terminating null byte of the string, e.g. strcpy
Enumerator | |
---|---|
RETURN_BEGIN | |
RETURN_END | |
RETURN_END_MINUS_ONE |
enum reg_note |
enum rtx_class |
enum rtx_code : unsigned |
|
extern |
References _, debug_rtx(), error(), errorcount, and fancy_abort().
Referenced by _fatal_insn_not_found().
|
extern |
rtl-error.cc
References _fatal_insn(), and INSN_CODE.
References CALL_P, GET_CODE, JUMP_P, JUMP_TABLE_DATA_P, NONJUMP_INSN_P, PATTERN(), and reload_completed.
Referenced by add_cfis_to_fde(), bb_ok_for_noce_convert_multiple_sets(), bb_valid_for_noce_process_p(), bbs_ok_for_cmove_arith(), can_fallthru(), count_bb_insns(), emit_pattern_after_setloc(), emit_pattern_before_setloc(), expensive_function_p(), flow_active_insn_p(), flow_find_cross_jump(), flow_find_head_matching_sequence(), init_noce_multiple_sets_info(), loop_exit_at_end_p(), maybe_add_nop_after_section_switch(), next_active_insn(), next_active_insn_bb(), noce_convert_multiple_sets_1(), noce_emit_all_but_last(), peep2_attempt(), prev_active_insn(), prev_active_insn_bb(), and reemit_insn_block_notes().
|
extern |
Add a REG_ARGS_SIZE note to INSN with value VALUE.
References add_reg_note(), find_reg_note(), gcc_checking_assert, gen_int_mode(), and NULL_RTX.
Referenced by adjust_stack_1(), emit_call_1(), expand_builtin_trap(), and fixup_args_size_notes().
Process recursively X of INSN and add REG_INC notes if necessary.
References add_auto_inc_notes(), add_auto_inc_notes(), add_reg_note(), auto_inc_p(), GET_CODE, GET_RTX_FORMAT, GET_RTX_LENGTH, i, XEXP, XVECEXP, and XVECLEN.
Referenced by add_auto_inc_notes(), peep2_attempt(), reload(), and update_inc_notes().
Append CALL_FUSAGE to the CALL_INSN_FUNCTION_USAGE for CALL_INSN.
References CALL_INSN_FUNCTION_USAGE, CALL_P, gcc_assert, and XEXP.
Referenced by emit_call_1(), and expand_builtin_apply().
|
extern |
Add INSN to the end of the doubly-linked list. INSN may be an INSN, JUMP_INSN, CALL_INSN, CODE_LABEL, BARRIER or NOTE.
References get_insns(), get_last_insn(), link_insn_into_chain(), NULL, set_first_insn(), and set_last_insn().
Referenced by address_reload_context::emit_autoinc(), emit_barrier(), emit_call_insn(), emit_debug_insn(), emit_insn(), emit_jump_insn(), emit_jump_table_data(), emit_label(), emit_libcall_block_1(), emit_note(), emit_note_copy(), inc_for_reload(), and noce_emit_czero().
|
extern |
Like add_insn_after_nobb, but try to set BLOCK_FOR_INSN. If BB is NULL, an attempt is made to infer the bb from before. This and the next function should be the only functions called to insert an insn once delay slots have been filled since only they know how to update a SEQUENCE.
References add_insn_after_nobb(), BARRIER_P, BB_END, BLOCK_FOR_INSN(), df_insn_rescan(), INSN_P, NOTE_INSN_BASIC_BLOCK_P, and set_block_for_insn().
Referenced by delete_from_delay_slot(), emit_barrier_after(), emit_delay_sequence(), emit_label_after(), emit_note_after(), emit_pattern_after_noloc(), make_return_insns(), and relax_delay_slots().
|
extern |
Like add_insn_before_nobb, but try to set BLOCK_FOR_INSN. If BB is NULL, an attempt is made to infer the bb from before. This and the previous function should be the only functions called to insert an insn once delay slots have been filled since only they know how to update a SEQUENCE.
References add_insn_before_nobb(), BARRIER_P, BB_HEAD, BLOCK_FOR_INSN(), df_insn_rescan(), gcc_assert, INSN_P, NOTE_INSN_BASIC_BLOCK_P, and set_block_for_insn().
Referenced by emit_barrier_before(), emit_label_before(), emit_note_before(), and emit_pattern_before_noloc().
Add an integer register note with kind KIND and datum DATUM to INSN.
References gcc_checking_assert, int_reg_note_p(), and REG_NOTES.
Referenced by add_reg_br_prob_note(), and add_shallow_copy_of_reg_note().
Add register note with kind KIND and datum DATUM to INSN.
References alloc_reg_note(), and REG_NOTES.
Referenced by add_args_size_note(), add_auto_inc_notes(), add_label_notes(), add_shallow_copy_of_reg_note(), attempt_change(), copy_frame_info_to_split_insn(), copy_reg_eh_region_note_backward(), copy_reg_eh_region_note_forward(), delete_prior_computation(), df_set_note(), distribute_notes(), doloop_modify(), emit_call_1(), emit_library_call_value_1(), emit_notes_in_bb(), expand_builtin_apply(), expand_builtin_longjmp(), expand_builtin_nonlocal_goto(), expand_call(), expand_call_stmt(), find_reloads(), force_move_args_size_note(), force_nonfallthru_and_redirect(), ira_register_new_scratch_op(), make_reg_eh_region_note(), make_reg_eh_region_note_nothrow_nononlocal(), mark_jump_label_1(), mark_transaction_restart_calls(), maybe_merge_cfa_adjust(), maybe_move_args_size_note(), move_deaths(), patch_jump_insn(), peep2_attempt(), predict_insn(), process_bb_lives(), process_bb_node_lives(), reload_as_needed(), resolve_simple_move(), set_unique_reg_note(), and try_split().
Add a register note like NOTE to INSN.
References add_int_reg_note(), add_reg_note(), GET_CODE, REG_NOTE_KIND, XEXP, and XINT.
Referenced by distribute_notes().
|
extern |
Return cost of address expression X. Expect that X is properly formed address reference. SPEED parameter specify whether costs optimized for speed or size should be returned.
References memory_address_addr_space_p(), and targetm.
Referenced by computation_cost(), create_new_invariant(), force_expr_to_var_cost(), get_address_cost(), get_address_cost_ainc(), preferred_mem_scale_factor(), should_replace_address(), and try_replace_in_use().
|
extern |
This call is used in place of a gen_rtx_EXPR_LIST. If there is a cached node available, we'll use it, otherwise a call to gen_rtx_EXPR_LIST is made.
References as_a(), gen_rtx_EXPR_LIST(), PUT_REG_NOTE_KIND, r, unused_expr_list, and XEXP.
Referenced by alloc_reg_note(), decl_piece_node(), emit_group_load_into_temps(), emit_group_move_into_temps(), iv_number_of_iterations(), push_reg_equiv_alt_mem(), shorten_into_mode(), and simplify_using_initial_values().
|
extern |
This call is used in place of a gen_rtx_INSN_LIST. If there is a cached node available, we'll use it, otherwise a call to gen_rtx_INSN_LIST is made.
References as_a(), gcc_assert, gen_rtx_INSN_LIST(), GET_CODE, PUT_REG_NOTE_KIND, r, unused_insn_list, and XEXP.
Referenced by alloc_reg_note(), concat_INSN_LIST(), and copy_INSN_LIST().
Allocate a register note with kind KIND and datum DATUM. LIST is stored as the pointer to the next register note.
References alloc_EXPR_LIST(), alloc_INSN_LIST(), gcc_checking_assert, int_reg_note_p(), and PUT_REG_NOTE_KIND.
Referenced by add_reg_note(), combine_reg_notes(), distribute_notes(), duplicate_reg_note(), eliminate_regs_1(), filter_notes(), lra_eliminate_regs_1(), move_deaths(), recog_for_combine_1(), and try_combine().
Return true if CODE always has VOIDmode.
References SET.
Anti dependence: X is written after read in MEM takes place.
References NULL_RTX, and write_dependence_p().
Referenced by load_kills_store(), memory_modified_1(), and validate_equiv_mem_from_store().
Return true when insn is a conditional jump. This function works for instructions containing PC sets in PARALLELs, UNSPECs or UNSPEC_VOLATILEs. The instruction may have various other effects so before removing the jump you must verify onlyjump_p. Note that unlike condjump_p it returns false for unconditional jumps.
References a, b, GET_CODE, pc_set(), SET_SRC, and XEXP.
Referenced by bypass_conditional_jumps(), can_predict_insn_p(), cfg_layout_redirect_edge_and_branch(), check_simple_exit(), cond_exec_get_condition(), constprop_register(), cse_extended_basic_block(), cse_find_path(), dead_or_predicable(), emit_cmp_and_jump_insn_1(), expand_addsub_overflow(), expand_mul_overflow(), expand_neg_overflow(), find_jump_block(), find_many_sub_basic_blocks(), fix_crossing_conditional_branches(), fix_crossing_unconditional_branches(), fixup_reorder_chain(), force_nonfallthru_and_redirect(), get_condition(), maybe_cleanup_end_of_block(), noce_get_condition(), outgoing_edges_match(), predict_insn(), purge_dead_edges(), record_jump_equiv(), relax_delay_slots(), reload_cse_move2add_invalidate(), reload_cse_regs_1(), reorder_basic_blocks_simple(), rotate_loop(), rtl_block_ends_with_condjump_p(), rtl_predict_edge(), rtl_split_block_before_cond_jump(), rtl_verify_edges(), set_edge_can_fallthru_flag(), simplify_using_initial_values(), thread_jump(), try_optimize_cfg(), try_shrink_wrapping(), try_simplify_condjump(), and try_split().
Return true when insn is an unconditional direct jump, possibly bundled inside a PARALLEL, UNSPEC or UNSPEC_VOLATILE. The instruction may have various other effects so before removing the jump you must verify onlyjump_p.
References find_reg_note(), GET_CODE, NULL_RTX, pc_set(), and SET_SRC.
Referenced by add_test(), emit(), follow_jumps(), rtl_block_empty_p(), rtl_tidy_fallthru_edge(), rtl_verify_edges(), and try_combine().
|
extern |
If BODY is an insn body that uses ASM_OPERANDS, return the number of operands (both input and output) in the insn. If BODY is an insn body that uses ASM_INPUT with CLOBBERS in PARALLEL, return 0. Otherwise return -1.
References ASM_OPERANDS_INPUT_LENGTH, ASM_OPERANDS_INPUT_VEC, ASM_OPERANDS_LABEL_LENGTH, CONST_CAST_RTX, extract_asm_operands(), GET_CODE, i, NULL, SET, SET_SRC, XVECEXP, and XVECLEN.
Referenced by adjust_insn(), insn_propagation::apply_to_rvalue_1(), arithmetic_flags_clobber_p(), build_def_use(), cheap_bb_rtx_cost_p(), check_asm_operands(), check_rtl(), combine_and_move_insns(), compute_regs_asm_clobbered(), copyprop_hardreg_forward_1(), create_log_links(), cselib_record_sets(), curr_insn_transform(), decrease_live_ranges_number(), delete_trivially_dead_insns(), do_local_cprop(), do_output_reload(), eliminate_regs_in_insn(), eliminate_regs_in_insn(), elimination_costs_in_insn(), emit_input_reload_insns(), extract_insn(), failed_reload(), fill_slots_from_thread(), final_scan_insn_1(), find_invariant_insn(), fix_crossing_unconditional_branches(), fix_up_fall_thru_edges(), get_attr_length_1(), insn_invalid_p(), instantiate_virtual_regs_in_insn(), lra_set_insn_recog_data(), lra_split_hard_reg_for(), lra_update_insn_recog_data(), match_reload(), maybe_fix_stack_asms(), maybe_reset_location_view(), need_fake_edge_p(), record_out_operands(), reload(), reload_as_needed(), reload_cse_simplify(), scan_loop(), shorten_branches(), spill_failure(), stop_search_p(), try_combine(), and verify_changes().
|
extern |
Return the number of machine instructions likely to be generated for the inline-asm template.
References count, and IS_ASM_LOGICAL_LINE_SEPARATOR.
Referenced by asm_insn_count(), and estimate_num_insns().
Return true if X is an autoincrement side effect and the register is not the stack pointer.
References GET_CODE, stack_pointer_rtx, and XEXP.
Referenced by add_auto_inc_notes().
If X is a MEM referencing the constant pool, return the real value. Otherwise return X.
References avoid_constant_pool_reference(), CONST_DOUBLE_AS_FLOAT_P, const_double_from_real_value(), CONST_DOUBLE_REAL_VALUE, CONSTANT_P, CONSTANT_POOL_ADDRESS_P, GET_CODE, GET_MODE, GET_MODE_SIZE(), get_pool_constant(), get_pool_mode(), known_eq, simplify_subreg(), strip_offset(), targetm, and XEXP.
Referenced by adjust_mems(), avoid_constant_pool_reference(), commutative_operand_precedence(), constant_pool_constant_p(), dw_loc_list_1(), equiv_constant(), find_constant_src(), forward_propagate_and_simplify(), loc_descriptor(), mem_loc_descriptor(), rtl_for_decl_location(), simplify_context::simplify_binary_operation(), simplify_context::simplify_binary_operation_1(), simplify_const_relational_operation(), simplify_context::simplify_relational_operation(), simplify_context::simplify_ternary_operation(), simplify_context::simplify_unary_operation(), subst(), and want_to_gcse_p().
|
inline |
References XBBDEF.
Referenced by _succ_iter_cond(), _succ_iter_start(), add_conflict_from_region_landing_pads(), add_insn_after(), add_insn_allocno_copies(), add_insn_before(), add_with_sets(), attempt_change(), build_insn_chain(), build_store_vectors(), bypass_block(), calculate_equiv_gains(), calculate_spill_cost(), can_delete_call(), can_move_invariant_reg(), can_predict_insn_p(), canon_list_insert(), canonicalize_condition(), cfg_layout_initialize(), check_dependencies(), cleanup_barriers(), combine_and_move_insns(), combine_instructions(), combine_reaching_defs(), compare_candidates(), compute_bb_for_insn(), compute_local_properties(), compute_local_properties(), constprop_register(), create_cands(), create_log_links(), create_new_invariant(), decrease_live_ranges_number(), def_dominates_uses(), delete_dead_insn(), delete_insn(), delete_insn_and_edges(), delete_store(), df_insn_change_bb(), df_insn_debug_regno(), df_insn_delete(), df_insn_rescan(), df_install_ref_incremental(), df_notes_rescan(), df_uses_create(), dump_user_location_t::dump_user_location_t(), eliminate_partially_redundant_load(), emit_insn_after_1(), emit_jump_table_data(), emit_note_after(), emit_note_before(), emit_to_new_bb_before(), equivalent_reg_at_start(), expand_sjlj_dispatch_table(), find_avail_set(), find_basic_block(), find_call_crossed_cheap_reg(), find_call_stack_args(), find_inc(), find_moveable_pseudos(), find_moveable_store(), find_occr_in_bb(), find_rarely_executed_basic_blocks_and_crossing_edges(), find_single_use(), finish_eh_generation(), fix_crossing_unconditional_branches(), flow_find_cross_jump(), free_bb_for_insn(), free_resource_info(), gen_call_used_regs_seq(), get_bb_avail_insn(), get_insn_freq(), get_next_ref(), get_preferred_alternatives(), inherit_in_ebb(), inherit_reload_reg(), init_resource_info(), insert_expr_in_table(), insert_expr_in_table(), insert_set_in_table(), insn_dominated_by_p(), iv_get_reaching_def(), local_cprop_pass(), lra_coalesce(), lra_constraints(), lra_process_new_insns(), lra_split_hard_reg_for(), make_call_insn_raw(), make_debug_insn_raw(), make_insn_raw(), make_jump_insn_raw(), make_label_edge(), make_note_raw(), mark_tablejump_edge(), mark_target_live_regs(), move2add_use_add2_insn(), move2add_use_add3_insn(), move_deaths(), move_freq_compare_func(), multi_block_pseudo_p(), noce_get_alt_condition(), noce_process_if_block(), noce_try_abs(), noce_try_sign_mask(), one_cprop_pass(), pre_delete(), pre_insert_copies(), pre_insert_copy_insn(), print_rtx_function(), process_invariant_for_inheritance(), record_last_mem_set_info_common(), record_reg_classes(), record_store(), reg_dead_at_p(), reload_cse_move2add(), reload_cse_simplify(), reload_cse_simplify_operands(), reload_cse_simplify_set(), remove_inheritance_pseudos(), remove_insn(), remove_reachable_equiv_notes(), reorder_insns(), replace_read(), rtl_verify_bb_insn_chain(), rtl_verify_bb_pointers(), save_call_clobbered_regs(), scan_one_insn(), set_block_for_insn(), set_nonzero_bits_and_sign_copies(), setup_save_areas(), should_replace_address(), spill_for(), split_live_ranges_for_shrink_wrap(), split_reg(), thread_prologue_and_epilogue_insns(), try_back_substitute_reg(), try_combine(), try_crossjump_to_edge(), try_replace_in_use(), try_replace_reg(), update_bb_reg_pressure(), update_cfg_for_uncondjump(), and update_ebb_live_info().
|
extern |
Return the number of bytes between the start of an OUTER_MODE in-memory value and the start of an INNER_MODE in-memory value, given that the former is a lowpart of the latter. It may be a paradoxical lowpart, in which case the offset will be negative on big-endian targets.
References paradoxical_subreg_p(), and subreg_lowpart_offset().
Referenced by adjust_reg_mode(), alter_subreg(), gen_lowpart_for_combine(), gen_lowpart_general(), gen_lowpart_if_possible(), replace_reg_with_saved_mem(), rtl_for_decl_location(), rtx_equal_for_field_assignment_p(), set_reg_attrs_for_decl_rtl(), set_reg_attrs_from_value(), simplify_immed_subreg(), track_loc_p(), var_lowpart(), and vt_add_function_parameter().
Return true if we can assign X to a pseudo register of mode MODE such that the resulting insn does not result in clobbering a hard register as a side-effect. Additionally, if the target requires it, check that the resulting insn can be copied. If it cannot, this means that X is special and probably has hidden side-effects we don't want to mess with. This function is typically used by code motion passes, to verify that it is safe to insert an insn without worrying about clobbering maybe live hard regs.
References added_clobbers_hard_reg_p(), can_assign_to_reg_without_clobbers_p(), const0_rtx, gen_rtx_REG(), general_operand(), GET_MODE, INSN_LOCATION(), make_insn_raw(), NULL_RTX, PATTERN(), PUT_MODE(), recog(), SET_DEST, SET_NEXT_INSN(), SET_PREV_INSN(), SET_SRC, targetm, test_insn, UNKNOWN_LOCATION, and word_mode.
Referenced by can_assign_to_reg_without_clobbers_p(), compute_ld_motion_mems(), find_moveable_store(), and want_to_gcse_p().
|
extern |
In gcse.cc
Returns whether the mode supports reg/reg copy operations.
References can_copy, can_copy_init_p, and compute_can_copy().
Referenced by hash_scan_set(), hash_scan_set(), hash_scan_set(), and may_assign_reg_p().
Return true if INSN can perform a non-local goto.
??? This test is here in this file because it (ab)uses REG_EH_REGION.
References CALL_P, find_reg_note(), INT_MIN, INTVAL, nonlocal_goto_handler_labels, NULL_RTX, and XEXP.
Referenced by control_flow_insn_p(), create_trace_edges(), distribute_notes(), make_edges(), peep2_attempt(), and purge_dead_edges().
Return true if INSN throws and escapes from the current function.
References as_a(), can_throw_external(), rtx_sequence::element(), ERT_MUST_NOT_THROW, gcc_assert, GET_CODE, get_eh_region_and_lp_from_rtx(), i, INSN_P, rtx_sequence::len(), NONJUMP_INSN_P, NULL, PATTERN(), and r.
Referenced by can_throw_external(), compute_hash_table_work(), record_opr_changes(), and set_nothrow_function_flags().
Return true if INSN throws and is caught by something in this function.
References get_eh_landing_pad_from_rtx(), and NULL.
Referenced by combine_and_move_insns(), control_flow_insn_p(), cse_insn(), decompose_multiword_subregs(), fill_simple_delay_slots(), fill_slots_from_thread(), find_invariant_insn(), fixup_abnormal_edges(), hash_scan_set(), merge_if_block(), move_insn_for_shrink_wrap(), optimize_skip(), peep2_attempt(), process_bb_node_lives(), purge_dead_edges(), relax_delay_slots(), remove_init_insns(), requires_stack_frame_p(), scan_trace(), stop_search_p(), and will_delete_init_insn_p().
|
extern |
Likewise, but we already have a canonicalized MEM, and X_ADDR for X. Also, consider X in X_MODE (which might be from an enclosing STRICT_LOW_PART / ZERO_EXTRACT). If MEM_CANONICALIZED is true, MEM is canonicalized.
References write_dependence_p().
Referenced by check_dependence(), and cselib_invalidate_mem().
In loop-iv.cc
Canonicalizes COND so that (1) Ensure that operands are ordered according to swap_commutative_operands_p. (2) (LE x const) will be replaced with (LT x <const+1>) and similarly for GE, GEU, and LEU.
References wi::add(), CONST_SCALAR_INT_P, const_val, gcc_assert, GET_CODE, GET_MODE, GET_MODE_CLASS, immed_wide_int_const(), wi::max_value(), wi::min_value(), rtx_iv::mode, wi::ne_p(), SIGNED, wi::sub(), swap_commutative_operands_p(), swap_condition(), and XEXP.
Referenced by simplify_using_condition().
|
extern |
Likewise, but we already have a canonicalized MEM, and X_ADDR for X. Also, consider X in X_MODE (which might be from an enclosing STRICT_LOW_PART / ZERO_EXTRACT). If MEM_CANONICALIZED is true, MEM is canonicalized.
References write_dependence_p().
Referenced by record_store().
In read-rtl.cc
In alias.cc
Returns a canonical version of X, from the point of view alias analysis. (For example, if X is a MEM whose address is a register, and the register has a known value (say a SYMBOL_REF), then a MEM whose address is the SYMBOL_REF is returned.)
References canon_rtx(), GET_CODE, GET_MODE, get_reg_known_value(), MEM_P, REG_P, REGNO, replace_equiv_address_nv(), simplify_gen_binary(), and XEXP.
Referenced by addr_side_effect_eval(), base_alias_check(), canon_address(), canon_list_insert(), canon_rtx(), clobber_overlapping_mems(), compute_transp(), cselib_invalidate_mem(), get_addr_from_global_cache(), get_group_info(), invalidate(), memrefs_conflict_p(), record_store(), rtx_equal_for_memref_p(), true_dependence_1(), vt_canonicalize_addr(), and write_dependence_p().
|
extern |
Canonical true dependence: X is read after store in MEM takes place. Variant of true_dependence which assumes MEM has already been canonicalized (hence we no longer do that here). The mem_addr argument has been added, since true_dependence_1 computed this value prior to canonicalizing.
References true_dependence_1().
Referenced by check_mem_read_rtx(), compute_transp(), scan_reads(), and vt_canon_true_dep().
|
extern |
Given an insn and condition, return a canonical description of the test being made.
Given an insn INSN and condition COND, return the condition in a canonical form to simplify testing by callers. Specifically: (1) The code will always be a comparison operation (EQ, NE, GT, etc.). (2) Both operands will be machine operands. (3) If an operand is a constant, it will be the second operand. (4) (LE x const) will be replaced with (LT x <const+1>) and similarly for GE, GEU, and LEU. If the condition cannot be understood, or is an inequality floating-point comparison which needs to be reversed, 0 will be returned. If REVERSE is nonzero, then reverse the condition prior to canonizing it. If EARLIEST is nonzero, it is a pointer to a place where the earliest insn used in locating the condition was found. If a replacement test of the condition is desired, it should be placed in front of that insn and we will be sure that the inputs are still valid. If WANT_REG is nonzero, we wish the condition to be relative to that register, if possible. Therefore, do not canonicalize the condition further. If ALLOW_CC_MODE is nonzero, allow the condition returned to be a compare to a CC mode register. If VALID_AT_INSN_P, the condition must be valid at both *EARLIEST and at INSN.
References BLOCK_FOR_INSN(), COMPARISON_P, CONST0_RTX, CONST_INT_P, const_val, CONSTANT_P, FIND_REG_INC_NOTE, gen_int_mode(), GET_CODE, GET_MODE, GET_MODE_CLASS, GET_MODE_MASK, GET_MODE_PRECISION(), GET_RTX_CLASS, HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT_1U, INTVAL, is_a(), modified_between_p(), modified_in_p(), NONJUMP_INSN_P, NULL_RTX, prev_nonnote_nondebug_insn(), REAL_VALUE_NEGATIVE, REAL_VALUE_TYPE, REG_P, reg_set_p(), reversed_comparison_code(), RTX_COMM_COMPARE, RTX_COMPARE, rtx_equal_p(), SCALAR_FLOAT_MODE_P, SET, SET_DEST, set_of(), SET_SRC, STORE_FLAG_VALUE, swap_condition(), val_signbit_known_set_p(), and XEXP.
Referenced by get_condition(), noce_get_alt_condition(), and noce_get_condition().
In dse.cc
Entry point for postreload. If you work on reload_cse, or you need this anywhere else, consider if you can provide register liveness information and add a parameter to this function so that it can be passed down in insn_info.fixed_regs_live.
References emit_inc_dec_insn_before(), find_reg_note(), insn_info_type::fixed_regs_live, for_each_inc_dec(), FOR_EACH_SUBRTX, GET_CODE, GET_RTX_CLASS, insn_info_type::insn, NULL, NULL_RTX, PATTERN(), and RTX_AUTOINC.
Referenced by reload_cse_simplify().
|
extern |
In reginfo.cc
Return a machine mode that is legitimate for hard reg REGNO and large enough to save nregs. If we can't find one, return VOIDmode. If ABI is nonnull, only consider modes that are preserved across calls that use ABI.
References predefined_function_abi::clobbers_reg_p(), FOR_EACH_MODE_IN_CLASS, GET_MODE_SIZE(), hard_regno_nregs(), maybe_gt, and targetm.
Referenced by default_dwarf_frame_reg_mode(), init_reg_modes_target(), and zcur_select_mode_rtx().
Return an indication of which type of insn should have X as a body. In generator files, this can be UNKNOWN if the answer is only known at (GCC) runtime. Otherwise the value is CODE_LABEL, INSN, CALL_INSN or JUMP_INSN.
References ANY_RETURN_P, ASM_OPERANDS_LABEL_LENGTH, GET_CODE, LABEL_P, SET, SET_DEST, SET_SRC, XVECEXP, and XVECLEN.
Referenced by emit(), and get_emit_function().
|
extern |
Return a value indicating whether OP, an operand of a commutative operation, is preferred as the first or second operand. The more positive the value, the stronger the preference for being the first operand.
References avoid_constant_pool_reference(), GET_CODE, GET_RTX_CLASS, MEM_P, MEM_POINTER, OBJECT_P, REG_P, REG_POINTER, RTX_BIN_ARITH, RTX_COMM_ARITH, RTX_CONST_OBJ, RTX_EXTRA, RTX_OBJ, RTX_UNARY, and SUBREG_REG.
Referenced by compare_address_parts(), simplify_plus_minus_op_data_cmp(), swap_commutative_operands_p(), and swap_commutative_operands_with_target().
In jump.cc
Return true if CODE1 is more strict than CODE2, i.e., if the truth of CODE1 implies the truth of CODE2.
Referenced by condition_dominates_p(), fold_rtx(), known_cond(), and thread_jump().
|
extern |
In final.cc
Compute branch alignments based on CFG profile.
References AVOID_CFG_MODIFICATIONS, BB_HEAD, bb_loop_depth(), CDI_DOMINATORS, cfun, basic_block_def::count, count, profile_count::dump(), dump_file, dump_flow_info(), dump_reg_info(), ENTRY_BLOCK_PTR_FOR_FN, EXIT_BLOCK_PTR_FOR_FN, flow_loops_dump(), FOR_EACH_BB_FN, FOR_EACH_EDGE, free_dominance_info(), get_first_label_num(), loop::header, basic_block_def::index, profile_count::initialized_p(), loop::inner, JUMP_ALIGN, LABEL_ALIGN, label_align, LABEL_P, LABEL_TO_ALIGNMENT, LOOP_ALIGN, basic_block_def::loop_father, loop_optimizer_finalize(), loop_optimizer_init(), align_flags::max(), max_label_num(), max_labelno, min_labelno, NULL, loop::num, optimize_bb_for_size_p(), optimize_bb_for_speed_p(), optimize_function_for_size_p(), basic_block_def::preds, basic_block_def::prev_bb, single_succ(), single_succ_p(), TDF_DETAILS, and profile_count::zero().
Return true if INSN is an indirect jump (aka computed jump). Tablejumps and casesi insns are not considered indirect jumps; we can recognize them by a (use (label_ref)).
References computed_jump_p_1(), GET_CODE, i, JUMP_LABEL, JUMP_P, NULL, set_of_data::pat, PATTERN(), pc_rtx, SET, SET_DEST, SET_SRC, XEXP, XVECEXP, and XVECLEN.
Referenced by bypass_conditional_jumps(), create_trace_edges(), default_invalid_within_doloop(), duplicate_computed_gotos(), fix_crossing_unconditional_branches(), make_edges(), patch_jump_insn(), reorder_basic_blocks_simple(), try_crossjump_bb(), and try_head_merge_bb().
|
extern |
Duplicate the INSN_LIST elements of COPY and prepend them to OLD.
References alloc_INSN_LIST(), PUT_REG_NOTE_KIND, and REG_NOTE_KIND.
Return true if INSN is a (possibly) conditional jump inside a PARALLEL. Use this function is deprecated, since we need to support combined branch and compare insns. Use any_condjump_p instead whenever possible.
References ANY_RETURN_P, GET_CODE, PATTERN(), pc_rtx, SET, SET_DEST, SET_SRC, XEXP, and XVECEXP.
Referenced by dbr_schedule(), fill_eager_delay_slots(), fill_simple_delay_slots(), get_branch_condition(), get_jump_flags(), relax_delay_slots(), and reload_combine().
Return true if INSN is a (possibly) conditional jump and nothing more. Use of this function is deprecated, since we need to support combined branch and compare insns. Use any_condjump_p instead whenever possible.
References ANY_RETURN_P, GET_CODE, PATTERN(), SET, SET_DEST, SET_SRC, and XEXP.
Referenced by cse_insn(), dbr_schedule(), fill_eager_delay_slots(), fill_simple_delay_slots(), get_jump_flags(), relax_delay_slots(), reload_combine(), and rtl_verify_bb_layout().
|
inline |
Return the value of a CONST_POLY_INT in its native precision.
References poly_int< N, C >::coeffs, CONST_POLY_INT_COEFFS, i, NUM_POLY_INT_COEFFS, and WIDE_INT_REF_FOR.
Referenced by make_tree(), plus_constant(), simplify_const_unary_operation(), simplify_context::simplify_subreg(), and wi::to_poly_wide().
Return true if X is a vector constant with a duplicated element value.
References CONST_VECTOR_DUPLICATE_P, CONST_VECTOR_NPATTERNS, and GET_CODE.
Referenced by const_vec_duplicate_p(), cse_insn(), simplify_context::simplify_binary_operation_1(), unwrap_const_vec_duplicate(), and vec_duplicate_p().
Return true if X is a vector constant with a duplicated element value. Store the duplicated element in *ELT if so.
References const_vec_duplicate_p(), CONST_VECTOR_ENCODED_ELT, and T.
Return true if X is an integer constant vector that contains a linear series of the form: { B, B + S, B + 2 * S, B + 3 * S, ... } for a nonzero S. Store B and S in *BASE_OUT and *STEP_OUT on sucess.
References const_vec_series_p_1(), CONST_VECTOR_DUPLICATE_P, CONST_VECTOR_NPATTERNS, and GET_CODE.
Referenced by vec_series_p().
A subroutine of const_vec_series_p that handles the case in which: (GET_CODE (X) == CONST_VECTOR && CONST_VECTOR_NPATTERNS (X) == 1 && !CONST_VECTOR_DUPLICATE_P (X)) is known to hold.
References CONST0_RTX, CONST_VECTOR_ELT, CONST_VECTOR_ENCODED_ELT, CONST_VECTOR_NUNITS, CONST_VECTOR_STEPPED_P, GET_MODE, GET_MODE_CLASS, GET_MODE_INNER, rtx_equal_p(), and simplify_binary_operation().
Referenced by const_vec_series_p().
Return the value of element I of CONST_VECTOR X.
References CONST_VECTOR_ENCODED_ELT, const_vector_encoded_nelts(), const_vector_int_elt(), CONST_VECTOR_NPATTERNS, CONST_VECTOR_STEPPED_P, GET_MODE, GET_MODE_INNER, i, immed_wide_int_const(), and XVECLEN.
|
inline |
Return the number of elements encoded directly in a CONST_VECTOR.
References CONST_VECTOR_NELTS_PER_PATTERN, and CONST_VECTOR_NPATTERNS.
Referenced by const_vector_elt(), const_vector_int_elt(), cselib_hash_rtx(), find_sets_in_insn(), and hash_rtx().
In emit-rtl.cc.
Return the value of element I of CONST_VECTOR X as a wide_int.
References wi::add(), CONST_VECTOR_ENCODED_ELT, const_vector_encoded_nelts(), CONST_VECTOR_NPATTERNS, CONST_VECTOR_STEPPED_P, count, GET_MODE, GET_MODE_INNER, i, wi::sub(), and XVECLEN.
Referenced by const_vector_elt().
Check whether this is a constant pool constant.
References avoid_constant_pool_reference(), and CONST_DOUBLE_P.
Referenced by get_inv_cost().
Return true if RTL X contains a constant pool address.
References ALL, CONSTANT_POOL_ADDRESS_P, FOR_EACH_SUBRTX, and SYMBOL_REF_P.
Return true if X contains a MEM subrtx.
References ALL, FOR_EACH_SUBRTX, and MEM_P.
Referenced by bb_ok_for_noce_convert_multiple_sets(), bb_valid_for_noce_process_p(), prune_expressions(), and try_fwprop_subst_pattern().
Return true if RTL X contains a SYMBOL_REF.
References ALL, FOR_EACH_SUBRTX, and SYMBOL_REF_P.
Referenced by lra_constraints(), scan_one_insn(), and track_expr_p().
Return true if RTL X contains a SYMBOL_REF or LABEL_REF.
References ALL, FOR_EACH_SUBRTX, GET_CODE, and SYMBOL_REF_P.
Referenced by simplify_context::simplify_binary_operation_1().
|
extern |
Given X, a memory address in address space AS' pointer mode, convert it to an address in the address space's address mode, or vice versa (TO_MODE says which way). We take advantage of the fact that pointers are not allowed to overflow by commuting arithmetic operations over conversions so that address arithmetic insns can be used.
References convert_memory_address_addr_space_1().
Referenced by expand_assignment(), expand_expr_addr_expr(), expand_expr_addr_expr_1(), make_tree(), and memory_address_addr_space().
|
extern |
Given X, a memory address in address space AS' pointer mode, convert it to an address in the address space's address mode, or vice versa (TO_MODE says which way). We take advantage of the fact that pointers are not allowed to overflow by commuting arithmetic operations over conversions so that address arithmetic insns can be used. IN_CONST is true if this conversion is inside a CONST. NO_EMIT is true if no insns should be emitted, and instead it should return NULL if it can't be simplified without emitting insns.
References CASE_CONST_SCALAR_INT, CONST_INT_P, convert_memory_address_addr_space_1(), convert_modes(), gcc_assert, gen_rtvec(), GET_CODE, get_last_insn(), GET_MODE, GET_MODE_SIZE(), i, label_ref_label(), LABEL_REF_NONLOCAL_P, last, NULL_RTX, PUT_MODE(), REG_POINTER, RTVEC_ELT, shallow_copy_rtx(), simplify_unary_operation(), SUBREG_PROMOTED_VAR_P, SUBREG_REG, targetm, XEXP, XINT, XVECEXP, and XVECLEN.
Referenced by convert_memory_address_addr_space(), convert_memory_address_addr_space_1(), and simplify_context::simplify_unary_operation_1().
|
extern |
Make a copy of the INSN_LIST list LINK and return it.
References alloc_INSN_LIST(), link::next, NULL, and XEXP.
Likewise, but iterate backward.
References add_reg_note(), find_reg_note(), insn_could_throw_p(), INSN_P, is_a(), last, NULL, NULL_RTX, PREV_INSN(), and XEXP.
Referenced by peep2_attempt(), and try_split().
Copy an REG_EH_REGION note to each insn that might throw beginning at FIRST and ending at LAST. NOTE_OR_INSN is either the source insn to look for a note, or the note itself.
References add_reg_note(), find_reg_note(), insn_could_throw_p(), INSN_P, is_a(), last, NEXT_INSN(), NULL, NULL_RTX, and XEXP.
Referenced by emit_input_reload_insns(), emit_output_reload_insns(), fixup_eh_region_note(), lra_process_new_insns(), and resolve_simple_move().
Create a new copy of an rtx. Recursively copies the operands of the rtx, except for those few rtx codes that are sharable.
References CASE_CONST_ANY, copy_rtx(), gcc_unreachable, GET_CODE, GET_RTX_FORMAT, GET_RTX_LENGTH, i, NULL, ORIGINAL_REGNO, REG_P, REGNO, rtvec_alloc(), RTX_CODE, shallow_copy_rtx(), shared_const_p(), XEXP, XVEC, XVECEXP, and XVECLEN.
Referenced by add_equal_note(), add_store_equivs(), adjust_address_1(), adjust_cleared_regs(), analyze_insn_to_expand_var(), insn_propagation::apply_to_rvalue_1(), assign_parm_adjust_entry_rtl(), assign_parm_setup_block(), assign_parm_setup_reg(), assign_parm_setup_stack(), canon_reg_for_combine(), combine_instructions(), combine_reg_notes(), combine_simplify_rtx(), combine_var_copies_in_loop_exit(), cond_exec_process_insns(), confirm_change_group(), copy_delay_slot_insn(), copy_rtx(), cprop_jump(), cse_insn(), cse_process_note_1(), curr_insn_transform(), doloop_modify(), doloop_optimize(), eliminate_partially_redundant_load(), eliminate_regs_1(), emit_libcall_block_1(), emit_library_call_value_1(), emit_move_insn(), equiv_can_be_consumed_p(), expand_absneg_bit(), expand_binop(), expand_debug_expr(), expand_debug_parm_decl(), expand_DIVMOD(), expand_expr_real_1(), expand_expr_real_2(), expand_field_assignment(), expand_fix(), expand_operands(), filter_notes(), find_cond_trap(), find_reloads_address(), find_shift_sequence(), pair_fusion::find_trailing_add(), fold_rtx(), force_const_mem(), forward_propagate_and_simplify(), pair_fusion_bb_info::fuse_pair(), get_arg_pointer_save_area(), get_last_value(), get_secondary_mem(), get_stored_val(), if_then_else_cond(), inherit_in_ebb(), init_eliminable_invariants(), insert_base_initialization(), insert_part_to_rtx_on_edge(), insert_partition_copy_on_edge(), insert_restore(), insert_rtx_to_part_on_edge(), insert_save(), insert_set_in_table(), insert_store(), insert_temp_slot_address(), insert_value_copy_on_edge(), instantiate_virtual_regs_in_insn(), inv_can_prop_to_addr_use(), ira_update_equiv_info_by_shuffle_insn(), iv_number_of_iterations(), load_register_parameters(), lra_constraints(), lra_copy_reg_equiv(), lra_init_equiv(), make_memloc(), match_asm_constraints_1(), match_reload(), maybe_legitimize_operands(), noce_bbs_ok_for_cond_zero_arith(), noce_convert_multiple_sets_1(), noce_emit_all_but_last(), noce_try_cmove_arith(), plus_constant(), process_addr_reg(), process_address_1(), process_insert_insn(), process_one_cond_exec(), process_rtx(), process_substs_on_one_elem(), propagate_for_debug_subst(), record_value_for_reg(), remove_pseudos(), replace_label(), replace_reg_with_saved_mem(), resolve_debug(), resolve_operand_for_swap_move_operator(), resolve_shift_zext(), resolve_simple_move(), save_call_clobbered_regs(), simplify_context::simplify_binary_operation_1(), simplify_if_then_else(), simplify_context::simplify_relational_operation_1(), simplify_replace_fn_rtx(), split_insn(), split_iv(), store_constructor(), store_constructor_field(), store_field(), store_fixed_bit_field_1(), store_one_arg(), subst(), subst_dup(), try_apply_stack_adjustment(), try_combine(), try_eliminate_compare(), try_fwprop_subst_pattern(), try_merge_compare(), try_replace_reg(), unroll_loop_runtime_iterations(), update_equiv_regs(), and update_ld_motion_stores().
In emit-rtl.cc
Mark ORIG as in use, and return a copy of it if it was already in use. Recursively does the same for subexpressions. Uses copy_rtx_if_shared_1 to reduce stack space.
References copy_rtx_if_shared_1().
Referenced by emit_notes_in_bb(), try_combine(), unshare_all_rtl(), unshare_all_rtl_1(), and unshare_all_rtl_in_chain().
|
inline |
Increase both members of the full_rtx_costs structure C by the cost of N insns.
References COSTS_N_INSNS, full_rtx_costs::size, and full_rtx_costs::speed.
Referenced by reload_cse_move2add().
|
inline |
Compare two full_rtx_costs structures A and B, returning true if A < B when optimizing for speed.
Referenced by move2add_use_add2_insn(), move2add_use_add3_insn(), and reload_cse_move2add().
Return the number of places FIND appears within X. If COUNT_DEST is zero, we do not count occurrences inside the destination of a SET.
References CASE_CONST_ANY, count, count_occurrences(), count_occurrences(), find(), GET_CODE, GET_RTX_FORMAT, GET_RTX_LENGTH, i, MEM_P, rtx_equal_p(), SET, SET_DEST, SET_SRC, XEXP, XVECEXP, and XVECLEN.
Referenced by count_occurrences(), delete_output_reload(), emit_input_reload_insns(), find_inc(), record_value_for_reg(), and reload_as_needed().
|
extern |
Get current location.
References curr_location.
Referenced by expand_expr_real_1(), expand_expr_real_gassign(), expand_gimple_basic_block(), expand_gimple_cond(), expand_thunk(), make_call_insn_raw(), make_debug_insn_raw(), make_insn_raw(), make_jump_insn_raw(), and store_expr().
|
extern |
Write the wide constant X to OUTFILE.
References CWI_ELT, CWI_GET_NUM_ELEM, gcc_assert, HOST_WIDE_INT_PRINT_HEX, HOST_WIDE_INT_PRINT_PADDED_HEX, and i.
Referenced by rtx_writer::print_rtx().
Return true if X's old contents don't survive after INSN. This will be true if X is a register and X dies in INSN or because INSN entirely sets X. "Entirely set" means set directly and not through a SUBREG, or ZERO_EXTRACT, so no trace of the old contents remains. Likewise, REG_INC does not count. REG may be a hard or pseudo reg. Renumbering is not taken into account, but for this use that makes no difference, since regs don't overlap during their lifetimes. Therefore, this function may be used at any time after deaths have been computed. If REG is a hard reg that occupies multiple machine registers, this function will only return true if each of those registers will be replaced by INSN.
References dead_or_set_regno_p(), END_REGNO(), gcc_assert, i, REG_P, and REGNO.
Referenced by decrease_live_ranges_number(), distribute_notes(), do_input_reload(), emit_input_reload_insns(), find_single_use(), set_nonzero_bits_and_sign_copies(), and try_combine().
Utility function for dead_or_set_p to check an individual register.
References CALL_P, COND_EXEC_CODE, covers_regno_p(), find_regno_fusage(), find_regno_note(), GET_CODE, i, PATTERN(), SET, SET_DEST, XVECEXP, and XVECLEN.
Referenced by dead_or_set_p(), distribute_notes(), and move_deaths().
|
extern |
Dump rtx REF.
References debug_rtx().
|
extern |
Call this function from the debugger to see what X looks like.
References NULL, and rtx_writer::print_rtx().
Referenced by _fatal_insn(), debug(), debug_df_insn(), debug_dv(), debug_rtx_list(), debug_rtx_range(), make_insn_raw(), rtl_verify_fallthru(), and verify_rtx_sharing().
Call this function to search an rtx_insn list to find one with insn uid UID, and then call debug_rtx_list to print it, using DEBUG_RTX_COUNT. The found insn is returned to enable further debugging analysis.
References debug_rtx_count, debug_rtx_list(), INSN_UID(), and NEXT_INSN().
|
extern |
Call this function to print list from X on. N is a count of the rtx's to print. Positive values print from the specified rtx_insn on. Negative values print a window around the rtx_insn. EG: -5 prints 2 rtx_insn's on either side (in addition to the specified rtx_insn).
References count, debug_rtx(), debug_rtx_list(), i, NEXT_INSN(), and PREV_INSN().
Referenced by debug_rtx_find(), and debug_rtx_list().
Call this function to print an rtx_insn list from START to END inclusive.
References debug_rtx(), end(), and NEXT_INSN().
|
extern |
If not using flag_reorder_blocks_and_partition, decide early whether the current function goes into the cold section, so that targets can use current_function_section during RTL expansion. DECL describes the function.
References current_function_decl, DECL_SECTION_NAME, first_function_block_is_cold, cgraph_node::frequency, cgraph_node::get(), in_cold_section_p, and NODE_FREQUENCY_UNLIKELY_EXECUTED.
Referenced by init_function_start().
|
extern |
Assuming BODY is an insn body that uses ASM_OPERANDS, copy its operands (both input and output) into the vector OPERANDS, the locations of the operands within the insn into the vector OPERAND_LOCS, and the constraints for the operands into CONSTRAINTS. Write the modes of the operands into MODES. Write the location info into LOC. Return the assembler-template. If BODY is an insn body that uses ASM_INPUT with CLOBBERS in PARALLEL, return the basic assembly string. If LOC, MODES, OPERAND_LOCS, CONSTRAINTS or OPERANDS is 0, we don't store that info.
References ASM_INPUT_SOURCE_LOCATION, ASM_OPERANDS_INPUT, ASM_OPERANDS_INPUT_CONSTRAINT, ASM_OPERANDS_INPUT_LENGTH, ASM_OPERANDS_INPUT_MODE, ASM_OPERANDS_LABEL, ASM_OPERANDS_LABEL_LENGTH, ASM_OPERANDS_OUTPUT_CONSTRAINT, ASM_OPERANDS_SOURCE_LOCATION, ASM_OPERANDS_TEMPLATE, constraints, gcc_assert, gcc_unreachable, GET_CODE, GET_MODE, i, modes, SET, SET_DEST, SET_SRC, XSTR, XVECEXP, and XVECLEN.
Referenced by asm_insn_count(), check_asm_operands(), extract_insn(), final_scan_insn_1(), lra_set_insn_recog_data(), lra_update_insn_recog_data(), and maybe_fix_stack_asms().
|
extern |
Describe address *LOC in *INFO. MODE is the mode of the addressed value, or VOIDmode if not known. AS is the address space associated with LOC. OUTER_CODE is MEM if *LOC is a MEM address and ADDRESS otherwise.
References decompose_automod_address(), decompose_incdec_address(), decompose_normal_address(), GET_CODE, and strip_address_mutations().
Referenced by decompose_lea_address(), decompose_mem_address(), and update_address().
|
extern |
Describe address operand LOC in INFO.
References ADDR_SPACE_GENERIC, and decompose_address().
Referenced by process_address_1(), and satisfies_address_constraint_p().
|
extern |
Describe the address of MEM X in INFO.
References decompose_address(), gcc_assert, GET_MODE, MEM_ADDR_SPACE, MEM_P, and XEXP.
Referenced by process_address_1(), and satisfies_memory_constraint_p().
Simplify a MEM based on its attributes. This is the default delegitimize_address target hook, and it's recommended that every overrider call it.
References adjust_address_nv, DECL_RTL, DECL_RTL_SET_P, DECL_THREAD_LOCAL_P, get_inner_reference(), GET_MODE, GET_MODE_BITSIZE(), known_eq, MEM_EXPR, MEM_OFFSET, MEM_OFFSET_KNOWN_P, MEM_P, NULL, poly_int_tree_p(), rtx_equal_p(), strip_offset(), TREE_CODE, TREE_STATIC, VAR_P, and XEXP.
Delete a range of insns from FROM to TO, inclusive. This is for the sake of peephole optimization, so assume that whatever these insns do will still be done by a new peephole insn that will replace them.
References NEXT_INSN(), NOTE_P, PREV_INSN(), rtx_insn::set_deleted(), SET_NEXT_INSN(), and SET_PREV_INSN().
|
extern |
Delete all insns made since FROM. FROM becomes the new last instruction.
References set_first_insn(), set_last_insn(), and SET_NEXT_INSN().
Referenced by base_to_reg(), can_widen_mult_without_libcall(), default_zero_call_used_regs(), emit_add3_insn(), address_reload_context::emit_autoinc(), emit_conditional_add(), emit_conditional_move(), emit_conditional_neg_or_complement(), emit_cstore(), emit_insn_if_valid_for_reload_1(), emit_store_flag(), emit_store_flag_int(), expand_abs_nojump(), expand_addsub_overflow(), expand_atomic_load(), expand_atomic_store(), expand_binop(), expand_binop_directly(), expand_builtin_interclass_mathfn(), expand_builtin_issignaling(), expand_builtin_signbit(), expand_ccmp_expr(), expand_DIVMOD(), expand_divmod(), expand_doubleword_shift(), expand_fix(), expand_mul_overflow(), expand_neg_overflow(), expand_one_cmpl_abs_nojump(), expand_parity(), expand_sfix_optab(), expand_twoval_binop(), expand_twoval_unop(), expand_unop(), expand_unop_direct(), expand_vec_perm_const(), extract_integral_bit_field(), force_subreg(), gen_reload_chain_without_interm_reg_p(), inc_for_reload(), lra_emit_add(), maybe_emit_sync_lock_test_and_set(), maybe_legitimize_operand_same_code(), maybe_legitimize_operands(), move_block_from_reg(), move_block_to_reg(), prepare_cmp_insn(), process_address_1(), store_bit_field_using_insv(), store_integral_bit_field(), widen_bswap(), and widen_leading().
In jump.cc
Delete insn INSN from the chain of insns and update label ref counts and delete insns now unreachable. Returns the first insn after INSN that was not deleted. Usage of this instruction is deprecated. Use delete_insn instead and subsequent cfg_cleanup pass to delete unreachable code if needed.
References as_a(), BARRIER_P, delete_insn(), delete_related_insns(), rtx_insn::deleted(), dyn_cast(), GET_CODE, GET_NUM_ELEM, i, INSN_P, JUMP_LABEL, JUMP_TABLE_DATA_P, jump_to_label_p(), LABEL_NUSES, LABEL_P, NEXT_INSN(), NOTE_P, NULL, PATTERN(), PREV_INSN(), REG_NOTE_KIND, REG_NOTES, RTVEC_ELT, table, tablejump_p(), and XEXP.
Referenced by dbr_schedule(), delete_address_reloads(), delete_computation(), delete_from_delay_slot(), delete_related_insns(), delete_scheduled_jump(), fill_simple_delay_slots(), fill_slots_from_thread(), make_return_insns(), optimize_skip(), redirect_jump_2(), relax_delay_slots(), and try_merge_delay_insns().
|
extern |
In cse.cc
Scan all the insns and delete any that are dead; i.e., they store a register that is never used or they copy a register to itself. This is used to remove insns made obviously dead by cse, loop or other optimizations. It improves the heuristics in loop since it won't try to move dead invariants out of loops or make givs for dead quantities. The remaining passes of the compilation are also sped up.
References asm_noperands(), count_reg_usage(), count_stores(), cse_cfg_altered, dbg_cnt(), DEBUG_BIND_INSN_P, DEBUG_EXPR_TREE_DECL, DEBUG_INSN_P, DEBUG_MARKER_INSN_P, delete_insn_and_edges(), df_insn_rescan(), dump_file, emit_debug_insn_before(), free(), gen_rtx_UNKNOWN_VAR_LOC, gen_rtx_VAR_LOCATION(), get_last_insn(), GET_MODE, insn_live_p(), INSN_P, INSN_VAR_LOCATION_DECL, INSN_VAR_LOCATION_LOC, insns, is_dead_debug_insn(), is_dead_reg(), make_debug_expr_from_rtl(), MAY_HAVE_DEBUG_BIND_INSNS, NEXT_INSN(), note_stores(), NULL, NULL_RTX, PATTERN(), pic_offset_table_rtx, PREV_INSN(), REGNO, reload_completed, replace_dead_reg(), replacements, SET_DEST, SET_SRC, side_effects_p(), simplify_replace_fn_rtx(), single_set(), timevar_pop(), timevar_push(), TREE_VISITED, and VAR_INIT_STATUS_INITIALIZED.
Referenced by cleanup_cfg(), fwprop_done(), ira(), rest_of_handle_cse2(), and rest_of_handle_cse_after_global_opts().
|
extern |
Remove from the insn stream all debug insns used for variable tracking at assignments. USE_CFG should be false if the cfg is no longer usable.
References cfun, DEBUG_INSN_P, delete_vta_debug_insn(), FOR_BB_INSNS_SAFE, FOR_EACH_BB_FN, get_insns(), MAY_HAVE_DEBUG_INSNS, and NEXT_INSN().
Referenced by rest_of_handle_final(), variable_tracking_main_1(), and vt_debug_insns_local().
|
extern |
References GET_RTX_NAME, i, LAST_AND_UNUSED_RTX_CODE, PRsa, rtvec_alloc_counts, rtvec_alloc_sizes, rtx_alloc_counts, rtx_alloc_sizes, rtx_count_cmp(), and SIZE_AMOUNT.
Referenced by dump_memory_report().
Duplicate NOTE and return the copy.
References alloc_reg_note(), copy_insn_1(), GET_CODE, NULL_RTX, REG_NOTE_KIND, XEXP, and XINT.
Referenced by emit_copy_of_insn_after().
Return true if INSN is a (possibly conditional) return insn.
References FOR_EACH_SUBRTX, GET_CODE, JUMP_P, and PATTERN().
Referenced by thread_prologue_and_epilogue_insns().
Emit the rtl pattern X as an appropriate kind of insn. Also emit a following barrier if the instruction needs one and if ALLOW_BARRIER_P is true. If X is a label, it is simply added into the insn chain.
References any_uncondjump_p(), classify_insn(), emit_barrier(), emit_call_insn(), emit_debug_insn(), emit_insn(), emit_jump_insn(), emit_label(), gcc_unreachable, and GET_CODE.
Referenced by ensure_regno(), and gen_reg_rtx().
|
extern |
Make an insn of code BARRIER and add it to the end of the doubly-linked list.
References add_insn(), as_a(), cur_insn_uid, INSN_UID(), and rtx_alloc().
Referenced by allocate_dynamic_stack_space(), compare_by_pieces(), do_tablejump(), duplicate_insn_chain(), emit(), emit_case_dispatch_table(), emit_indirect_jump(), emit_jump(), expand_builtin_return(), expand_builtin_trap(), expand_builtin_unreachable(), expand_divmod(), expand_doubleword_clz_ctz_ffs(), expand_doubleword_shift(), expand_expr_real_2(), expand_fix(), expand_float(), find_end_label(), and store_expr().
|
extern |
Make an insn of code BARRIER and output it after the insn AFTER.
References add_insn_after(), as_a(), cur_insn_uid, INSN_UID(), NULL, and rtx_alloc().
Referenced by commit_one_edge_insertion(), delete_from_delay_slot(), emit_barrier_after_bb(), emit_library_call_value_1(), expand_call(), find_cond_trap(), fixup_reorder_chain(), make_return_insns(), try_optimize_cfg(), try_redirect_by_replacing_jump(), and update_cfg_for_uncondjump().
|
extern |
Make an insn of code BARRIER and output it before the insn BEFORE.
References add_insn_before(), as_a(), cur_insn_uid, INSN_UID(), NULL, and rtx_alloc().
Make an insn of code CALL_INSN with pattern X and add it to the end of the doubly-linked list.
References add_insn(), emit_insn(), gcc_unreachable, GET_CODE, and make_call_insn_raw().
Referenced by emit().
Like emit_call_insn_after_noloc, but set INSN_LOCATION according to AFTER.
References emit_pattern_after(), and make_call_insn_raw().
Referenced by emit_copy_of_insn_after().
Make an instruction with body X and code CALL_INSN and output it after the instruction AFTER.
References emit_pattern_after_noloc(), make_call_insn_raw(), and NULL.
Like emit_call_insn_after_noloc, but set INSN_LOCATION according to LOC.
References emit_pattern_after_setloc(), and make_call_insn_raw().
Like emit_call_insn_before_noloc, but set insn_location according to BEFORE.
References emit_pattern_before(), and make_call_insn_raw().
Make an instruction with body X and code CALL_INSN and output it before the instruction BEFORE.
References emit_pattern_before_noloc(), make_call_insn_raw(), and NULL.
Like emit_insn_before_noloc, but set INSN_LOCATION according to LOC.
References emit_pattern_before_setloc(), and make_call_insn_raw().
Emit a clobber of lvalue X.
References emit_clobber(), emit_insn(), GET_CODE, and XEXP.
Referenced by convert_mode_scalar(), do_clobber_return_reg(), emit_clobber(), emit_move_complex_parts(), emit_move_multi_word(), emit_stack_restore(), expand_binop(), expand_builtin_longjmp(), expand_builtin_nonlocal_goto(), expand_builtin_setjmp_receiver(), expand_clobber(), expand_doubleword_bswap(), expand_eh_return(), extract_integral_bit_field(), gen_clobber(), initialize_uninitialized_regs(), match_reload(), resolve_simple_move(), store_constructor(), and widen_operand().
Make an insn of code DEBUG_INSN with pattern X and add it to the end of the doubly-linked list.
References add_insn(), as_a(), gcc_unreachable, GET_CODE, get_last_insn(), last, make_debug_insn_raw(), sequence_stack::next, NEXT_INSN(), and NULL_RTX.
Referenced by emit(), and expand_gimple_basic_block().
Like emit_debug_insn_after_noloc, but set INSN_LOCATION according to AFTER.
References emit_pattern_after(), and make_debug_insn_raw().
Referenced by dead_debug_insert_temp(), and emit_copy_of_insn_after().
Make an instruction with body X and code CALL_INSN and output it after the instruction AFTER.
References emit_pattern_after_noloc(), make_debug_insn_raw(), and NULL.
Like emit_debug_insn_after_noloc, but set INSN_LOCATION according to LOC.
References emit_pattern_after_setloc(), and make_debug_insn_raw().
Like emit_debug_insn_before_noloc, but set insn_location according to BEFORE.
References emit_pattern_before(), and make_debug_insn_raw().
Referenced by avoid_complex_debug_insns(), dead_debug_insert_temp(), dead_debug_promote_uses(), delete_trivially_dead_insns(), and propagate_for_debug_subst().
Make an instruction with body X and code DEBUG_INSN and output it before the instruction BEFORE.
References emit_pattern_before_noloc(), make_debug_insn_raw(), and NULL.
Like emit_insn_before_noloc, but set INSN_LOCATION according to LOC.
References emit_pattern_before_setloc(), and make_debug_insn_raw().
Take X and emit it at the end of the doubly-linked INSN list. Returns the last insn emitted.
References add_insn(), as_a(), gcc_unreachable, GET_CODE, get_last_insn(), last, make_insn_raw(), sequence_stack::next, NEXT_INSN(), and NULL_RTX.
Referenced by allocate_dynamic_stack_space(), anti_adjust_stack_and_probe_stack_clash(), asan_clear_shadow(), assign_parm_setup_reg(), assign_parms(), base_to_reg(), check_and_process_move(), compute_can_copy(), convert_mode_scalar(), curr_insn_transform(), default_speculation_safe_value(), do_compare_and_jump(), do_remat(), emit(), emit_add2_insn(), emit_add3_insn(), address_reload_context::emit_autoinc(), emit_call_1(), emit_call_insn(), emit_clobber(), emit_delay_sequence(), emit_inc_dec_insn_before(), emit_input_reload_insns(), emit_insn_if_valid_for_reload_1(), emit_move_ccmode(), emit_move_insn_1(), emit_move_list(), emit_move_multi_word(), emit_move_via_integer(), emit_output_reload_insns(), emit_stack_probe(), emit_stack_restore(), emit_stack_save(), emit_use(), expand_absneg_bit(), expand_asm_loc(), expand_asm_memory_blockage(), expand_asm_reg_clobber_mem_blockage(), expand_asm_stmt(), expand_atomic_fetch_op(), expand_binop(), expand_binop_directly(), expand_builtin_apply(), expand_builtin_feclear_feraise_except(), expand_builtin_fegetround(), expand_builtin_goacc_parlevel_id_size(), expand_builtin_int_roundingfn(), expand_builtin_int_roundingfn_2(), expand_builtin_longjmp(), expand_builtin_mathfn_3(), expand_builtin_mathfn_ternary(), expand_builtin_nonlocal_goto(), expand_builtin_prefetch(), expand_builtin_return(), expand_builtin_setjmp_receiver(), expand_builtin_setjmp_setup(), expand_builtin_trap(), expand_call(), expand_ccmp_expr(), expand_clrsb_using_clz(), expand_compare_and_swap_loop(), expand_cond_expr_using_cmove(), expand_copysign_bit(), expand_ctz(), expand_DIVMOD(), expand_doubleword_clz_ctz_ffs(), expand_doubleword_popcount(), expand_dw2_landing_pad_for_region(), expand_eh_return(), expand_expr_divmod(), expand_expr_real_1(), expand_expr_real_2(), expand_ffs(), expand_function_end(), expand_GOACC_DIM_POS(), expand_GOACC_DIM_SIZE(), expand_GOMP_SIMT_LANE(), expand_mem_thread_fence(), expand_memory_blockage(), expand_POPCOUNT(), expand_sdiv_pow2(), expand_UNIQUE(), expand_unop(), expand_unop_direct(), expand_vector_broadcast(), expmed_mult_highpart_optab(), find_shift_sequence(), gen_cond_trap(), gen_reload(), gen_reload_chain_without_interm_reg_p(), move_by_pieces_d::generate(), store_by_pieces_d::generate(), inc_for_reload(), pieces_addr::increment_address(), inline_string_cmp(), insert_insn_on_edge(), insert_move_for_subreg(), ira(), lra_emit_move(), lra_process_new_insns(), make_prologue_seq(), make_split_prologue_seq(), match_reload(), maybe_emit_unop_insn(), maybe_expand_insn(), maybe_optimize_mod_cmp(), maybe_optimize_pow2p_mod_cmp(), move_block_from_reg(), move_block_to_reg(), noce_convert_multiple_sets_1(), noce_emit_all_but_last(), noce_emit_cmove(), noce_emit_insn(), noce_emit_move_insn(), noce_emit_store_flag(), prepare_call_address(), prepare_cmp_insn(), prepare_copy_insn(), prepend_insn_to_edge(), probe_stack_range(), process_addr_reg(), process_address_1(), remove_inheritance_pseudos(), stack_protect_epilogue(), stack_protect_prologue(), store_constructor(), and thread_prologue_and_epilogue_insns().
Like emit_insn_after_noloc, but set INSN_LOCATION according to AFTER.
References emit_pattern_after(), and make_insn_raw().
Referenced by combine_var_copies_in_loop_exit(), doloop_modify(), eliminate_regs_in_insn(), emit_common_heads_for_components(), emit_common_tails_for_components(), emit_copy_of_insn_after(), emit_moves(), emit_reload_insns(), expand_builtin_saveregs(), expand_builtin_strlen(), expand_function_end(), fill_slots_from_thread(), find_and_remove_re(), find_moveable_pseudos(), find_reloads(), gcse_emit_move_after(), get_arg_pointer_save_area(), insert_one_insn(), insert_prologue_epilogue_for_components(), insert_var_expansion_initialization(), lra_process_new_insns(), maybe_add_nop_after_section_switch(), move_insn_for_shrink_wrap(), move_invariant_reg(), move_unallocated_pseudos(), pre_insert_copy_insn(), replace_store_insn(), resolve_clobber(), rtl_lv_add_condition_to_bb(), sjlj_emit_function_enter(), sjlj_emit_function_exit(), split_edge_and_insert(), split_live_ranges_for_shrink_wrap(), and try_merge_compare().
|
extern |
Make X be output after the insn AFTER and set the BB of insn. If BB is NULL, an attempt is made to infer the BB from AFTER.
References emit_pattern_after_noloc(), and make_insn_raw().
Referenced by cfg_layout_merge_blocks(), commit_one_edge_insertion(), emit_nop_for_unique_locus_between(), expand_gimple_basic_block(), fixup_reorder_chain(), insert_insn_end_basic_block(), insert_insn_start_basic_block(), insert_insn_start_basic_block(), and lra_process_new_insns().
Like emit_insn_after_noloc, but set INSN_LOCATION according to LOC.
References emit_pattern_after_setloc(), and make_insn_raw().
Referenced by peep2_attempt(), and try_split().
|
extern |
Emit INSN at the entry point of the function, ensuring that it is only executed once per function.
References cfun, commit_edge_insertions(), ei_safe_edge(), ei_start, ENTRY_BLOCK_PTR_FOR_FN, gcc_assert, and insert_insn_on_edge().
Referenced by emit_initial_value_sets().
In emit-rtl.cc
Like emit_insn_before_noloc, but set INSN_LOCATION according to BEFORE.
References emit_pattern_before(), and make_insn_raw().
Referenced by attempt_change(), combine_and_move_insns(), emit_common_tails_for_components(), emit_inc_dec_insn_before(), emit_moves(), emit_reload_insns(), emit_to_new_bb_before(), expand_builtin_apply_args(), expand_builtin_strlen(), expand_function_end(), find_moveable_pseudos(), find_reloads(), find_reloads_address(), find_reloads_subreg_address(), find_reloads_toplev(), fix_crossing_unconditional_branches(), force_move_args_size_note(), gen_call_used_regs_seq(), hwasan_maybe_emit_frame_base_init(), initialize_uninitialized_regs(), insert_base_initialization(), insert_one_insn(), insert_prologue_epilogue_for_components(), instantiate_virtual_regs_in_insn(), lra_process_new_insns(), make_more_copies(), match_asm_constraints_1(), pre_insert_copy_insn(), replace_read(), resolve_shift_zext(), resolve_simple_move(), sjlj_emit_function_enter(), sjlj_mark_call_sites(), split_iv(), subst_reg_equivs(), thread_prologue_and_epilogue_insns(), try_optimize_cfg(), update_block(), and update_ld_motion_stores().
|
extern |
Make X be output before the instruction BEFORE.
References emit_pattern_before_noloc(), and make_insn_raw().
Referenced by commit_one_edge_insertion(), insert_insn_end_basic_block(), and lra_process_new_insns().
Like emit_insn_before_noloc, but set INSN_LOCATION according to LOC.
References emit_pattern_before_setloc(), and make_insn_raw().
Referenced by cond_move_process_if_block(), emit_to_new_bb_before(), find_cond_trap(), noce_convert_multiple_sets(), noce_process_if_block(), noce_try_abs(), noce_try_addcc(), noce_try_bitop(), noce_try_cmove(), noce_try_cmove_arith(), noce_try_cond_zero_arith(), noce_try_ifelse_collapse(), noce_try_inverse_constants(), noce_try_minmax(), noce_try_move(), noce_try_sign_mask(), noce_try_store_flag(), noce_try_store_flag_constants(), and noce_try_store_flag_mask().
|
extern |
Add an unconditional jump to LABEL as the next sequential instruction.
References do_pending_stack_adjust(), emit_barrier(), emit_jump_insn(), and targetm.
Referenced by allocate_dynamic_stack_space(), anti_adjust_stack_and_probe(), asan_emit_stack_protection(), compare_by_pieces(), construct_init_block(), do_compare_rtx_and_jump(), do_jump(), do_jump_by_parts_equality_rtx(), do_jump_by_parts_greater_rtx(), do_jump_by_parts_zero_rtx(), emit_block_cmp_via_loop(), emit_block_move_via_loop(), emit_block_move_via_oriented_loop(), emit_stack_clash_protection_probe_loop_end(), expand_addsub_overflow(), expand_builtin_eh_return(), expand_eh_return(), expand_gimple_basic_block(), expand_gimple_cond(), expand_goto(), expand_mul_overflow(), expand_naked_return(), expand_neg_overflow(), expand_null_return_1(), probe_stack_range(), and store_constructor().
Make an insn of code JUMP_INSN with pattern X and add it to the end of the doubly-linked list.
References add_insn(), as_a(), gcc_unreachable, GET_CODE, last, make_jump_insn_raw(), sequence_stack::next, NEXT_INSN(), and NULL.
Referenced by compare_and_jump_seq(), create_eh_forwarder_block(), do_tablejump(), emit(), emit_cmp_and_jump_insn_1(), emit_jump(), emit_likely_jump_insn(), emit_unlikely_jump_insn(), expand_asm_stmt(), expand_builtin_return(), expand_divmod(), expand_doubleword_clz_ctz_ffs(), expand_doubleword_shift(), expand_expr_real_2(), expand_fix(), expand_float(), find_end_label(), fix_crossing_conditional_branches(), get_uncond_jump_length(), make_epilogue_seq(), maybe_expand_jump_insn(), and store_expr().
|
extern |
Like emit_jump_insn_after_noloc, but set INSN_LOCATION according to AFTER.
References as_a(), emit_pattern_after(), and make_jump_insn_raw().
Referenced by add_labels_and_missing_jumps(), doloop_modify(), emit_copy_of_insn_after(), find_cond_trap(), and handle_simple_exit().
|
extern |
Make an insn of code JUMP_INSN with body X and output it after the insn AFTER.
References as_a(), emit_pattern_after_noloc(), make_jump_insn_raw(), and NULL.
Referenced by try_redirect_by_replacing_jump().
|
extern |
Like emit_jump_insn_after_noloc, but set INSN_LOCATION according to LOC.
References as_a(), emit_pattern_after_setloc(), and make_jump_insn_raw().
Referenced by force_nonfallthru_and_redirect().
|
extern |
Like emit_jump_insn_before_noloc, but set INSN_LOCATION according to BEFORE.
References as_a(), emit_pattern_before(), and make_jump_insn_raw().
Referenced by cse_insn().
|
extern |
Make an instruction with body X and code JUMP_INSN and output it before the instruction BEFORE.
References as_a(), emit_pattern_before_noloc(), make_jump_insn_raw(), and NULL.
|
extern |
like emit_insn_before_noloc, but set INSN_LOCATION according to LOC.
References as_a(), emit_pattern_before_setloc(), and make_jump_insn_raw().
|
extern |
Make an insn of code JUMP_TABLE_DATA and add it to the end of the doubly-linked list.
References add_insn(), as_a(), BLOCK_FOR_INSN(), cur_insn_uid, INSN_UID(), NULL, PATTERN(), rtx_alloc(), and table.
Referenced by emit_case_dispatch_table().
|
extern |
Add the label LABEL to the end of the doubly-linked list.
References add_insn(), as_a(), cur_insn_uid, gcc_checking_assert, and INSN_UID().
Referenced by allocate_dynamic_stack_space(), anti_adjust_stack_and_probe(), anti_adjust_stack_and_probe_stack_clash(), asan_clear_shadow(), asan_emit_stack_protection(), compare_by_pieces(), create_eh_forwarder_block(), do_compare_rtx_and_jump(), do_jump(), do_jump_1(), do_jump_by_parts_equality_rtx(), do_jump_by_parts_greater_rtx(), do_jump_by_parts_zero_rtx(), dw2_build_landing_pads(), emit(), emit_block_cmp_via_loop(), emit_block_move_via_loop(), emit_block_move_via_oriented_loop(), emit_case_dispatch_table(), emit_stack_clash_protection_probe_loop_end(), emit_stack_clash_protection_probe_loop_start(), emit_store_flag_force(), expand_abs(), expand_addsub_overflow(), expand_arith_overflow_result_store(), expand_asm_stmt(), expand_builtin_atomic_compare_exchange(), expand_builtin_strub_leave(), expand_builtin_strub_update(), expand_compare_and_swap_loop(), expand_copysign_absneg(), expand_divmod(), expand_doubleword_clz_ctz_ffs(), expand_doubleword_shift(), expand_eh_return(), expand_expr_real_1(), expand_expr_real_2(), expand_ffs(), expand_fix(), expand_float(), expand_function_end(), expand_gimple_basic_block(), expand_label(), expand_mul_overflow(), expand_neg_overflow(), expand_sdiv_pow2(), expand_sjlj_dispatch_table(), expand_smod_pow2(), expand_vector_ubsan_overflow(), find_end_label(), fix_crossing_conditional_branches(), get_uncond_jump_length(), inline_string_cmp(), prepare_call_address(), probe_stack_range(), sjlj_emit_dispatch_table(), stack_protect_epilogue(), store_constructor(), store_expr(), and try_store_by_multiple_pieces().
Emit the label LABEL after the insn AFTER.
References add_insn_after(), cur_insn_uid, gcc_checking_assert, INSN_UID(), and NULL.
Referenced by find_end_label(), and get_label_before().
|
extern |
Emit the label LABEL before the insn BEFORE.
References add_insn_before(), cur_insn_uid, gcc_checking_assert, INSN_UID(), and NULL.
Referenced by block_label().
|
inline |
Output a library call and discard the returned value. FUN is the address of the function, as a SYMBOL_REF rtx, and OUTMODE is the mode of the (discarded) return value. FN_TYPE is LCT_NORMAL for `normal' calls, LCT_CONST for `const' calls, LCT_PURE for `pure' calls, or another LCT_ value for other types of library calls. There are different overloads of this function for different numbers of arguments. In each case the argument value is followed by its mode.
References emit_library_call_value_1(), NULL, and NULL_RTX.
Referenced by asan_emit_allocas_unpoison(), asan_emit_stack_protection(), default_emit_call_builtin___clear_cache(), expand_FLOATTOBITINT(), expand_HWASAN_MARK(), expand_main_function(), expand_mem_thread_fence(), hwasan_emit_prologue(), hwasan_emit_untag_frame(), probe_stack_range(), sjlj_emit_function_enter(), and sjlj_emit_function_exit().
|
inline |
References emit_library_call_value_1(), and NULL_RTX.
|
inline |
References emit_library_call_value_1(), and NULL_RTX.
|
inline |
References emit_library_call_value_1(), and NULL_RTX.
|
inline |
References emit_library_call_value_1(), and NULL_RTX.
|
inline |
Like emit_library_call, but return the value produced by the call. Use VALUE to store the result if it is nonnull, otherwise pick a convenient location.
References emit_library_call_value_1(), and NULL.
Referenced by allocate_dynamic_stack_space(), asan_emit_stack_protection(), convert_mode_scalar(), default_memtag_insert_random_tag(), expand_asan_emit_allocas_unpoison(), expand_atomic_compare_and_swap(), expand_atomic_fetch_op(), expand_binop(), expand_BITINTTOFLOAT(), expand_builtin_powi(), expand_fix(), expand_fixed_convert(), expand_float(), expand_HWASAN_ALLOCA_UNPOISON(), expand_twoval_binop_libfunc(), expand_unop(), maybe_emit_sync_lock_test_and_set(), prepare_cmp_insn(), and prepare_float_lib_cmp().
|
inline |
References emit_library_call_value_1().
|
inline |
References emit_library_call_value_1().
|
inline |
References emit_library_call_value_1().
|
inline |
References emit_library_call_value_1().
|
extern |
Output a library call to function ORGFUN (a SYMBOL_REF rtx) for a value of mode OUTMODE, with NARGS different arguments, passed as ARGS. Store the return value if RETVAL is nonzero: store it in VALUE if VALUE is nonnull, otherwise pick a convenient location. In either case return the location of the stored value. FN_TYPE should be LCT_NORMAL for `normal' calls, LCT_CONST for `const' calls, LCT_PURE for `pure' calls, or another LCT_ value for other types of library calls.
References ACCUMULATE_OUTGOING_ARGS, add_reg_note(), aggregate_value_p(), anti_adjust_stack(), ARGS_GROW_DOWNWARD, ARGS_SIZE_RTX, assemble_external_libcall(), assign_stack_temp(), assign_temp(), BLOCK_OP_CALL_PARM, build_function_type(), build_pointer_type(), CALL_P, args_size::constant, CONSTANT_P, convert_modes(), copy_rtx(), count, crtl, current_function_pushed_stack_size, ECF_CONST, ECF_LOOPING_CONST_OR_PURE, ECF_NORETURN, ECF_NOTHROW, ECF_PURE, ECF_RETURNS_TWICE, opt_mode< T >::else_blk(), emit_barrier_after(), emit_block_move(), emit_call_1(), emit_group_load(), emit_group_store(), emit_move_insn(), emit_push_insn(), function_arg_info::end_marker(), expand_shift(), force_operand(), force_reg(), free(), gcc_assert, gen_int_mode(), gen_reg_rtx(), gen_rtx_EXPR_LIST(), gen_rtx_MEM(), gen_rtx_REG(), GET_CODE, get_identifier(), get_last_insn(), GET_MODE, GET_MODE_SIZE(), hard_function_value(), hard_libcall_value(), highest_outgoing_arg_in_use, i, inhibit_defer_pop, int_mode_for_size(), known_le, known_lt, last, last_call_insn(), LCT_CONST, LCT_NORETURN, LCT_NORMAL, LCT_PURE, LCT_RETURNS_TWICE, LCT_THROW, locate_and_pad_parm(), make_reg_eh_region_note_nothrow_nononlocal(), mark_addressable(), mark_stack_region_used(), MAX, MEM_EXPR, MEM_P, memory_address, function_arg_info::mode, NO_DEFER_POP, NULL, NULL_RTX, NULL_TREE, OK_DEFER_POP, OUTGOING_REG_PARM_STACK_SPACE, PAD_DOWNWARD, PAD_UPWARD, function_arg_info::pass_by_reference, pass_by_reference(), pc_rtx, pending_stack_adjust, plus_constant(), pop_temp_slots(), PREFERRED_STACK_BOUNDARY, prepare_call_address(), PREV_INSN(), promote_function_mode(), push_block(), push_temp_slots(), record_final_call(), reference_callee_copied(), REG_P, REGNO, shift, shift_return_value(), STACK_BYTES, stack_pointer_delta, STACK_POINTER_OFFSET, stack_pointer_rtx, stack_region_maybe_used_p(), stack_usage_map, stack_usage_watermark, SYMBOL_REF_DECL, targetm, TREE_TYPE, lang_hooks_for_types::type_for_mode, TYPE_MODE, TYPE_UNSIGNED, lang_hooks::types, UNKNOWN_LOCATION, update_stack_alignment_for_call(), use_group_regs(), use_reg(), use_regs(), validize_mem(), args_size::var, virtual_outgoing_args_rtx, virtuals_instantiated, void_type_node, word_mode, XEXP, and XSTR.
Referenced by emit_library_call(), emit_library_call(), emit_library_call(), emit_library_call(), emit_library_call(), emit_library_call_value(), emit_library_call_value(), emit_library_call_value(), emit_library_call_value(), emit_library_call_value(), expand_DIVMODBITINT(), and expand_MULBITINT().
Make an insn of code JUMP_INSN with pattern X, add a REG_BR_PROB note that indicates very likely probability, and add it to the end of the doubly-linked list.
References add_reg_br_prob_note(), emit_jump_insn(), and profile_probability::very_likely().
Make an insn of code NOTE or type NOTE_NO and add it to the end of the doubly-linked list.
References add_insn(), and make_note_raw().
Referenced by duplicate_insn_chain(), expand_function_start(), expand_gimple_basic_block(), lra(), make_epilogue_seq(), make_prologue_seq(), reemit_insn_block_notes(), reload(), reload_as_needed(), thread_prologue_and_epilogue_insns(), and update_sjlj_context().
Emit a note of subtype SUBTYPE after the insn AFTER.
References add_insn_after(), add_insn_after_nobb(), BARRIER_P, BB_END, BLOCK_FOR_INSN(), make_note_raw(), note_outside_basic_block_p(), and NULL.
Referenced by add_cfi(), create_basic_block_structure(), emit_note_eh_region_end(), emit_note_insn_var_location(), expand_gimple_basic_block(), handle_simple_exit(), reemit_insn_block_notes(), rtl_split_block(), and thread_prologue_and_epilogue_insns().
Emit a note of subtype SUBTYPE before the insn BEFORE.
References add_insn_before(), add_insn_before_nobb(), BARRIER_P, BB_HEAD, BLOCK_FOR_INSN(), make_note_raw(), note_outside_basic_block_p(), and NULL.
Referenced by add_cfis_to_fde(), change_scope(), convert_to_eh_region_ranges(), create_basic_block_structure(), emit_note_insn_var_location(), insert_section_boundary_note(), reemit_insn_block_notes(), and reemit_marker_as_note().
Emit a copy of note ORIG.
References add_insn(), make_note_raw(), NOTE_DATA, and NOTE_KIND.
Referenced by duplicate_insn_chain().
Make an insn of code JUMP_INSN with pattern X, add a REG_BR_PROB note that indicates very unlikely probability, and add it to the end of the doubly-linked list.
References add_reg_br_prob_note(), emit_jump_insn(), and profile_probability::very_unlikely().
Emit a use of rvalue X.
References emit_insn(), emit_use(), GET_CODE, and XEXP.
Referenced by do_use_return_reg(), emit_use(), expand_builtin_longjmp(), expand_builtin_nonlocal_goto(), expand_builtin_return(), expand_builtin_setjmp_receiver(), gen_use(), and make_prologue_seq().
|
extern |
References old_reg_base_value, reg_base_value, reg_known_equiv_p, reg_known_value, sbitmap_free(), and vec_free().
Referenced by cse_main(), dse_step7(), gcse_after_reload_main(), ira(), one_code_hoisting_pass(), one_pre_gcse_pass(), one_store_motion_pass(), and reload_cse_regs_1().
|
inline |
Return the final register in REG X plus one.
References REG_NREGS, and REGNO.
Referenced by covers_regno_no_parallel_p(), cse_insn(), dead_or_set_p(), delete_prior_computation(), df_ref_record(), distribute_notes(), emit_reload_insns(), exp_equiv_p(), find_equiv_reg(), find_reg_fusage(), find_regno_fusage(), find_regno_note(), get_last_value_validate(), invalidate_reg(), make_object_dead(), mark_hard_reg_dead(), mark_hard_reg_live(), mark_reg_death(), mark_reg_store(), mark_set_regs(), mention_regs(), mentions_nonequal_regs(), move_deaths(), move_insn_for_shrink_wrap(), note_add_store(), peep2_reg_dead_p(), prepare_shrink_wrap(), record_dead_and_set_regs(), record_last_reg_set_info(), record_value_for_reg(), refers_to_regno_for_reload_p(), refers_to_regno_p(), reg_changed_after_insn_p(), reg_dead_at_p(), reg_dead_at_p_1(), reg_overlap_mentioned_for_reload_p(), reg_overlap_mentioned_p(), reload_combine(), reload_combine_note_store(), reload_combine_note_use(), reload_reg_reaches_end_p(), reload_reg_rtx_reaches_end_p(), try_apply_stack_adjustment(), rtx_properties::try_to_add_reg(), update_live_status(), and update_table_tick().
|
extern |
After emitting to a sequence, restore previous saved state. To get the contents of the sequence just made, you must call `get_insns' *before* calling here. If the compiler might have deferred popping arguments while generating this sequence, and this sequence will not be immediately inserted into the instruction stream, use do_pending_stack_adjust before calling get_insns. That will ensure that the deferred pops are inserted into this sequence, and not into some random location in the instruction stream. See INHIBIT_DEFER_POP for more information about deferred popping of arguments.
References sequence_stack::first, free_sequence_stack, get_current_sequence(), sequence_stack::last, sequence_stack::next, set_first_insn(), and set_last_insn().
Referenced by add_test(), asan_clear_shadow(), asan_emit_allocas_unpoison(), asan_emit_stack_protection(), assign_parm_setup_block(), assign_parm_setup_reg(), assign_parm_setup_stack(), assign_parms_unsplit_complex(), attempt_change(), check_and_process_move(), combine_reaching_defs(), combine_var_copies_in_loop_exit(), compare_and_jump_seq(), computation_cost(), compute_can_copy(), cond_move_process_if_block(), convert_mode_scalar(), curr_insn_transform(), do_remat(), doloop_modify(), dw2_build_landing_pads(), emit_common_heads_for_components(), emit_common_tails_for_components(), emit_delay_sequence(), emit_inc_dec_insn_before(), emit_initial_value_sets(), emit_input_reload_insns(), emit_move_list(), emit_move_multi_word(), emit_output_reload_insns(), emit_partition_copy(), end_ifcvt_sequence(), expand_absneg_bit(), expand_asm_stmt(), expand_atomic_fetch_op(), expand_binop(), expand_builtin_apply_args(), expand_builtin_int_roundingfn(), expand_builtin_int_roundingfn_2(), expand_builtin_mathfn_3(), expand_builtin_mathfn_ternary(), expand_builtin_return(), expand_builtin_saveregs(), expand_builtin_strlen(), expand_call(), expand_clrsb_using_clz(), expand_cond_expr_using_cmove(), expand_copysign_bit(), expand_ctz(), expand_DIVMOD(), expand_doubleword_clz_ctz_ffs(), expand_doubleword_popcount(), expand_dummy_function_end(), expand_expr_divmod(), expand_expr_real_2(), expand_ffs(), expand_fix(), expand_fixed_convert(), expand_float(), expand_function_end(), expand_POPCOUNT(), expand_sdiv_pow2(), expand_twoval_binop_libfunc(), expand_unop(), expmed_mult_highpart_optab(), find_shift_sequence(), fix_crossing_unconditional_branches(), gen_call_used_regs_seq(), gen_clobber(), gen_cond_trap(), gen_move_insn(), gen_use(), get_arg_pointer_save_area(), get_uncond_jump_length(), hwasan_emit_untag_frame(), hwasan_frame_base(), inherit_in_ebb(), inherit_reload_reg(), init_set_costs(), initialize_uninitialized_regs(), inline_string_cmp(), insert_base_initialization(), insert_insn_on_edge(), insert_move_for_subreg(), insert_prologue_epilogue_for_components(), insert_value_copy_on_edge(), insert_var_expansion_initialization(), instantiate_virtual_regs_in_insn(), ira(), lra_process_new_insns(), make_epilogue_seq(), make_prologue_seq(), make_split_prologue_seq(), match_asm_constraints_1(), match_reload(), maybe_optimize_mod_cmp(), maybe_optimize_pow2p_mod_cmp(), noce_convert_multiple_sets(), noce_convert_multiple_sets_1(), noce_emit_cmove(), noce_emit_move_insn(), noce_emit_store_flag(), noce_process_if_block(), noce_try_abs(), noce_try_addcc(), noce_try_cmove(), noce_try_cmove_arith(), noce_try_cond_zero_arith(), noce_try_inverse_constants(), noce_try_minmax(), noce_try_sign_mask(), noce_try_store_flag(), noce_try_store_flag_constants(), noce_try_store_flag_mask(), pop_topmost_sequence(), prepare_copy_insn(), prepare_float_lib_cmp(), prepend_insn_to_edge(), process_addr_reg(), process_address_1(), process_invariant_for_inheritance(), record_store(), remove_inheritance_pseudos(), replace_read(), resolve_shift_zext(), resolve_simple_move(), rtl_lv_add_condition_to_bb(), sjlj_emit_dispatch_table(), sjlj_emit_function_enter(), sjlj_emit_function_exit(), sjlj_mark_call_sites(), split_iv(), thread_prologue_and_epilogue_insns(), try_emit_cmove_seq(), and unroll_loop_runtime_iterations().
Return true iff X and Y would canonicalize into the same thing, without actually constructing the canonicalization of either one. If VALIDATE is nonzero, we assume X is an expression being processed from the rtl and Y was found in the hash table. We check register refs in Y for being marked as valid. If FOR_GCSE is true, we compare X and Y for equivalence for GCSE.
References ASM_OPERANDS_INPUT, ASM_OPERANDS_INPUT_CONSTRAINT, ASM_OPERANDS_INPUT_LENGTH, ASM_OPERANDS_OUTPUT_CONSTRAINT, ASM_OPERANDS_OUTPUT_IDX, ASM_OPERANDS_TEMPLATE, CASE_CONST_UNIQUE, cfun, END_REGNO(), exp_equiv_p(), gcc_unreachable, GET_CODE, GET_MODE, GET_RTX_FORMAT, GET_RTX_LENGTH, i, label_ref_label(), MEM_ADDR_SPACE, MEM_ATTRS, mem_attrs_eq_p(), MEM_NOTRAP_P, MEM_VOLATILE_P, REG_IN_TABLE, REG_QTY, REG_TICK, REGNO, same_vector_encodings_p(), SUBREG_BYTE, XEXP, XINT, XLOC, XSTR, XVECEXP, XVECLEN, XWINT, and y.
Referenced by cse_insn(), expr_hasher::equal(), st_expr_hasher::equal(), temp_address_hasher::equal(), exp_equiv_p(), expr_equiv_p(), find_comparison_args(), find_reg_offset_for_const(), fold_rtx(), lookup(), lookup_as_function(), lookup_for_remove(), merge_equiv_classes(), rehash_using_reg(), remove_reachable_equiv_notes(), replace_store_insn(), store_killed_in_insn(), and store_killed_in_pat().
Subtract DEC from TARGET.
References emit_move_insn(), expand_binop(), GET_MODE, OPTAB_LIB_WIDEN, expand_operand::target, and expand_operand::value.
Referenced by expand_divmod().
Add INC into TARGET.
References emit_move_insn(), expand_binop(), GET_MODE, OPTAB_LIB_WIDEN, expand_operand::target, and expand_operand::value.
Referenced by expand_divmod(), and expand_sdiv_pow2().
|
extern |
Generate RTL to return directly from the current function. (That is, we bypass any return value.)
References clear_pending_stack_adjust(), do_pending_stack_adjust(), emit_jump(), gen_label_rtx(), and naked_return_label.
Referenced by expand_builtin_return().
|
extern |
In stmt.cc
Generate RTL to return from the current function, with no value. (That is, we do not do anything about returning any value.)
References clobber_return_register(), and expand_null_return_1().
Referenced by expand_gimple_stmt_1(), and expand_return().
In combine.cc
Return the number of "extended" bits there are in X, when interpreted as a quantity in MODE whose signedness is indicated by UNSIGNEDP. For unsigned quantities, this is the number of high-order zero bits. For signed quantities, this is the number of copies of the sign bit minus 1. In both case, this function returns the number of "spare" bits. For example, if two quantities for which this function returns at least 1 are added, the addition is known not to overflow. This function will always return 0 unless called during combine, which implies that it must be called from a define_split.
References floor_log2(), GET_MODE_PRECISION(), HWI_COMPUTABLE_MODE_P(), is_a(), nonzero_bits(), nonzero_sign_valid, and num_sign_bit_copies().
recog.cc
If BODY is an insn body that uses ASM_OPERANDS, return it.
References GET_CODE, NULL, SET, SET_SRC, and XVECEXP.
Referenced by asm_labels_ok(), asm_noperands(), can_combine_p(), create_trace_edges(), fixup_reorder_chain(), force_nonfallthru_and_redirect(), instantiate_virtual_regs_in_insn(), ira_nullify_asm_goto(), make_edges(), mark_jump_label(), patch_jump_insn(), redirect_jump_1(), reorder_basic_blocks_simple(), and rtl_split_edge().
For special_memory_operand, it could be false for MEM_P (op), i.e. bcst_mem_operand in i386 backend. Extract and return real memory operand or op.
References GET_CODE, GET_RTX_FORMAT, GET_RTX_LENGTH, MEM_P, and XEXP.
Referenced by asm_operand_ok(), ira_setup_alts(), process_address_1(), record_operand_costs(), record_reg_classes(), satisfies_memory_constraint_p(), and valid_address_p().
|
extern |
Examine INSN, and compute the set of hard registers written by it. Store it in *PSET. Should only be called after reload. IMPLICIT is true if we should include registers that are fully-clobbered by calls. This should be used with caution, since it doesn't include partially-clobbered registers.
References CALL_P, CLEAR_HARD_REG_SET, function_abi::full_reg_clobbers(), insn_callee_abi(), note_stores(), NULL, record_hard_reg_sets(), record_hard_reg_sets(), REG_NOTE_KIND, REG_NOTES, and XEXP.
Referenced by collect_fn_hard_reg_usage().
|
extern |
Add all hard register in X to *PSET.
References add_to_hard_reg_set(), FOR_EACH_SUBRTX, GET_MODE, REG_P, and REGNO.
Referenced by record_hard_reg_uses().
|
extern |
A utility routine used here, in reload, and in try_split. The insns after PREV up to and including LAST are known to adjust the stack, with a final value of END_ARGS_SIZE. Iterate backward from LAST placing notes as appropriate. PREV may be NULL, indicating the entire insn sequence prior to LAST should be scanned. The set of allowed stack pointer modifications is small: (1) One or more auto-inc style memory references (aka pushes), (2) One or more addition/subtraction with the SP as destination, (3) A single move insn with the SP as destination, (4) A call_pop insn, (5) Noreturn call insns if !ACCUMULATE_OUTGOING_ARGS. Insns in the sequence that do not modify the SP are ignored, except for noreturn calls. The return value is the amount of adjustment that can be trivially verified, via immediate operand or auto-inc. If the adjustment cannot be trivially extracted, the return value is HOST_WIDE_INT_MIN.
References CALL_P, gcc_assert, gcc_checking_assert, gcc_unreachable, GET_CODE, GET_MODE, GET_MODE_SIZE(), HOST_WIDE_INT_MIN, i, mem_autoinc_base(), NULL, PATTERN(), REG_P, REGNO, rtx_equal_p(), rtx_to_poly_int64(), SCALAR_INT_MODE_P, SET, SET_DEST, SET_SRC, single_set(), stack_pointer_rtx, strip_offset(), XEXP, XVECEXP, and XVECLEN.
Referenced by fixup_args_size_notes(), and old_insns_match_p().
Check whether INSN is a single_set whose source is known to be equivalent to a constant. Return that constant if so, otherwise return null.
References avoid_constant_pool_reference(), CONSTANT_P, find_reg_equal_equiv_note(), NULL_RTX, SET_SRC, single_set(), and XEXP.
In recog.cc
Given an rtx *P, if it is a sum containing an integer constant term, return the location (type rtx *) of the pointer to that constant term. Otherwise, return a null pointer.
References CONSTANT_P, find_constant_term_loc(), GET_CODE, and XEXP.
Referenced by find_constant_term_loc(), offsettable_address_addr_space_p(), and plus_constant().
Look backward for first parameter to be loaded. Note that loads of all parameters will not necessarily be found if CSE has eliminated some of them (e.g., an argument to the outer function is passed down as a parameter). Do not skip BOUNDARY.
References CALL_INSN_FUNCTION_USAGE, CALL_P, CLEAR_HARD_REG_SET, gcc_assert, GET_CODE, INSN_P, LABEL_P, note_stores(), parms_set_data::nregs, parms_set(), PREV_INSN(), REG_P, REGNO, parms_set_data::regs, SET_HARD_REG_BIT, STATIC_CHAIN_REG_P, and XEXP.
Referenced by insert_insn_end_basic_block(), and sjlj_mark_call_sites().
Return a REG_EQUIV or REG_EQUAL note if insn has only a single set and has such a note.
References GET_CODE, INSN_P, multiple_sets(), NULL, PATTERN(), REG_NOTE_KIND, REG_NOTES, and XEXP.
Referenced by adjust_insn(), allocate_dynamic_stack_space(), bypass_block(), can_replace_by(), combine_instructions(), compute_ld_motion_mems(), count_reg_usage(), cprop_insn(), cprop_jump(), cselib_record_sets(), df_find_single_def_src(), find_constant_src(), gcse_emit_move_after(), get_biv_step_1(), hash_scan_set(), hash_scan_set(), init_alias_analysis(), iv_analyze_def(), local_cprop_pass(), maybe_strip_eq_note_for_split_iv(), merge_notes(), move2add_note_store(), noce_get_alt_condition(), noce_try_abs(), purge_dead_edges(), remove_reachable_equiv_notes(), remove_reg_equal_equiv_notes_for_regno(), replace_store_insn(), resolve_reg_notes(), split_insn(), store_killed_in_insn(), suitable_set_for_replacement(), try_replace_reg(), and update_rsp_from_reg_equal().
Return true if DATUM, or any overlap of DATUM, of kind CODE is found in the CALL_INSN_FUNCTION_USAGE information of INSN.
References CALL_INSN_FUNCTION_USAGE, CALL_P, END_REGNO(), find_regno_fusage(), gcc_assert, GET_CODE, i, REG_P, REGNO, rtx_equal_p(), and XEXP.
Referenced by can_combine_p(), decrease_live_ranges_number(), distribute_links(), distribute_notes(), no_conflict_move_test(), push_reload(), reg_set_p(), and reg_used_between_p().
Return the reg-note of kind KIND in insn INSN, if there is one. If DATUM is nonzero, look for one whose datum is DATUM.
References gcc_checking_assert, INSN_P, REG_NOTE_KIND, REG_NOTES, and XEXP.
Referenced by add_args_size_note(), add_insn_allocno_copies(), add_reg_br_prob_note(), add_store_equivs(), adjust_insn(), any_uncondjump_p(), attempt_change(), find_comparison_dom_walker::before_dom_children(), can_combine_p(), can_nonlocal_goto(), canonicalize_insn(), check_for_inc_dec(), check_for_inc_dec_1(), check_for_label_ref(), combine_and_move_insns(), combine_predictions_for_insn(), combine_stack_adjustments_for_block(), compute_outgoing_frequencies(), cond_exec_process_if_block(), control_flow_insn_p(), copy_reg_eh_region_note_backward(), copy_reg_eh_region_note_forward(), copyprop_hardreg_forward_1(), create_trace_edges(), cse_insn(), cselib_process_insn(), curr_insn_transform(), dead_or_predicable(), decrease_live_ranges_number(), deletable_insn_p(), delete_insn(), delete_unmarked_insns(), distribute_notes(), do_local_cprop(), do_output_reload(), dw2_fix_up_crossing_landing_pad(), emit_cmp_and_jump_insn_1(), emit_input_reload_insns(), emit_libcall_block_1(), expand_addsub_overflow(), expand_gimple_stmt(), expand_loc(), expand_mul_overflow(), expand_neg_overflow(), ext_dce_process_bb(), find_dummy_reload(), find_equiv_reg(), find_moveable_store(), find_reloads(), fixup_args_size_notes(), fixup_eh_region_note(), fixup_reorder_chain(), fixup_tail_calls(), force_move_args_size_note(), force_nonfallthru_and_redirect(), forward_propagate_and_simplify(), forward_propagate_into(), fp_setter_insn(), get_call_fndecl(), get_eh_region_and_lp_from_rtx(), hash_scan_set(), indirect_jump_optimize(), inherit_in_ebb(), init_alias_analysis(), init_eliminable_invariants(), init_elimination(), insn_stack_adjust_offset_pre_post(), ira_update_equiv_info_by_shuffle_insn(), label_is_jump_target_p(), latest_hazard_before(), lra_process_new_insns(), make_edges(), make_reg_eh_region_note_nothrow_nononlocal(), mark_jump_label_1(), mark_referenced_resources(), mark_set_resources(), match_reload(), maybe_merge_cfa_adjust(), maybe_move_args_size_note(), maybe_propagate_label_ref(), merge_if_block(), mostly_true_jump(), move_invariant_reg(), need_fake_edge_p(), no_equiv(), noce_process_if_block(), notice_args_size(), old_insns_match_p(), outgoing_edges_match(), patch_jump_insn(), peep2_attempt(), process_alt_operands(), process_bb_lives(), process_bb_node_lives(), purge_dead_edges(), record_reg_classes(), record_set_data(), record_store(), redirect_jump_2(), redundant_insn(), reg_scan_mark_refs(), regstat_bb_compute_ri(), reload(), reload_as_needed(), resolve_simple_move(), rest_of_clean_state(), rtl_verify_edges(), save_call_clobbered_regs(), scan_insn(), scan_one_insn(), scan_trace(), set_unique_reg_note(), setup_reg_equiv(), setup_save_areas(), single_set_2(), sjlj_fix_up_crossing_landing_pad(), split_all_insns(), subst_reloads(), try_back_substitute_reg(), try_combine(), try_eliminate_compare(), pair_fusion_bb_info::try_fuse_pair(), try_fwprop_subst_pattern(), try_head_merge_bb(), try_split(), rtx_properties::try_to_add_insn(), update_br_prob_note(), update_equiv_regs(), and validate_equiv_mem().
Return true if REGNO, or any overlap of REGNO, of kind CODE is found in the CALL_INSN_FUNCTION_USAGE information of INSN.
References CALL_INSN_FUNCTION_USAGE, CALL_P, END_REGNO(), GET_CODE, REG_P, REGNO, and XEXP.
Referenced by dead_or_set_regno_p(), distribute_notes(), and find_reg_fusage().
Return the reg-note of kind KIND in insn INSN which applies to register number REGNO, if any. Return 0 if there is no such reg-note. Note that the REGNO of this NOTE need not be REGNO if REGNO is a hard register; it might be the case that the note overlaps REGNO.
References END_REGNO(), INSN_P, REG_NOTE_KIND, REG_NOTES, REG_P, REGNO, and XEXP.
Referenced by build_def_use(), calculate_gen_cands(), calculate_loop_reg_pressure(), calculate_spill_cost(), dead_or_set_regno_p(), dead_pseudo_p(), decrease_live_ranges_number(), delete_dead_insn(), delete_output_reload(), delete_prior_computation(), distribute_notes(), do_remat(), emit_output_reload_insns(), emit_reload_insns(), fill_simple_delay_slots(), fill_slots_from_thread(), lra_delete_dead_insn(), match_reload(), move_deaths(), operand_to_remat(), process_address_1(), process_alt_operands(), record_operand_costs(), reg_dead_at_p(), remove_death(), set_bb_regs(), try_eliminate_compare(), try_merge(), and update_reg_unused_notes().
|
extern |
References NULL, valid_mode_changes, and valid_mode_changes_obstack.
Referenced by finish_costs().
In cprop.cc
Similar to get_condition, only the resulting condition must be valid at JUMP, instead of at EARLIEST. This differs from noce_get_condition in ifcvt.cc in that we prefer not to settle for the condition variable in the jump instruction being integral. We prefer to be able to record the value of a user variable, rather than the value of a temporary used in a condition. This could be solved by recording the value of *every* register scanned by canonicalize_condition, but this would require some code reorganization.
References get_condition(), and NULL.
Referenced by find_implicit_sets(), and reload_cse_move2add_invalidate().
|
extern |
Specify the usage characteristics of the register named NAME. It should be a fixed register if FIXED and a call-used register if CALL_USED.
References call_used_regs, decode_reg_name_and_count(), error(), fixed_regs, gcc_assert, gcc_unreachable, HARD_FRAME_POINTER_REGNUM, i, and warning().
Referenced by handle_common_deferred_options().
|
extern |
References ACCUMULATE_OUTGOING_ARGS, add_args_size_note(), CALL_P, find_args_size_adjust(), find_reg_note(), gcc_assert, get_args_size(), HOST_WIDE_INT_MIN, known_eq, last, NONDEBUG_INSN_P, NULL_RTX, PREV_INSN(), and STACK_GROWS_DOWNWARD.
Referenced by distribute_notes(), expand_builtin_apply(), expand_call(), expand_stack_restore(), peep2_attempt(), reload_as_needed(), and try_split().
|
extern |
Traverse *LOC looking for MEMs that have autoinc addresses. For each such autoinc operation found, call FN, passing it the innermost enclosing MEM, the operation itself, the RTX modified by the operation, two RTXs (the second may be NULL) that, once added, represent the value to be held by the modified RTX afterwards, and DATA. FN is to return 0 to continue the traversal or any other value to have it returned to the caller of for_each_inc_dec.
References for_each_inc_dec_find_inc_dec(), FOR_EACH_SUBRTX_VAR, GET_CODE, GET_RTX_CLASS, MEM_P, RTX_AUTOINC, and XEXP.
Referenced by check_for_inc_dec(), check_for_inc_dec_1(), cselib_record_sets(), stack_adjust_offset_pre_post(), and try_combine().
In varasm.cc
Given a constant rtx X, make (or find) a memory constant for its value and return a MEM rtx to refer to it in memory. IN_MODE is the mode of X.
References constant_descriptor_rtx::align, const_labelno, const_rtx_hash(), rtx_constant_pool::const_rtx_htab, constant_descriptor_rtx::constant, CONSTANT_POOL_ADDRESS_P, copy_rtx(), create_block_symbol(), crtl, hash_table< Descriptor, Lazy, Allocator >::find_slot_with_hash(), rtx_constant_pool::first, gen_const_mem(), get_block_for_section(), GET_CODE, GET_MODE_SIZE(), ggc_alloc(), ggc_strdup, constant_descriptor_rtx::hash, is_a(), LABEL_PRESERVE_P, constant_descriptor_rtx::labelno, rtx_constant_pool::last, constant_descriptor_rtx::mark, constant_descriptor_rtx::mem, constant_descriptor_rtx::mode, constant_descriptor_rtx::next, NULL, NULL_RTX, constant_descriptor_rtx::offset, rtx_constant_pool::offset, set_mem_align(), SET_SYMBOL_REF_CONSTANT, shared_constant_pool, constant_descriptor_rtx::sym, SYMBOL_FLAG_LOCAL, SYMBOL_REF_FLAGS, targetm, use_object_blocks_p(), word_mode, and XEXP.
Referenced by compress_float_constant(), cse_insn(), curr_insn_transform(), emit_move_insn(), emit_move_multi_word(), emit_push_insn(), expand_expr_real_1(), find_reloads(), find_reloads_address_part(), find_reloads_toplev(), init_eliminable_invariants(), move_block_to_reg(), plus_constant(), recog_for_combine(), replace_label(), setup_reg_equiv(), and simplify_operand_subreg().
|
extern |
lists.cc
This function will free up an entire list of EXPR_LIST nodes.
References free_list(), and unused_expr_list.
Referenced by free_reg_equiv(), and simplify_using_initial_values().
|
extern |
This function will free up an individual EXPR_LIST node.
References unused_expr_list, and XEXP.
Referenced by adjust_piece_list(), df_remove_dead_and_unused_notes(), df_remove_dead_eq_notes(), pair_fusion_bb_info::fuse_pair(), remove_free_EXPR_LIST_node(), simplify_using_initial_values(), and try_fwprop_subst_pattern().
|
extern |
This function will free up an entire list of INSN_LIST nodes.
References free_list(), and unused_insn_list.
|
extern |
This function will free up an individual INSN_LIST node.
References gcc_assert, GET_CODE, unused_insn_list, and XEXP.
Referenced by remove_free_INSN_LIST_elem(), and remove_free_INSN_LIST_node().
|
extern |
Free up register info memory.
Free up the space allocated by allocate_reg_info.
References free(), NULL, and reg_renumber.
Referenced by move_loop_invariants(), one_code_hoisting_pass(), and rest_of_handle_final().
In reload1.cc
Return true if the rtx X is invariant over the current function.
??? Actually, the places where we use this expect exactly what is tested here, and not everything that is function invariant. In particular, the frame pointer and arg pointer are special cased; pic_offset_table_rtx is not, and we must not spill these things to memory.
References arg_pointer_rtx, CONSTANT_P, frame_pointer_rtx, GET_CODE, and XEXP.
Referenced by df_find_single_def_src(), elimination_effects(), init_eliminable_invariants(), iv_analyze_op(), setup_reg_equiv(), and simple_rhs_p().
Return a sequence of insns to clobber lvalue X.
References emit_clobber(), end_sequence(), get_insns(), and start_sequence().
Referenced by eliminate_regs_in_insn(), and find_reloads().
Generate a memory referring to non-trapping constant memory.
References gen_rtx_MEM(), MEM_NOTRAP_P, and MEM_READONLY_P.
Referenced by assemble_trampoline_template(), build_constant_desc(), do_tablejump(), and force_const_mem().
Generate a MEM referring to fixed portions of the frame, e.g., register save areas.
References gen_rtx_MEM(), get_frame_alias_set(), MEM_NOTRAP_P, and set_mem_alias_set().
Referenced by expand_builtin_return_addr().
|
extern |
References gen_rtx_REG(), and hard_reg_clobbers.
Referenced by emit_insn_if_valid_for_reload().
In emit-rtl.cc
References adjust_address, gcc_assert, GET_MODE, GET_MODE_SIZE(), GET_MODE_UNIT_SIZE, known_eq, known_le, MEM_P, simplify_gen_subreg(), and subreg_highpart_offset().
Referenced by expand_doubleword_clz_ctz_ffs(), expand_expr_real_2(), extract_high_half(), and gen_highpart_mode().
Like gen_highpart, but accept mode of EXP operand in case EXP can be VOIDmode constant.
References exp(), gcc_assert, gen_highpart(), GET_MODE, simplify_gen_subreg(), and subreg_highpart_offset().
|
extern |
Return a newly created CODE_LABEL rtx with a unique label number.
References as_a(), label_num, NULL, and NULL_RTX.
Referenced by allocate_dynamic_stack_space(), anti_adjust_stack_and_probe(), anti_adjust_stack_and_probe_stack_clash(), asan_clear_shadow(), asan_emit_stack_protection(), block_label(), compare_by_pieces(), do_compare_rtx_and_jump(), do_jump(), do_jump_1(), do_jump_by_parts_equality_rtx(), do_jump_by_parts_greater_rtx(), do_jump_by_parts_zero_rtx(), dw2_build_landing_pads(), dw2_fix_up_crossing_landing_pad(), emit_block_cmp_via_loop(), emit_block_move_via_loop(), emit_block_move_via_oriented_loop(), emit_case_dispatch_table(), emit_stack_clash_protection_probe_loop_start(), emit_store_flag_force(), expand_abs(), expand_addsub_overflow(), expand_arith_overflow_result_store(), expand_asm_stmt(), expand_builtin_atomic_compare_exchange(), expand_builtin_eh_return(), expand_builtin_strub_leave(), expand_builtin_strub_update(), expand_compare_and_swap_loop(), expand_copysign_absneg(), expand_divmod(), expand_doubleword_clz_ctz_ffs(), expand_doubleword_shift(), expand_eh_return(), expand_expr_real_1(), expand_expr_real_2(), expand_ffs(), expand_fix(), expand_float(), expand_function_start(), expand_mul_overflow(), expand_naked_return(), expand_neg_overflow(), expand_sdiv_pow2(), expand_sjlj_dispatch_table(), expand_smod_pow2(), expand_vector_ubsan_overflow(), find_end_label(), fix_crossing_conditional_branches(), get_label_before(), get_uncond_jump_length(), inline_string_cmp(), label_rtx(), label_rtx_for_bb(), prepare_call_address(), probe_stack_range(), sjlj_build_landing_pads(), sjlj_emit_dispatch_table(), sjlj_fix_up_crossing_landing_pad(), stack_protect_epilogue(), store_constructor(), store_expr(), and try_store_by_multiple_pieces().
Return a value representing some low-order bits of X, where the number of low-order bits is given by MODE. Note that no conversion is done between floating-point and fixed-point values, rather, the bit representation is returned. This function handles the cases in common between gen_lowpart, below, and two variants in cse.cc and combine.cc. These are the cases that can be safely handled at all points in the compilation. If this is not a case we can handle, return 0.
References CONST_DOUBLE_AS_FLOAT_P, CONST_INT_P, CONST_POLY_INT_P, CONST_SCALAR_INT_P, gcc_assert, gen_lowpart_common(), GET_CODE, GET_MODE, GET_MODE_SIZE(), HOST_BITS_PER_DOUBLE_INT, HOST_BITS_PER_WIDE_INT, int_mode_for_size(), is_a(), known_le, lowpart_subreg(), maybe_gt, REG_P, REGMODE_NATURAL_SIZE, opt_mode< T >::require(), SCALAR_FLOAT_MODE_P, and XEXP.
Referenced by combine_simplify_rtx(), do_output_reload(), expand_expr_real_1(), extract_low_bits(), force_to_mode(), gen_lowpart_common(), gen_lowpart_for_combine(), gen_lowpart_general(), gen_lowpart_if_possible(), move2add_use_add2_insn(), store_split_bit_field(), and strip_paradoxical_subreg().
In cse.cc
Assuming that X is an rtx (e.g., MEM, REG or SUBREG) for a fixed-point number, return an rtx (MEM, SUBREG, or CONST_INT) that refers to the least-significant part of X. MODE specifies how big a part of X to return. If the requested operation cannot be done, 0 is returned. This is similar to gen_lowpart_general.
References adjust_address_nv, byte_lowpart_offset(), gen_lowpart_common(), gen_lowpart_SUBREG(), GET_MODE, MEM_ADDR_SPACE, MEM_P, memory_address_addr_space_p(), subreg_lowpart_offset(), SUBREG_P, validate_subreg(), and XEXP.
Referenced by extract_bit_field_using_extv(), gen_lowpart_for_debug(), and store_bit_field_using_insv().
Generate a SUBREG representing the least-significant part of REG if MODE is smaller than mode of REG, otherwise paradoxical SUBREG.
References gen_rtx_SUBREG(), GET_MODE, and subreg_lowpart_offset().
Referenced by assign_parm_setup_block(), assign_parms_unsplit_complex(), change_zero_ext(), convert_wider_int_to_float(), emit_input_reload_insns(), emit_spill_move(), expand_call(), expand_expr_real_1(), extract_bit_field_using_extv(), gen_lowpart_if_possible(), match_reload(), precompute_arguments(), reverse_op(), simplify_operand_subreg(), and store_bit_field_using_insv().
|
extern |
Generate a new REG rtx. Make sure ORIGINAL_REGNO is set properly, and don't attempt to share with the various global pieces of rtl (such as frame_pointer_rtx).
References init_raw_REG(), MEM_STAT_INFO, and rtx_alloc().
Referenced by addr_for_mem_ref(), addr_offset_valid_p(), adjust_insn(), assign_spill_hard_regs(), can_widen_mult_without_libcall(), tree_switch_conversion::bit_test_cluster::emit(), expand_debug_parm_decl(), expand_expr_real_1(), expand_mult(), gen_reg_rtx(), gen_rtx_REG(), gen_rtx_REG_offset(), get_address_cost_ainc(), init_emit_regs(), init_expmed(), init_expr_target(), init_set_costs(), lshift_cheap_p(), make_decl_rtl(), maybe_mode_change(), mult_by_coeff_cost(), multiplier_allowed_in_address_p(), optimize_range_tests_to_bit_test(), prepare_decl_rtl(), produce_memory_decl_rtl(), regrename_do_replace(), try_combine(), and vt_add_function_parameter().
|
extern |
Generate a REG rtx for a new pseudo register of mode MODE. This pseudo is assigned the next sequential register number.
References can_create_pseudo_p, crtl, emit(), gcc_assert, gen_raw_REG(), gen_reg_rtx(), generating_concat_p, GET_MODE_ALIGNMENT, GET_MODE_CLASS, GET_MODE_INNER, min_align(), MINIMUM_ALIGNMENT, NULL, reg_rtx_no, regno_reg_rtx, and SUPPORTS_STACK_ALIGNMENT.
Referenced by allocate_basic_variable(), allocate_dynamic_stack_space(), asan_emit_stack_protection(), assign_parm_remove_parallels(), assign_parm_setup_block(), assign_parm_setup_reg(), assign_parm_setup_stack(), assign_temp(), avoid_likely_spilled_reg(), builtin_memset_gen_str(), builtin_memset_read_str(), calculate_table_based_CRC(), compare_by_pieces(), compress_float_constant(), convert_mode_scalar(), convert_modes(), copy_blkmode_to_reg(), copy_to_mode_reg(), copy_to_reg(), copy_to_suggested_reg(), do_compare_and_jump(), do_jump_by_parts_zero_rtx(), do_store_flag(), do_tablejump(), doloop_optimize(), emit_block_cmp_via_loop(), emit_block_move_via_loop(), emit_conditional_add(), emit_conditional_move(), emit_conditional_move_1(), emit_conditional_neg_or_complement(), emit_cstore(), emit_group_load_1(), emit_group_store(), emit_libcall_block_1(), emit_library_call_value_1(), emit_push_insn(), emit_stack_save(), emit_store_flag_1(), emit_store_flag_force(), entry_register(), expand_abs(), expand_absneg_bit(), expand_addsub_overflow(), expand_asm_stmt(), expand_atomic_compare_and_swap(), expand_atomic_fetch_op(), expand_atomic_load(), expand_atomic_test_and_set(), expand_binop(), expand_builtin(), expand_builtin_apply(), expand_builtin_cexpi(), expand_builtin_crc_table_based(), expand_builtin_eh_copy_values(), expand_builtin_eh_filter(), expand_builtin_eh_pointer(), expand_builtin_feclear_feraise_except(), expand_builtin_fegetround(), expand_builtin_goacc_parlevel_id_size(), expand_builtin_int_roundingfn(), expand_builtin_int_roundingfn_2(), expand_builtin_issignaling(), expand_builtin_mathfn_3(), expand_builtin_mathfn_ternary(), expand_builtin_powi(), expand_builtin_signbit(), expand_builtin_sincos(), expand_builtin_stpcpy_1(), expand_builtin_strlen(), expand_builtin_thread_pointer(), expand_call(), expand_ccmp_expr(), expand_compare_and_swap_loop(), expand_copysign_absneg(), expand_copysign_bit(), expand_crc_optab_fn(), expand_crc_table_based(), expand_DIVMOD(), expand_divmod(), expand_doubleword_bswap(), expand_doubleword_clz_ctz_ffs(), expand_doubleword_mod(), expand_doubleword_popcount(), expand_doubleword_shift_condmove(), expand_expr_real_1(), expand_expr_real_2(), expand_fix(), expand_float(), expand_function_end(), expand_function_start(), expand_gimple_basic_block(), expand_GOMP_SIMT_ENTER_ALLOC(), expand_ifn_atomic_bit_test_and(), expand_ifn_atomic_op_fetch_cmp_0(), expand_mul_overflow(), expand_mult_highpart(), expand_neg_overflow(), expand_one_error_var(), expand_one_register_var(), expand_one_ssa_partition(), expand_parity(), expand_reversed_crc_table_based(), expand_sdiv_pow2(), expand_sfix_optab(), expand_single_bit_test(), expand_smod_pow2(), expand_speculation_safe_value(), expand_stack_vars(), expand_twoval_binop(), expand_twoval_unop(), expand_UADDC(), expand_ubsan_result_store(), expand_unop(), expand_used_vars(), expand_var_during_unrolling(), expand_vec_perm_const(), expand_vec_perm_var(), expand_vec_set_optab_fn(), expand_vector_broadcast(), expand_vector_ubsan_overflow(), extract_bit_field_1(), extract_bit_field_using_extv(), extract_integral_bit_field(), find_shift_sequence(), fix_crossing_unconditional_branches(), force_not_mem(), force_operand(), force_reg(), gen_group_rtx(), gen_reg_rtx(), gen_reg_rtx_and_attrs(), gen_reg_rtx_offset(), get_dynamic_stack_base(), get_hard_reg_initial_val(), address_reload_context::get_reload_reg(), get_scratch_reg(), get_temp_reg(), inline_string_cmp(), ira_create_new_reg(), load_register_parameters(), lra(), lra_create_new_reg_with_unique_value(), make_more_copies(), make_safe_from(), maybe_emit_compare_and_swap_exchange_loop(), maybe_emit_group_store(), maybe_legitimize_operand(), maybe_optimize_fetch_op(), noce_convert_multiple_sets_1(), noce_emit_cmove(), noce_process_if_block(), noce_try_addcc(), noce_try_cmove_arith(), noce_try_cond_zero_arith(), noce_try_inverse_constants(), noce_try_sign_mask(), noce_try_store_flag_constants(), noce_try_store_flag_mask(), prepare_cmp_insn(), prepare_float_lib_cmp(), resolve_simple_move(), round_trampoline_addr(), split_iv(), store_bit_field_using_insv(), store_constructor(), store_field(), store_integral_bit_field(), store_one_arg(), store_unaligned_arguments_into_pseudos(), unroll_loop_runtime_iterations(), widen_bswap(), widen_leading(), and widen_operand().
Generate a REG rtx for a new pseudo register, copying the mode and attributes from X.
References gen_reg_rtx(), GET_MODE, and set_reg_attrs_from_value().
Referenced by build_store_vectors(), delete_store(), hoist_code(), move_invariant_reg(), and pre_delete().
Generate a new pseudo-register with the same attributes as REG, but with OFFSET added to the REG_OFFSET.
References gen_reg_rtx(), and update_reg_offset().
Referenced by decompose_register().
In emit-rtl.cc
References rtvec_def::elem, i, NULL_RTVEC, and rtvec_alloc().
Referenced by copy_rtx_if_shared_1(), eliminate_regs_1(), emit_case_dispatch_table(), emit_note_insn_var_location(), gen_group_rtx(), lra_eliminate_regs_1(), and result_vector().
References rtvec_def::elem, i, NULL_RTVEC, and rtvec_alloc().
|
extern |
References const_int_htab, const_int_rtx, const_true_rtx, MAX_SAVED_CONST_INT, and STORE_FLAG_VALUE.
Referenced by anti_adjust_stack_and_probe_stack_clash(), function_reader::consolidate_singletons(), expand_crc_optab_fn(), and init_emit_once().
Generate a vector like gen_rtx_raw_CONST_VEC, but use the zero vector when all elements are zero, and the one vector when all elements are one.
References rtx_vector_builder::build(), gcc_assert, gen_const_vec_duplicate(), GET_MODE_NUNITS(), GET_NUM_ELEM, i, known_eq, rtvec_all_equal_p(), and RTVEC_ELT.
Referenced by function_reader::consolidate_singletons(), simplify_context::simplify_binary_operation_1(), simplify_const_binary_operation(), and simplify_context::simplify_ternary_operation().
|
extern |
There are some RTL codes that require special attention; the generation functions included above do the raw handling. If you add to this list, modify special_rtx in gengenrtl.cc as well.
There are some RTL codes that require special attention; the generation functions do the raw handling. If you add to this list, modify special_rtx in gengenrtl.cc as well.
References as_a().
Referenced by alloc_EXPR_LIST(), assemble_external_libcall(), clobber_reg_mode(), emit_call_1(), emit_library_call_value_1(), emit_note_insn_var_location(), expand_call(), gen_group_rtx(), prepare_call_arguments(), use_reg_mode(), and vt_add_function_parameter().
|
extern |
References as_a(), and next_insn().
Referenced by init_caller_save(), init_emit_once(), setup_prohibited_mode_move_regs(), and try_combine().
|
extern |
References as_a().
Referenced by add_next_usage_insn(), add_store_equivs(), alloc_INSN_LIST(), combine_and_move_insns(), emit_move_list(), expand_builtin(), expand_label(), ira_update_equiv_info_by_shuffle_insn(), no_equiv(), and update_equiv_regs().
References MEM_ATTRS.
Referenced by asan_emit_stack_protection(), assemble_asm(), assign_parm_find_stack_rtl(), assign_parm_setup_block(), assign_parm_setup_reg(), assign_parms(), assign_stack_local_1(), assign_stack_temp_for_type(), calculate_table_based_CRC(), change_address(), change_address_1(), compute_argument_addresses(), cselib_init(), decode_addr_const(), default_static_chain(), emit_call_1(), emit_library_call_value_1(), emit_move_change_mode(), emit_move_complex_push(), emit_push_insn(), emit_stack_probe(), emit_stack_restore(), expand_asm_loc(), expand_asm_memory_blockage(), expand_asm_reg_clobber_mem_blockage(), expand_asm_stmt(), expand_assignment(), expand_builtin_apply(), expand_builtin_atomic_compare_exchange(), expand_builtin_init_descriptor(), expand_builtin_init_dwarf_reg_sizes(), expand_builtin_init_trampoline(), expand_builtin_longjmp(), expand_builtin_nonlocal_goto(), expand_builtin_return(), expand_builtin_setjmp_setup(), expand_builtin_strlen(), expand_builtin_strub_leave(), expand_builtin_update_setjmp_buf(), expand_builtin_va_copy(), expand_call(), expand_debug_expr(), expand_expr_real_1(), expand_function_start(), expand_one_error_var(), expand_one_stack_var_at(), expand_SET_EDOM(), gen_const_mem(), gen_frame_mem(), gen_tmp_stack_mem(), gen_tombstone(), get_builtin_sync_mem(), get_group_info(), get_memory_rtx(), get_spill_slot_decl(), init_caller_save(), init_expr_target(), init_fake_stack_mems(), init_reload(), init_set_costs(), initialize_argument_information(), make_decl_rtl(), noce_try_cmove_arith(), prepare_call_address(), prepare_call_arguments(), produce_memory_decl_rtl(), replace_pseudos_in(), rtl_for_decl_init(), rtl_for_decl_location(), scan_insn(), store_one_arg(), and vt_add_function_parameter().
|
extern |
References arg_pointer_rtx, cfun, fixed_regs, frame_pointer_needed, frame_pointer_rtx, gen_raw_REG(), HARD_FRAME_POINTER_IS_FRAME_POINTER, HARD_FRAME_POINTER_REGNUM, hard_frame_pointer_rtx, INVALID_REGNUM, lra_in_progress, PIC_OFFSET_TABLE_REGNUM, pic_offset_table_rtx, reg_raw_mode, regno_reg_rtx, reload_completed, reload_in_progress, return_address_pointer_rtx, and stack_pointer_rtx.
Referenced by assign_parm_setup_block(), can_assign_to_reg_without_clobbers_p(), can_eliminate_compare(), can_reload_into(), canon_reg(), canonicalize_comparison(), change_zero_ext(), choose_reload_regs(), combine_reaching_defs(), combine_reloads(), combine_set_extension(), compute_can_copy(), cse_cc_succs(), cse_condition_code_reg(), cse_insn(), default_static_chain(), default_zero_call_used_regs(), do_output_reload(), do_reload(), emit_library_call_value_1(), emit_push_insn(), expand_asm_stmt(), expand_builtin_apply(), expand_builtin_apply_args_1(), expand_builtin_init_dwarf_reg_sizes(), expand_builtin_return(), expand_call(), expand_dw2_landing_pad_for_region(), expand_function_end(), find_and_remove_re(), find_dummy_reload(), find_reloads_address_1(), gen_hard_reg_clobber(), gen_reload(), gen_reload_chain_without_interm_reg_p(), get_hard_reg_initial_val(), init_caller_save(), init_elim_table(), init_elim_table(), init_emit_regs(), init_expr_target(), init_lower_subreg(), init_reload(), insert_restore(), insert_save(), load_register_parameters(), maybe_memory_address_addr_space_p(), maybe_select_cc_mode(), move2add_use_add3_insn(), move_block_from_reg(), move_block_to_reg(), peep2_find_free_register(), prefer_and_bit_test(), push_reload(), reload_adjust_reg_for_mode(), reload_combine_recognize_pattern(), reload_cse_regs_1(), reload_cse_simplify_operands(), reload_cse_simplify_set(), replace_reg_with_saved_mem(), result_vector(), set_reload_reg(), setup_prohibited_mode_move_regs(), simplify_set(), split_reg(), transform_ifelse(), try_combine(), try_eliminate_compare(), vt_add_function_parameter(), and zcur_select_mode_rtx().
|
extern |
Generate a register with same attributes as REG, but with OFFSET added to the REG_OFFSET.
References gen_raw_REG(), and update_reg_offset().
Referenced by alter_subreg(), expand_debug_parm_decl(), simplify_context::simplify_subreg(), var_lowpart(), and vt_add_function_parameter().
|
extern |
References gcc_assert, GET_MODE, and validate_subreg().
Referenced by curr_insn_transform(), eliminate_regs_1(), equiv_constant(), expand_debug_expr(), extract_low_bits(), find_reloads(), gen_lowpart_for_combine(), gen_lowpart_SUBREG(), lra_substitute_pseudo(), make_extraction(), noce_emit_cmove(), simplify_context::simplify_gen_subreg(), simplify_context::simplify_subreg(), store_bit_field_using_insv(), and store_integral_bit_field().
Generate a MEM referring to a temporary use of the stack, not part of the fixed stack frame. For example, something which is pushed by a target splitter.
References cfun, gen_rtx_MEM(), get_frame_alias_set(), MEM_NOTRAP_P, and set_mem_alias_set().
Return a sequence of insns to use rvalue X.
References emit_use(), end_sequence(), get_insns(), and start_sequence().
Referenced by rtl_flow_call_edges_add().
Convert the address X into something we can use. This is done by returning it unchanged unless it is a VALUE or VALUE +/- constant; for VALUE we call cselib to get a more useful rtx.
References canonical_cselib_val(), CONST_SCALAR_INT_P, CONSTANT_P, cselib_have_permanent_equivalences(), CSELIB_VAL_PTR, get_addr(), GET_CODE, GET_MODE, elt_loc_list::loc, cselib_val::locs, MEM_P, elt_loc_list::next, plus_constant(), poly_int_rtx_p(), refs_newer_value_p(), REG_P, simplify_gen_binary(), cselib_val::val_rtx, and XEXP.
Referenced by canon_list_insert(), check_mem_read_rtx(), compute_transp(), cselib_invalidate_mem(), get_addr(), get_addr_from_global_cache(), invalidate(), may_alias_p(), memrefs_conflict_p(), true_dependence_1(), and write_dependence_p().
|
extern |
Return the mode of MEM's address.
References as_a(), gcc_assert, GET_MODE, MEM_ADDR_SPACE, MEM_P, targetm, and XEXP.
Referenced by add_stores(), add_uses(), adjust_address_1(), canon_address(), check_mem_read_rtx(), cselib_record_sets(), cst_pool_loc_descr(), pieces_addr::decide_autoinc(), dw_loc_list_1(), dwarf2out_frame_debug_cfa_expression(), emit_block_cmp_via_loop(), emit_block_move_via_loop(), expand_assignment(), expand_expr_real_1(), find_reloads(), find_split_point(), loc_descriptor(), loc_list_from_tree_1(), maybe_legitimize_operand_same_code(), mem_loc_descriptor(), noce_try_cmove_arith(), offset_address(), record_store(), replace_expr_with_values(), rtl_for_decl_location(), store_expr(), and use_type().
|
extern |
Return the argument size in REG_ARGS_SIZE note X.
References gcc_checking_assert, REG_NOTE_KIND, rtx_to_poly_int64(), and XEXP.
Referenced by distribute_notes(), fixup_args_size_notes(), notice_args_size(), peep2_attempt(), reload_as_needed(), and try_split().
Get the declaration of the function called by INSN.
References find_reg_note(), NULL_RTX, NULL_TREE, SYMBOL_REF_DECL, and XEXP.
Referenced by insn_callee_abi(), and self_recursive_call_p().
Return the CALL in X if there is one.
References GET_CODE, MEM_P, NULL_RTX, PATTERN(), SET, SET_SRC, XEXP, and XVECEXP.
Referenced by emit_call_1(), old_insns_match_p(), prepare_call_arguments(), and scan_insn().
|
extern |
Given a JUMP_INSN, return a canonical description of the test being made.
Given a jump insn JUMP, return the condition that will cause it to branch to its JUMP_LABEL. If the condition cannot be understood, or is an inequality floating-point comparison which needs to be reversed, 0 will be returned. If EARLIEST is nonzero, it is a pointer to a place where the earliest insn used in locating the condition was found. If a replacement test of the condition is desired, it should be placed in front of that insn and we will be sure that the inputs are still valid. If EARLIEST is null, the returned condition will be valid at INSN. If ALLOW_CC_MODE is nonzero, allow the condition returned to be a compare CC mode register. VALID_AT_INSN_P is the same as for canonicalize_condition.
References any_condjump_p(), canonicalize_condition(), GET_CODE, JUMP_LABEL, JUMP_P, label_ref_label(), NULL_RTX, pc_set(), SET_SRC, and XEXP.
Referenced by bb_estimate_probability_locally(), check_simple_exit(), fis_get_condition(), simplify_using_initial_values(), and try_head_merge_bb().
|
extern |
Return first label number used in this function (if any were used).
References first_label_num.
Referenced by compute_alignments(), init_eliminable_invariants(), and reload_combine().
|
extern |
Return the first nonnote insn emitted in current sequence or current function. This routine looks inside SEQUENCEs.
References as_a(), GET_CODE, get_insns(), next_insn(), NONJUMP_INSN_P, NOTE_P, and PATTERN().
|
extern |
Fill in the structure C with information about both speed and size rtx costs for X, which is operand OPNO in an expression with code OUTER.
References rtx_cost(), full_rtx_costs::size, and full_rtx_costs::speed.
Referenced by get_full_set_rtx_cost(), and get_full_set_src_cost().
|
inline |
Like set_rtx_cost, but return both the speed and size costs in C.
References get_full_rtx_cost().
Referenced by move2add_use_add2_insn(), move2add_use_add3_insn(), and reload_cse_move2add().
|
inline |
Like set_src_cost, but return both the speed and size costs in C.
References get_full_rtx_cost(), and SET.
Referenced by reload_cse_move2add().
|
extern |
Return the "index code" of INFO, in the form required by ok_for_base_p_1.
References GET_CODE.
Referenced by base_plus_disp_to_reg(), base_to_reg(), and process_address_1().
|
extern |
Return the scale applied to *INFO->INDEX_TERM, or 0 if the index is more complicated than that.
References CONST_INT_P, GET_CODE, HOST_WIDE_INT_1, INTVAL, and XEXP.
Referenced by equiv_address_substitution(), index_part_to_reg(), and process_address_1().
|
extern |
References insn_name_ptr, insn_name_ptr_size, and NULL.
Referenced by curr_insn_transform(), main(), print_acceptance(), rtx_writer::print_rtx_operand_code_i(), record_reg_classes(), and scan_one_insn().
|
extern |
Return the value of the integer term in X, if one is apparent; otherwise return 0. Only obvious integer terms are detected. This is used in cse.cc with the `related_value' field.
References CONST_INT_P, GET_CODE, INTVAL, and XEXP.
Referenced by use_related_value().
|
extern |
Emission of insns (adding them to the doubly-linked list).
Return the last insn emitted, even if it is in a sequence now pushed.
References get_current_sequence(), sequence_stack::last, and sequence_stack::next.
|
extern |
Return the last nonnote insn emitted in current sequence or current function. This routine looks inside SEQUENCEs.
References dyn_cast(), get_last_insn(), NONJUMP_INSN_P, NOTE_P, PATTERN(), and previous_insn().
|
extern |
Return the number of actual (non-debug) insns emitted in this function.
References cur_debug_insn_uid, and cur_insn_uid.
Referenced by alloc_hash_table(), and alloc_hash_table().
Return the attributes of a MEM rtx.
References GET_MODE, MEM_ATTRS, and mode_mem_attrs.
Referenced by adjust_address_1(), change_address(), clear_mem_offset(), clear_mem_size(), offset_address(), rtx_interchangeable_p(), set_mem_addr_space(), set_mem_alias_set(), set_mem_align(), set_mem_attrs_for_spill(), set_mem_expr(), set_mem_offset(), set_mem_size(), and widen_memory_access().
|
extern |
In stor-layout.cc.
Gets minimal and maximal values for MODE (signed or unsigned depending on SIGN). The returned constants are made to be usable in TARGET_MODE.
References gcc_assert, gen_int_mode(), GET_MODE_PRECISION(), HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT_1U, and STORE_FLAG_VALUE.
Referenced by determine_max_iter(), iv_number_of_iterations(), shorten_into_mode(), and simplify_const_relational_operation().
Given a constant pool SYMBOL_REF, return the corresponding constant.
References SYMBOL_REF_CONSTANT.
Referenced by avoid_constant_pool_reference(), get_some_local_dynamic_name(), mark_jump_label_1(), noce_try_abs(), plus_constant(), replace_label(), and rtx_referenced_p().
Given a constant pool SYMBOL_REF, return the corresponding constant and whether it has been output or not.
References constant_descriptor_rtx::constant, constant_descriptor_rtx::mark, and SYMBOL_REF_CONSTANT.
Referenced by const_ok_for_output_1().
|
extern |
Similar, return the mode.
References SYMBOL_REF_CONSTANT.
Referenced by avoid_constant_pool_reference(), offset_within_block_p(), plus_constant(), and replace_label().
|
extern |
Parse inline assembly string STRING and determine which operands are referenced by % markers. For the first NOPERANDS operands, set USED[I] to true if operand I is referenced. This is intended to distinguish barrier-like asms such as: asm ("" : "=m" (...)); from real references such as: asm ("sw\t$0, %0" : "=m" (...));
|
extern |
Return REG_BASE_VALUE for REGNO. Selective scheduler uses this to avoid using hard registers with non-null REG_BASE_VALUE for renaming.
References reg_base_value.
|
extern |
Similarly for reg_known_equiv_p.
References bitmap_bit_p, reg_known_equiv_p, reg_known_value, and vec_safe_length().
|
extern |
If a value is known for REGNO, return it.
References NULL, reg_known_value, and vec_safe_length().
Referenced by canon_rtx(), and init_alias_analysis().
If X is a constant, return the value sans apparent integer term; otherwise return 0. Only obvious integer terms are detected.
References CONST_INT_P, GET_CODE, and XEXP.
Referenced by insert_with_costs(), and use_related_value().
|
extern |
Return the number of bytes to "protect" on the stack for -fstack-check. "protect" in the context of -fstack-check means how many bytes we need to always ensure are available on the stack; as a consequence, this is also how many bytes are first skipped when probing the stack. On some targets we want to reuse the -fstack-check prologue support to give a degree of protection against stack clashing style attacks. In that scenario we do not want to skip bytes before probing as that would render the stack clash protections useless. So we never use STACK_CHECK_PROTECT directly. Instead we indirectly use it through this helper, which allows to provide different values for -fstack-check and -fstack-clash-protection.
Referenced by allocate_dynamic_stack_space().
|
extern |
Mark register number I as global.
References call_used_regs, DECL_SOURCE_LOCATION, error(), error_at(), fixed_reg_set, fixed_regs, function_abis, global_reg_set, global_regs, global_regs_decl, i, IN_RANGE, inform(), no_global_reg_vars, NUM_ABI_IDS, regs_invalidated_by_call, reinit_regs(), SET_HARD_REG_BIT, and warning_at().
Referenced by make_decl_rtl().
|
extern |
gtype-desc.cc.
|
extern |
|
extern |
|
extern |
Hash an rtx. We are careful to make sure the value is never negative. Equivalent registers hash identically. MODE is used in hashing for CONST_INTs only; otherwise the mode of X is used. Store 1 in DO_NOT_RECORD_P if any subexpression is volatile. If HASH_ARG_IN_MEMORY_P is not NULL, store 1 in it if X contains a MEM rtx which does not have the MEM_READONLY_P flag set. Note that cse_insn knows that the hash code of a MEM expression is just (int) MEM plus the hash code of the address. Call CB on each rtx if CB is not NULL. When the callback returns true, we continue with the new rtx.
References inchash::hash::add_int(), inchash::hash::add_wide_int(), arg_pointer_rtx, ASM_OPERANDS_INPUT, ASM_OPERANDS_INPUT_CONSTRAINT, ASM_OPERANDS_INPUT_LENGTH, ASM_OPERANDS_OUTPUT_CONSTRAINT, ASM_OPERANDS_OUTPUT_IDX, ASM_OPERANDS_TEMPLATE, CODE_LABEL_NUMBER, CONST_DOUBLE_HIGH, CONST_DOUBLE_LOW, CONST_DOUBLE_REAL_VALUE, CONST_FIXED_VALUE, CONST_POLY_INT_COEFFS, CONST_VECTOR_ENCODED_ELT, const_vector_encoded_nelts(), CONST_WIDE_INT_ELT, CONST_WIDE_INT_NUNITS, inchash::hash::end(), fixed_hash(), fixed_regs, frame_pointer_rtx, gcc_unreachable, GET_CODE, GET_MODE, GET_MODE_CLASS, GET_RTX_FORMAT, GET_RTX_LENGTH, global_regs, hard_frame_pointer_rtx, hash_rtx(), hash_rtx_string(), i, INTVAL, label_ref_label(), MEM_P, MEM_READONLY_P, MEM_VOLATILE_P, table_elt::mode, NULL, NUM_POLY_INT_COEFFS, pic_offset_table_rtx, real_hash(), REG_P, REG_QTY, REGNO, reload_completed, stack_pointer_rtx, SUBREG_BYTE, SUBREG_REG, TARGET_SUPPORTS_WIDE_INT, targetm, XEXP, XINT, XLOC, XSTR, XVECEXP, and XVECLEN.
Referenced by canon_hash(), invariant_group_base_hasher::hash(), pre_ldst_expr_hasher::hash(), st_expr_hasher::hash(), hash_expr(), hash_expr(), hash_invariant_expr_1(), hash_rtx(), ldst_entry(), safe_hash(), st_expr_entry(), and temp_slot_address_compute_hash().
|
extern |
Return a CONST_DOUBLE or CONST_INT for a value specified as a pair of ints: I0 is the low-order word and I1 is the high-order word. For values that are larger than HOST_BITS_PER_DOUBLE_INT, the implied upper bits are copies of the high bit of i1. The value itself is neither signed nor unsigned. Do not use this routine for non-integer modes; convert to REAL_VALUE_TYPE and use const_double_from_real_value.
References CONST_DOUBLE_FORMAT, CONST_DOUBLE_HIGH, CONST_DOUBLE_LOW, GEN_INT, gen_int_mode(), GET_MODE_BITSIZE(), HOST_BITS_PER_WIDE_INT, i, i1, is_a(), lookup_const_double(), PUT_MODE(), rtx_alloc(), and XWINT.
Referenced by immed_wide_int_const_1().
|
extern |
Return an rtx representation of C in mode MODE.
References inchash::hash::add_int(), inchash::hash::add_wide_int(), as_a(), poly_int< N, C >::coeffs, CONST_POLY_INT_COEFFS, const_poly_int_htab, inchash::hash::end(), poly_int< NUM_POLY_INT_COEFFS, wide_int >::from(), gcc_assert, GET_MODE_PRECISION(), wi::storage_ref::get_precision(), i, immed_wide_int_const_1(), poly_int< N, C >::is_constant(), NUM_POLY_INT_COEFFS, PUT_MODE(), rtx_alloc_v, and SIGNED.
Referenced by addr_for_mem_ref(), rtx_vector_builder::apply_step(), canon_condition(), canonicalize_comparison(), change_zero_ext(), clz_loc_descriptor(), const_vector_elt(), const_vector_from_tree(), convert_modes(), tree_switch_conversion::bit_test_cluster::emit(), expand_absneg_bit(), expand_addsub_overflow(), expand_arith_overflow_result_store(), expand_builtin_signbit(), expand_copysign_absneg(), expand_copysign_bit(), expand_debug_expr(), expand_doubleword_divmod(), expand_doubleword_mod(), expand_doubleword_shift(), expand_expr_real_1(), expand_expr_real_2(), expand_mul_overflow(), expand_mult_const(), expand_smod_pow2(), expand_subword_shift(), expand_ubsan_result_store(), gen_int_mode(), internal_check_ptrs_fn_supported_p(), lshift_value(), mask_rtx(), native_decode_rtx(), neg_poly_int_rtx(), optimize_range_tests_to_bit_test(), plus_constant(), prefer_and_bit_test(), reduce_to_bit_field_precision(), reload_cse_simplify_set(), simplify_context::simplify_binary_operation_1(), simplify_const_binary_operation(), simplify_const_unary_operation(), simplify_context::simplify_subreg(), and try_combine().
|
extern |
Search LISTP (an EXPR_LIST) for an entry whose first operand is NODE and return 1 if it is found. A simple equality test is used to determine if NODE matches.
References XEXP.
Referenced by remove_node_from_insn_list().
|
extern |
Return true if currently emitting into a sequence.
References get_current_sequence(), and sequence_stack::next.
Referenced by expand_dummy_function_end(), expand_function_end(), leaf_function_p(), and resolve_simple_move().
|
extern |
Initialize the aliasing machinery. Initialize the REG_KNOWN_VALUE array.
References BASIC_BLOCK_FOR_FN, bitmap_clear(), bitmap_set_bit, cfun, changed, copying_arguments, DF_REG_DEF_COUNT, find_reg_equal_equiv_note(), find_reg_note(), FOR_BB_INSNS, FOR_EACH_VEC_ELT, frame_pointer_needed, free(), gcc_assert, GET_CODE, GET_MODE, get_reg_known_value(), HARD_FRAME_POINTER_REGNUM, hard_frame_pointer_rtx, i, MAX_ALIAS_LOOP_PASSES, max_reg_num(), modified_in_p(), n_basic_blocks_for_fn, new_reg_base_value, NONDEBUG_INSN_P, NOTE_KIND, NOTE_P, note_stores(), NULL, NULL_RTX, old_reg_base_value, PATTERN(), plus_constant(), poly_int_rtx_p(), pre_and_rev_post_order_compute(), record_set(), reg_base_value, reg_known_equiv_p, reg_known_value, REG_NOTE_KIND, REG_NOTES, reg_overlap_mentioned_p(), REG_P, reg_seen, REGNO, regno_reg_rtx, reload_completed, rtx_equal_p(), rtx_varies_p(), sbitmap_alloc(), sbitmap_free(), SET, SET_DEST, set_reg_known_equiv_p(), set_reg_known_value(), SET_SRC, single_set(), static_reg_base_value, targetm, timevar_pop(), timevar_push(), ui, unique_id, vec_safe_grow_cleared(), and XEXP.
Referenced by cse_main(), dse_step0(), gcse_after_reload_main(), ira(), one_code_hoisting_pass(), one_pre_gcse_pass(), one_store_motion_pass(), and reload_cse_regs_1().
|
extern |
|
inline |
Initialize a full_rtx_costs structure C to the maximum cost.
References MAX_COST, full_rtx_costs::size, and full_rtx_costs::speed.
Referenced by move2add_use_add3_insn().
|
inline |
Initialize a full_rtx_costs structure C to zero cost.
References full_rtx_costs::size, and full_rtx_costs::speed.
Referenced by move2add_use_add3_insn().
|
extern |
Initialize global machine_mode variables.
References as_a(), BITS_PER_WORD, byte_mode, opt_mode< T >::exists(), FOR_EACH_MODE_IN_CLASS, GET_MODE_BITSIZE(), GET_MODE_CLASS, mode_for_size(), POINTER_SIZE, ptr_mode, opt_mode< T >::require(), require(), and word_mode.
Referenced by do_compile().
|
extern |
Initialize data structures and variables in this file before generating rtl for each function.
References arg_pointer_rtx, BITS_PER_WORD, crtl, cur_debug_insn_uid, cur_insn_uid, first_label_num, frame_pointer_rtx, get_current_sequence(), ggc_cleared_vec_alloc(), HARD_FRAME_POINTER_REGNUM, hard_frame_pointer_rtx, init_virtual_regs(), initial_regno_reg_rtx, label_num, LAST_VIRTUAL_REGISTER, sequence_stack::next, NULL, REG_POINTER, reg_rtx_no, REGNO_POINTER_ALIGN, regno_reg_rtx, set_first_insn(), set_last_insn(), stack_pointer_rtx, VIRTUAL_CFA_REGNUM, virtual_cfa_rtx, VIRTUAL_INCOMING_ARGS_REGNUM, virtual_incoming_args_rtx, VIRTUAL_OUTGOING_ARGS_REGNUM, virtual_outgoing_args_rtx, VIRTUAL_STACK_DYNAMIC_REGNUM, virtual_stack_dynamic_rtx, VIRTUAL_STACK_VARS_REGNUM, and virtual_stack_vars_rtx.
Referenced by prepare_function_start(), read_rtl_function_body(), and read_rtl_function_body_from_file_range().
|
extern |
Create some permanent unique rtl objects shared between all functions.
References as_a(), const0_rtx, const1_rtx, const_double_from_real_value(), const_double_htab, CONST_FIXED_FROM_FIXED_VALUE, const_fixed_htab, const_int_htab, const_int_rtx, const_poly_int_htab, const_tiny_rtx, const_true_rtx, const_wide_int_htab, constm1_rtx, hash_table< Descriptor, Lazy, Allocator >::create_ggc(), dconst0, dconst1, dconst2, dconsthalf, dconstinf, dconstm0, dconstm1, dconstninf, double_int_one, FCONST0, FCONST1, FOR_EACH_MODE_IN_CLASS, gen_const_vector(), GEN_INT, gen_rtx_CONST_INT(), gen_rtx_INSN(), GET_MODE_CLASS, GET_MODE_FBIT, GET_MODE_INNER, HOST_BITS_PER_DOUBLE_INT, i, invalid_insn_rtx, MAX_SAVED_CONST_INT, NULL, NULL_RTX, NUM_POLY_INT_COEFFS, pc_rtx, r, REAL_EXP, real_from_integer(), real_inf(), REAL_VALUE_TYPE, reg_attrs_htab, opt_mode< T >::require(), ret_rtx, SET_REAL_EXP, SIGNED, SIGNED_FIXED_POINT_MODE_P, simple_return_rtx, STORE_FLAG_VALUE, targetm, and TI_DOUBLE_TYPE.
Referenced by backend_init().
|
extern |
Initialise global register information required by all functions.
References ADDR_SPACE_GENERIC, arg_pointer_rtx, frame_pointer_rtx, gen_raw_REG(), gen_rtx_REG(), GET_MODE_ALIGNMENT, GET_MODE_SIZE(), ggc_cleared_alloc(), ggc_strdup, HARD_FRAME_POINTER_REGNUM, hard_frame_pointer_rtx, i, init_reg_modes_target(), initial_regno_reg_rtx, INVALID_REGNUM, mode_mem_attrs, NULL, NULL_RTX, opt_fstack_limit_register_no, opt_fstack_limit_symbol_arg, PIC_OFFSET_TABLE_REGNUM, pic_offset_table_rtx, reg_attrs_htab, reg_raw_mode, return_address_pointer_rtx, split_branch_probability, stack_limit_rtx, stack_pointer_rtx, profile_probability::uninitialized(), VIRTUAL_CFA_REGNUM, virtual_cfa_rtx, VIRTUAL_INCOMING_ARGS_REGNUM, virtual_incoming_args_rtx, VIRTUAL_OUTGOING_ARGS_REGNUM, virtual_outgoing_args_rtx, VIRTUAL_PREFERRED_STACK_BOUNDARY_REGNUM, virtual_preferred_stack_boundary_rtx, VIRTUAL_STACK_DYNAMIC_REGNUM, virtual_stack_dynamic_rtx, VIRTUAL_STACK_VARS_REGNUM, and virtual_stack_vars_rtx.
Referenced by backend_init(), and target_reinit().
|
extern |
In expmed.cc
References alg_hash_entry_ptr(), alg_hash_used_p(), init_expmed_rtl::cint, const0_rtx, crtl, default_rtl_profile(), GEN_INT, gen_raw_REG(), ggc_free(), HOST_WIDE_INT_1, init_expmed_one_mode(), LAST_VIRTUAL_REGISTER, MAX_BITS_PER_WORD, init_expmed_rtl::mult, init_expmed_rtl::neg, NUM_ALG_HASH_ENTRIES, init_expmed_rtl::plus, init_expmed_rtl::pow2, init_expmed_rtl::reg, init_expmed_rtl::sdiv, init_expmed_rtl::sdiv_32, set_alg_hash_used_p(), set_src_cost(), set_zero_cost(), init_expmed_rtl::shift, init_expmed_rtl::shift_add, init_expmed_rtl::shift_mult, init_expmed_rtl::shift_sub0, init_expmed_rtl::shift_sub1, init_expmed_rtl::smod_32, init_expmed_rtl::trunc, init_expmed_rtl::udiv, init_expmed_rtl::wide_lshr, init_expmed_rtl::wide_mult, init_expmed_rtl::wide_trunc, and init_expmed_rtl::zext.
Referenced by backend_init_target().
|
extern |
Initialize some fake stack-frame MEM references for use in memory_move_secondary_cost.
References gen_rtx_MEM(), i, stack_pointer_rtx, and top_of_stack.
Referenced by backend_init_target().
|
extern |
In lower-subreg.cc
Do one-per-target initialisation. This involves determining which operations on the machine are profitable. If none are found, then the pass just returns when called.
References compute_costs(), const0_rtx, gen_rtx_REG(), GET_MODE_2XWIDER_MODE(), LAST_VIRTUAL_REGISTER, LOG_COSTS, cost_rtxes::set, cost_rtxes::shift, cost_rtxes::source, cost_rtxes::target, this_target_lower_subreg, twice_word_mode, word_mode, and cost_rtxes::zext.
Referenced by backend_init_target().
Initialize a fresh REG rtx with mode MODE and register REGNO.
References NULL, ORIGINAL_REGNO, REG_ATTRS, and set_mode_and_regno().
Referenced by gen_raw_REG().
|
extern |
Compute the table of register modes. These values are used to record death information for individual registers (as opposed to a multi-register mode). This function might be invoked more than once, if the target has support for changing register usage conventions on a per-function basis.
References choose_hard_reg_mode(), hard_regno_nregs(), i, NULL, reg_raw_mode, targetm, this_target_regs, and word_mode.
Referenced by init_emit_regs().
|
extern |
Function called only once per target_globals to initialize the target_hard_regs structure. Once this is done, various switches may override.
References accessible_reg_set, call_used_regs, CLEAR_HARD_REG_SET, fixed_regs, gcc_assert, i, init_reg_class_start_regs(), initial_call_used_regs, initial_fixed_regs, initial_reg_names, int_reg_class_contents, operand_reg_set, reg_alloc_order, reg_class_contents, reg_names, SET_HARD_REG_BIT, and SET_HARD_REG_SET.
Referenced by general_init().
|
extern |
Finish initializing the register sets and initialize the register modes. This function might be invoked more than once, if the target has support for changing register usage conventions on a per-function basis.
References init_reg_sets_1().
Referenced by add_removable_extension(), backend_init(), reinit_regs(), and target_reinit().
|
extern |
Initialize rtx_all_subrtx_bounds.
References GET_RTX_CLASS, i, init_num_sign_bit_copies_in_rep(), NUM_RTX_CODE, rtx_all_subrtx_bounds, RTX_CONST_OBJ, rtx_nonconst_subrtx_bounds, setup_reg_subrtx_bounds(), and UCHAR_MAX.
Referenced by backend_init().
|
extern |
References cfun, DF_REF_FLAGS_IS_SET, DF_REF_PARTIAL, DF_REF_REG, find_subregs_of_mode(), FOR_BB_INSNS, FOR_EACH_BB_FN, FOR_EACH_INSN_DEF, gcc_obstack_init, max_reg_num(), NONDEBUG_INSN_P, PATTERN(), read_modify_subreg_p(), record_subregs_of_mode(), valid_mode_changes, and valid_mode_changes_obstack.
Referenced by init_costs().
|
extern |
In varasm.cc
References bss_noswitch_section, bss_section, comm_section, const_desc_htab, create_constant_pool(), hash_table< Descriptor, Lazy, Allocator >::create_ggc(), ctors_section, data_section, dtors_section, emit_common(), emit_local(), emit_tls_common(), get_noswitch_section(), get_unnamed_section(), lcomm_section, NULL, object_block_htab, output_section_asm_op(), readonly_data_section, sbss_section, sdata_section, SECTION_BSS, SECTION_CODE, SECTION_COMMON, section_htab, SECTION_WRITE, shared_constant_pool, targetm, text_section, and tls_comm_section.
Referenced by backend_init().
Calculate the cost of a single instruction. A return value of zero indicates an instruction pattern without a known cost.
References PATTERN(), pattern_cost(), and targetm.
Referenced by bb_ok_for_noce_convert_multiple_sets(), canonicalize_comparison(), cheap_bb_rtx_cost_p(), combine_instructions(), combine_validate_cost(), find_shift_sequence(), output_asm_name(), rtl_account_profile_record(), and seq_cost().
Return true if INSN could throw, assuming no REG_EH_REGION note to the contrary.
References CALL_P, cfun, INSN_P, may_trap_p(), and PATTERN().
Referenced by copy_reg_eh_region_note_backward(), copy_reg_eh_region_note_forward(), distribute_notes(), expand_gimple_stmt(), fixup_eh_region_note(), get_eh_region_and_lp_from_rtx(), lra_process_new_insns(), and try_combine().
|
extern |
Return discriminator of the statement that produced this insn.
References compute_discriminator(), and INSN_LOCATION().
Referenced by notice_source_line(), and rtx_writer::print_rtx_operand_code_L().
|
extern |
Return source file of the statement that produced this insn.
References INSN_LOCATION(), and LOCATION_FILE.
References INSN_LOCATION(), LOCATION_LOCUS, and UNKNOWN_LOCATION.
Referenced by fixup_reorder_chain(), get_loop_location(), notice_source_line(), rtx_writer::print_rtx_operand_code_L(), and unique_locus_on_edge_between_p().
|
extern |
In emit-rtl.cc
Return line number of the statement that produced this insn.
References INSN_LOCATION(), and LOCATION_LINE.
|
inline |
References XLOC.
Referenced by can_assign_to_reg_without_clobbers_p(), cond_move_process_if_block(), dump_user_location_t::dump_user_location_t(), emit_copy_of_insn_after(), emit_delay_sequence(), emit_moves(), emit_nop_for_unique_locus_between(), emit_pattern_after(), emit_pattern_after_setloc(), emit_pattern_before(), emit_pattern_before_setloc(), emit_to_new_bb_before(), find_cond_trap(), fixup_reorder_chain(), insn_discriminator(), insn_file(), INSN_HAS_LOCATION(), insn_line(), insn_location(), insn_scope(), make_call_insn_raw(), make_debug_insn_raw(), make_insn_raw(), make_jump_insn_raw(), noce_convert_multiple_sets(), noce_process_if_block(), noce_try_abs(), noce_try_addcc(), noce_try_bitop(), noce_try_cmove(), noce_try_cmove_arith(), noce_try_cond_zero_arith(), noce_try_ifelse_collapse(), noce_try_inverse_constants(), noce_try_minmax(), noce_try_move(), noce_try_sign_mask(), noce_try_store_flag(), noce_try_store_flag_constants(), noce_try_store_flag_mask(), peep2_attempt(), reemit_insn_block_notes(), reemit_marker_as_note(), set_insn_locations(), try_combine(), try_forward_edges(), try_split(), try_validate_parallel(), and unique_locus_on_edge_between_p().
|
extern |
Return expanded location of the statement that produced this insn.
References expand_location(), and INSN_LOCATION().
Referenced by notice_source_line(), and rtx_writer::print_rtx_operand_code_L().
|
extern |
At the end of emit stage, clear current location.
References curr_location, epilogue_location, and UNKNOWN_LOCATION.
Referenced by expand_thunk().
|
extern |
Allocate insn location datastructure.
References curr_location, epilogue_location, prologue_location, and UNKNOWN_LOCATION.
Referenced by compile_file(), and expand_thunk().
Return true if INSN cannot throw at all.
References as_a(), rtx_sequence::element(), GET_CODE, get_eh_region_and_lp_from_rtx(), i, insn_nothrow_p(), INSN_P, rtx_sequence::len(), NONJUMP_INSN_P, PATTERN(), and r.
Referenced by can_combine_p(), can_delete_call(), can_split_parallel_of_n_reg_sets(), count_reg_usage(), cse_insn(), deletable_insn_p(), delete_unmarked_insns(), force_move_args_size_note(), insn_live_p(), insn_nothrow_p(), scan_insn(), and try_combine().
Return lexical scope block insn belongs to.
References INSN_LOCATION(), and LOCATION_BLOCK.
Referenced by reemit_insn_block_notes().
|
inline |
ACCESS MACROS for particular fields of insns.
Holds a unique number for each insn. These are not necessarily sequentially increasing.
References RTL_INSN_CHAIN_FLAG_CHECK.
Referenced by add_regs_to_insn_regno_info(), add_removable_extension(), add_store_equivs(), align_fuzz(), alloc_mem(), fixup_insn_uid::apply(), assign_spill_hard_regs(), build_def_use(), bypass_block(), calculate_gen_cands(), can_combine_p(), check_and_process_move(), check_for_label_ref(), check_mem_read_rtx(), clear_hashed_info_for_insn(), combine_predictions_for_insn(), combine_reaching_defs(), combine_validate_cost(), compute_store_table(), cond_exec_find_if_block(), copy_delay_slot_insn(), copyprop_hardreg_forward_1(), cprop_insn(), cprop_jump(), create_cand(), create_new_chain(), create_new_invariant(), create_pseudo_cfg(), curr_insn_transform(), dbr_schedule(), dead_debug_global_replace_temp(), dead_debug_insert_temp(), dead_debug_promote_uses(), dead_debug_reset_uses(), debug_rtx_find(), delete_address_reloads_1(), delete_dead_jumptables(), delete_dead_store_insn(), delete_noop_moves(), delete_unmarked_insns(), df_chain_create_bb(), df_chain_insn_bottom_dump(), df_chain_insn_top_dump(), df_insn_change_bb(), df_insn_debug(), df_insn_debug_regno(), df_insn_delete(), df_insn_refs_verify(), df_insn_rescan(), df_insn_rescan_debug_internal(), df_live_bb_local_compute(), df_md_bb_local_compute(), df_mir_bb_local_compute(), df_note_bb_compute(), df_notes_rescan(), df_print_note(), df_rd_bb_local_compute(), df_reorganize_refs_by_insn_bb(), df_scan_free_bb_info(), do_local_cprop(), do_remat(), dse_step1(), dse_step5(), dse_step6(), dump_basic_block_info(), dump_cselib_val(), dump_def_use_chain(), dump_eh_tree(), dump_inc_insn(), dump_insn_info(), dump_mem_insn(), emit_barrier(), emit_barrier_after(), emit_barrier_before(), emit_jump_table_data(), emit_label(), emit_label_after(), emit_label_before(), emit_reload_insns(), equiv_address_substitution(), final_1(), find_and_remove_re(), find_call_stack_args(), find_equiv_reg(), find_moveable_pseudos(), find_reload_regno_insns(), find_reload_regs(), get_attr_length_1(), get_jump_flags(), get_reload_reg(), get_trace_info(), function_reader::handle_insn_uids(), handle_simple_exit(), iv_split_hasher::hash(), trace_info_hasher::hash(), var_expand_hasher::hash(), hoist_code(), in_class_p(), inherit_in_ebb(), initialize_uninitialized_regs(), insert_insn_end_basic_block(), insert_insn_start_basic_block(), insn_addresses_new(), insn_current_reference_address(), insn_dominated_by_p(), insn_uid_check(), invalidate_insn_data_regno_info(), ira_former_scratch_operand_p(), ira_register_new_scratch_op(), ira_remove_insn_scratches(), ira_restore_scratches(), ira_update_equiv_info_by_shuffle_insn(), log_op_type(), lra_coalesce(), lra_constraints(), lra_get_insn_recog_data(), lra_invalidate_insn_data(), lra_pop_insn(), lra_push_insn_1(), lra_set_insn_recog_data(), lra_split_hard_reg_for(), lra_update_insn_recog_data(), make_call_insn_raw(), make_debug_insn_raw(), make_defs_and_copies_lists(), make_insn_raw(), make_jump_insn_raw(), make_label_edge(), make_note_raw(), mark_insn(), mark_reg_dependencies(), mark_tablejump_edge(), mark_target_live_regs(), marked_insn_p(), maybe_record_trace_start(), merge_def_and_ext(), merge_in_block(), move_freq_compare_func(), move_unallocated_pseudos(), narrow_reload_pseudo_class(), output_asm_name(), pre_delete(), pre_insert_copy_insn(), prescan_insns_for_dce(), print_insn(), print_insn_chain(), print_rtl_with_bb(), rtx_writer::print_rtx(), rtx_writer::print_rtx_operand_code_0(), rtx_writer::print_rtx_operand_code_u(), print_value(), process_addr_reg(), process_alt_operands(), process_bb_lives(), process_bb_node_lives(), rtx_reader::read_rtx_code(), record_reg_classes(), record_store(), redirect_jump_2(), regrename_analyze(), regstat_bb_compute_calls_crossed(), remove_inheritance_pseudos(), remove_pseudos(), remove_reachable_equiv_notes(), rename_chains(), replace_oldest_value_reg(), replace_read(), replace_store_insn(), resolve_shift_zext(), rest_of_clean_state(), rtl_verify_bb_insn_chain(), rtl_verify_bb_insns(), rtl_verify_bb_pointers(), scan_insn(), scan_one_insn(), scan_rtx_reg(), scan_trace(), set_new_first_and_last_insn(), shorten_branches(), spill_failure(), spill_hard_reg_in_range(), spill_pseudos(), spill_pseudos(), split_if_necessary(), try_combine(), try_fwprop_subst_note(), try_redirect_by_replacing_jump(), try_shrink_wrapping(), try_simplify_condjump(), undo_optional_reloads(), val_resolve(), val_store(), and word_dce_process_block().
|
extern |
Invert the condition of the jump JUMP, and make it jump to label NLABEL instead of where it jumps now. Return true if successful.
References apply_change_group(), cancel_changes(), invert_jump_1(), JUMP_LABEL, and redirect_jump_2().
Referenced by fix_up_fall_thru_edges(), fixup_reorder_chain(), optimize_skip(), relax_delay_slots(), set_edge_can_fallthru_flag(), try_optimize_cfg(), and try_simplify_condjump().
|
extern |
Invert the condition of the jump JUMP, and make it jump to label NLABEL instead of where it jumps now. Accrue changes into the change group. Return false if we didn't see how to perform the inversion and redirection.
References gcc_assert, invert_exp_1(), JUMP_LABEL, NULL, num_validated_changes(), pc_set(), redirect_jump_1(), and SET_SRC.
Referenced by dead_or_predicable(), and invert_jump().
References JUMP_LABEL, and safe_as_a().
Referenced by create_trace_edges(), discover_loops(), fill_simple_delay_slots(), and optimize_skip().
|
inline |
If LABEL is followed by a jump table, return the table, otherwise return null.
References NEXT_INSN(), and safe_dyn_cast().
Referenced by final_scan_insn_1(), and shorten_branches().
Return true iff INSN is a jump and its JUMP_LABEL is a label, not NULL or a return.
References ANY_RETURN_P, JUMP_LABEL, JUMP_P, and NULL.
Referenced by delete_related_insns(), fill_simple_delay_slots(), fill_slots_from_thread(), insn_current_reference_address(), and make_return_insns().
Return true if we should avoid inserting code between INSN and preceding call instruction.
References fixed_regs, general_operand(), i2, INSN_P, keep_with_call_p(), next_nonnote_insn(), NULL, REG_P, REGNO, SET_DEST, SET_SRC, single_set(), stack_pointer_rtx, and targetm.
Referenced by keep_with_call_p(), rtl_block_ends_with_call_p(), and rtl_flow_call_edges_add().
Return true if LABEL is a target of JUMP_INSN. This applies only to non-complex jumps. That is, direct unconditional, conditional, and tablejumps, but not computed jumps or returns. It also does not apply to the fallthru case of a conditional jump.
References find_reg_note(), GET_NUM_ELEM, i, JUMP_LABEL, NULL, RTVEC_ELT, table, tablejump_p(), and XEXP.
Referenced by cfg_layout_redirect_edge_and_branch(), check_for_label_ref(), find_reloads(), subst_reloads(), and try_optimize_cfg().
Get the label that a LABEL_REF references.
Referenced by add_label_notes(), check_for_label_ref(), compare_constant(), cond_exec_get_condition(), const_hash_1(), const_rtx_hash_1(), convert_debug_memory_address(), convert_memory_address_addr_space_1(), create_trace_edges(), cselib_hash_rtx(), distribute_notes(), exp_equiv_p(), find_reloads(), fold_rtx(), get_branch_condition(), get_condition(), hash_rtx(), make_edges(), mark_jump_label_1(), mark_label_nuses(), maybe_propagate_label_ref(), noce_emit_store_flag(), noce_get_alt_condition(), noce_get_condition(), operands_match_p(), operands_match_p(), output_addr_const(), output_asm_label(), output_constant_pool_1(), patch_jump_insn(), print_value(), purge_dead_tablejump_edges(), redirect_exp_1(), reg_mentioned_p(), rtx_equal_for_cselib_1(), rtx_equal_for_memref_p(), rtx_equal_p(), rtx_referenced_p(), rtx_renumbered_equal_p(), and set_label_offsets().
|
extern |
Return the last CALL_INSN in the current list, or 0 if there is none. This routine does not look inside SEQUENCEs.
References CALL_P, get_last_insn(), PREV_INSN(), and safe_as_a().
Referenced by emit_call_1(), emit_library_call_value_1(), expand_builtin_apply(), and expand_call().
|
inline |
If loads from memories of mode MODE always sign or zero extend, return SIGN_EXTEND or ZERO_EXTEND as appropriate. Return UNKNOWN otherwise.
References BITS_PER_WORD, GET_MODE_PRECISION(), is_a(), and LOAD_EXTEND_OP.
Referenced by cse_insn(), expand_single_bit_test(), fold_unary_loc(), free_load_extend(), make_compound_operation_int(), nonzero_bits1(), num_sign_bit_copies1(), reload_cse_simplify_operands(), reload_cse_simplify_set(), simplify_comparison(), simplify_set(), and try_combine().
Return true if IN contains a piece of rtl that has the address LOC.
References GET_CODE, GET_RTX_FORMAT, GET_RTX_LENGTH, i, loc_mentioned_in_p(), XEXP, XVECEXP, and XVECLEN.
Referenced by df_remove_dead_eq_notes(), loc_mentioned_in_p(), and remove_address_replacements().
Look up EXP in the table of constant descriptors. Return the rtl if it has been emitted, else null.
References const_desc_htab, const_hash_1(), exp(), constant_descriptor_tree::hash, NULL_RTX, constant_descriptor_tree::rtl, and constant_descriptor_tree::value.
Referenced by cst_pool_loc_descr(), decode_addr_const(), and expand_debug_expr().
|
extern |
If M is a bitmask that selects a field of low-order bits within an item but not the entire word, return the length of the field. Return -1 otherwise. M is used in machine mode MODE.
References exact_log2(), GET_MODE_MASK, and HWI_COMPUTABLE_MODE_P().
Referenced by try_widen_shift_mode().
References simplify_context::lowpart_subreg().
Referenced by combine_simplify_rtx(), convert_debug_memory_address(), cselib_lookup_1(), doloop_optimize(), expand_assignment(), expand_debug_expr(), expand_debug_source_expr(), expand_expr_real_2(), expand_rotate_as_vec_perm(), fold_rtx(), gen_lowpart_common(), gen_lowpart_for_combine(), gen_memset_value_from_prev(), get_iv_value(), get_reload_reg(), iv_extend(), iv_number_of_iterations(), iv_subreg(), move_plus_up(), new_cselib_val(), prepare_call_arguments(), record_jump_cond_subreg(), replace_dead_reg(), try_apply_stack_adjustment(), try_combine(), and use_narrower_mode().
|
extern |
A wrapper around simplify_subreg_regno that uses subreg_lowpart_offset (xmode, ymode) as the offset.
References subreg_info::offset, simplify_subreg_regno(), and subreg_lowpart_offset().
Referenced by gen_memset_value_from_prev().
Look at the expression rooted at X. Look for expressions equivalent to ZERO_EXTRACT, SIGN_EXTRACT, ZERO_EXTEND, SIGN_EXTEND. Form these expressions. Return the new rtx, usually just X. Also, for machines like the VAX that don't have logical shift insns, try to convert logical to arithmetic shift operations in cases where they are equivalent. This undoes the canonicalizations to logical shifts done elsewhere. We try, as much as possible, to re-use rtl expressions to save memory. IN_CODE says what kind of expression we are processing. Normally, it is SET. In a memory address it is MEM. When processing the arguments of a comparison or a COMPARE against zero, it is COMPARE, or EQ if more precisely it is an equality comparison against zero.
References COMPARISON_P, const0_rtx, GET_CODE, GET_MODE, GET_RTX_FORMAT, GET_RTX_LENGTH, i, is_a(), make_compound_operation(), make_compound_operation_int(), maybe_swap_commutative_operands(), SET, simplify_unary_operation(), SUBST, XEXP, XVECEXP, and XVECLEN.
Referenced by combine_simplify_rtx(), make_compound_operation(), make_compound_operation_int(), propagate_for_debug_subst(), simplify_comparison(), simplify_if_then_else(), and simplify_set().
Create a DEBUG_EXPR_DECL / DEBUG_EXPR pair from RTL expression EXP.
References DEBUG_EXPR_TREE_DECL, DECL_ARTIFICIAL, exp(), GET_MODE, make_node(), MEM_EXPR, MEM_P, constant_descriptor_rtx::mode, NULL_TREE, REG_EXPR, REG_P, SET_DECL_MODE, SET_DECL_RTL, TREE_TYPE, lang_hooks_for_types::type_for_mode, TYPE_MODE, and lang_hooks::types.
Referenced by avoid_complex_debug_insns(), dead_debug_insert_temp(), dead_debug_promote_uses(), delete_trivially_dead_insns(), and propagate_for_debug_subst().
Make and return an INSN rtx, initializing all its slots. Store PATTERN in the pattern slots.
References as_a(), BLOCK_FOR_INSN(), cur_insn_uid, curr_insn_location(), debug_rtx(), GET_CODE, INSN_CODE, INSN_LOCATION(), INSN_P, INSN_UID(), NULL, PATTERN(), pc_rtx, REG_NOTES, returnjump_p(), rtx_alloc(), SET, SET_DEST, and warning().
Referenced by assemble_asm(), can_assign_to_reg_without_clobbers_p(), can_reload_into(), check_asm_operands(), default_print_patchable_function_entry(), emit_delay_sequence(), emit_insn(), emit_insn_after(), emit_insn_after_noloc(), emit_insn_after_setloc(), emit_insn_before(), emit_insn_before_noloc(), emit_insn_before_setloc(), noce_emit_czero(), reload_cse_regs_1(), and try_validate_parallel().
Copy X if necessary so that it won't be altered by changes in OTHER. Return X or the rtx for the pseudo reg the value of X was copied into. OTHER must be valid as a SET_DEST.
References CONSTANT_P, emit_move_insn(), gen_reg_rtx(), GET_CODE, GET_MODE, MEM_P, reg_mentioned_p(), REG_P, REGNO, SUBREG_REG, and XEXP.
|
extern |
Indicate that hard register number FROM was eliminated and replaced with an offset from hard register number TO. The status of hard registers live at the start of a basic block is updated by replacing a use of FROM with a use of TO.
References bitmap_bit_p, bitmap_clear_bit(), bitmap_set_bit, cfun, df_live, DF_LIVE_IN, DF_LR_IN, FOR_EACH_BB_FN, and r.
Referenced by reload().
Find all CODE_LABELs referred to in X, and increment their use counts. If INSN is a JUMP_INSN and there is at least one CODE_LABEL referenced in INSN as a jump target, then store the last one in JUMP_LABEL (INSN). For a tablejump, this must be the label for the ADDR_VEC. Store any other jump targets as REG_LABEL_TARGET notes. If INSN is an INSN or a CALL_INSN or non-target operands of a JUMP_INSN, and there is at least one CODE_LABEL referenced in INSN, add a REG_LABEL_OPERAND note containing that label to INSN. For returnjumps, the JUMP_LABEL will also be set as appropriate. Note that two labels separated by a loop-beginning note must be kept distinct if we have not yet done loop-optimization, because the gap between them is where loop-optimize will want to move invariant code to. CROSS_JUMP tells us that loop-optimization is done with.
References extract_asm_operands(), JUMP_P, mark_jump_label_1(), mark_jump_label_asm(), NULL, and PATTERN().
Referenced by emit_copy_of_insn_after(), gen_reload(), mark_all_labels(), mark_jump_label_1(), move_insn_for_shrink_wrap(), try_combine(), and try_split().
|
extern |
Identify REG as a probable pointer register and show its alignment as ALIGN, if nonzero.
References REG_POINTER, REGNO, and REGNO_POINTER_ALIGN.
Referenced by adjust_one_expanded_partition_var(), allocate_dynamic_stack_space(), assign_parm_setup_block(), assign_parm_setup_reg(), expand_call(), expand_expr_real_1(), expand_function_start(), expand_one_register_var(), force_reg(), get_dynamic_stack_base(), get_temp_reg(), memory_address_addr_space(), and set_reg_attrs_from_value().
|
extern |
Identify REG (which may be a CONCAT) as a user register.
References gcc_assert, GET_CODE, REG_P, REG_USERVAR_P, and XEXP.
Referenced by adjust_one_expanded_partition_var(), assign_parm_setup_reg(), and expand_one_register_var().
|
extern |
Return 1 + the largest label number used so far in the current function.
References label_num.
Referenced by compute_alignments(), grow_label_align(), init_eliminable_invariants(), reload_combine(), shorten_branches(), and update_alignments().
|
extern |
In emit-rtl.cc.
Return 1 plus largest pseudo reg number used in the current function.
References reg_rtx_no.
Referenced by allocate_reg_info(), assign_by_spills(), build_conflicts(), build_store_vectors(), calculate_equiv_gains(), cleanup_cfg(), combine_and_move_insns(), combine_split_insns(), compute_hash_table_work(), compute_store_table(), create_cands(), create_live_range_start_chains(), create_log_links(), cse_main(), cselib_init(), curr_insn_transform(), dead_or_predicable(), decompose_multiword_subregs(), df_grow_reg_info(), df_print_word_regset(), dump_reg_info(), expand_reg_data(), expand_reg_info(), expand_reg_info(), ext_dce_execute(), find_costs_and_classes(), find_moveable_pseudos(), fix_reg_equiv_init(), fwprop_done(), gcse_or_cprop_is_too_expensive(), grow_reg_equivs(), if_convert(), init_alias_analysis(), init_costs(), init_live_reload_and_inheritance_pseudos(), init_lives(), init_loop_tree_node(), init_reg_info(), init_regno_assign_info(), init_subregs_of_mode(), initiate_allocnos(), initiate_regno_cost_classes(), ira(), ira_emit(), ira_expand_reg_equiv(), ira_flattening(), ira_print_disposition(), ira_set_pseudo_classes(), ira_sort_regnos_for_alter_reg(), lra(), lra_assign(), lra_clear_live_ranges(), lra_coalesce(), lra_constrain_insn(), lra_constraints(), lra_create_live_ranges_1(), lra_create_new_reg_with_unique_value(), lra_emit_add(), lra_emit_move(), lra_final_code_change(), lra_fp_pseudo_p(), lra_init_equiv(), lra_need_for_scratch_reg_p(), lra_need_for_spills_p(), lra_remat(), lra_spill(), lra_split_hard_reg_for(), lra_update_reg_val_offset(), maybe_memory_address_addr_space_p(), print_live_ranges(), print_pseudo_costs(), propagate_allocno_info(), rebuild_regno_allocno_maps(), regno_clobbered_at_setjmp(), regstat_compute_calls_crossed(), regstat_compute_ri(), regstat_init_n_sets_and_refs(), remove_some_program_points_and_update_live_ranges(), remove_unnecessary_allocnos(), resize_reg_info(), rest_of_handle_combine(), rest_of_handle_cse(), rest_of_handle_cse2(), rest_of_handle_cse_after_global_opts(), run_rtl_passes(), setup_live_pseudos_and_spill_after_risky_transforms(), setup_min_max_allocno_live_range_point(), setup_preferred_alternate_classes_for_new_pseudos(), setup_reg_classes(), setup_reg_equiv_init(), spill_pseudos(), and try_combine().
Check whether X may be aliased with MEM. Don't do offset-based memory disambiguation & TBAA.
References ALIAS_SET_MEMORY_BARRIER, base_alias_check(), find_base_term(), get_addr(), GET_CODE, GET_MODE, MEM_ADDR_SPACE, MEM_ALIAS_SET, MEM_READONLY_P, MEM_VOLATILE_P, nonoverlapping_memrefs_p(), rtx_refs_may_alias_p(), and XEXP.
Return true if accesses to address X may alias accesses based on the stack pointer.
References find_base_term(), and static_reg_base_value.
Referenced by record_store(), and store_killed_in_insn().
Same as above, but additionally return true if evaluating rtx X might cause a fault. We define a fault for the purpose of this function as a erroneous execution condition that cannot be encountered during the normal execution of a valid program; the typical example is an unaligned memory access on a strict alignment machine. The compiler guarantees that it doesn't generate code that will fault from a valid program, but this guarantee doesn't mean anything for individual instructions. Consider the following example: struct S { int d; union { char *cp; int *ip; }; }; int foo(struct S *s) { if (s->d == 1) return *s->ip; else return *s->cp; } on a strict alignment machine. In a valid program, foo will never be invoked on a structure for which d is equal to 1 and the underlying unique field of the union not aligned on a 4-byte boundary, but the expression *s->ip might cause a fault if considered individually. At the RTL level, potentially problematic expressions will almost always verify may_trap_p; for example, the above dereference can be emitted as (mem:SI (reg:P)) and this expression is may_trap_p for a generic register. However, suppose that foo is inlined in a caller that causes s->cp to point to a local character variable and guarantees that s->d is not set to 1; foo may have been effectively translated into pseudo-RTL as: if ((reg:SI) == 1) (set (reg:SI) (mem:SI (%fp - 7))) else (set (reg:QI) (mem:QI (%fp - 7))) Now (mem:SI (%fp - 7)) is considered as not may_trap_p since it is a memory reference to a stack slot, but it will certainly cause a fault on a strict alignment machine.
References may_trap_p_1().
Referenced by can_move_insns_across(), fill_simple_delay_slots(), fill_slots_from_thread(), find_invariant_insn(), noce_try_cmove_arith(), noce_try_sign_mask(), steal_delay_list_from_fallthrough(), steal_delay_list_from_target(), and update_equiv_regs().
Return true if evaluating rtx X might cause a trap.
References may_trap_p_1().
Referenced by can_move_insns_across(), check_cond_move_block(), copyprop_hardreg_forward_1(), distribute_notes(), eliminate_partially_redundant_loads(), emit_libcall_block_1(), find_moveable_store(), insn_could_throw_p(), noce_operand_ok(), prepare_cmp_insn(), process_bb_lives(), prune_expressions(), purge_dead_edges(), simple_mem(), simplify_context::simplify_ternary_operation(), and try_combine().
Return true if evaluating rtx X might cause a trap. FLAGS controls how to consider MEMs. A true means the context of the access may have changed from the original, such that the address may have become invalid.
References CASE_CONST_ANY, const0_rtx, CONST_VECTOR_DUPLICATE_P, CONST_VECTOR_ELT, CONST_VECTOR_ENCODED_ELT, CONSTANT_P, FLOAT_MODE_P, GET_CODE, GET_MODE, GET_MODE_NUNITS(), GET_RTX_FORMAT, GET_RTX_LENGTH, HONOR_NANS(), HONOR_SNANS(), i, may_trap_p_1(), MEM_NOTRAP_P, MEM_SIZE, MEM_SIZE_KNOWN_P, MEM_VOLATILE_P, rtx_addr_can_trap_p_1(), stack_pointer_rtx, targetm, XEXP, XVECEXP, and XVECLEN.
Referenced by default_unspec_may_trap_p(), may_trap_or_fault_p(), may_trap_p(), and may_trap_p_1().
|
extern |
If the rtx for label was created during the expansion of a nested function, then first_label_num won't include this label number. Fix this now so that array indices work later.
References CODE_LABEL_NUMBER, and first_label_num.
Referenced by expand_label().
Return true when INSN possibly modify memory contents of MEM (i.e. address can be modified).
References as_a(), CALL_P, CONST_CAST_RTX, INSN_P, memory_modified, memory_modified_1(), and note_stores().
Referenced by load_modified_by_store_p(), modified_between_p(), modified_in_p(), and store_modifies_mem_p().
Test whether expression, X, is an immediate constant that represents the most significant bit of machine mode MODE.
References CONST_DOUBLE_AS_INT_P, CONST_DOUBLE_HIGH, CONST_DOUBLE_LOW, CONST_INT_P, CONST_WIDE_INT_ELT, CONST_WIDE_INT_NUNITS, CONST_WIDE_INT_P, GET_MODE_PRECISION(), HOST_BITS_PER_DOUBLE_INT, HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT_1U, i, INTVAL, and is_int_mode().
Referenced by simplify_context::simplify_binary_operation_1(), simplify_shift_const_1(), and simplify_context::simplify_unary_operation_1().
Similar to reg_set_between_p, but check all registers in X. Return false only if none of them are modified between START and END. Return true if X contains a MEM; this routine does use memory aliasing.
References CASE_CONST_ANY, end(), GET_CODE, GET_RTX_FORMAT, GET_RTX_LENGTH, i, MEM_READONLY_P, memory_modified_in_insn_p(), modified_between_p(), NEXT_INSN(), reg_set_between_p(), XEXP, XVECEXP, and XVECLEN.
Referenced by can_combine_p(), canonicalize_condition(), check_cond_move_block(), cprop_jump(), cse_condition_code_reg(), find_call_crossed_cheap_reg(), find_moveable_pseudos(), modified_between_p(), no_conflict_move_test(), noce_process_if_block(), and try_combine().
Similar to reg_set_p, but check all registers in X. Return false only if none of them are modified in INSN. Return true if X contains a MEM; this routine does use memory aliasing.
References CASE_CONST_ANY, GET_CODE, GET_RTX_FORMAT, GET_RTX_LENGTH, i, MEM_READONLY_P, memory_modified_in_insn_p(), modified_in_p(), reg_set_p(), XEXP, XVECEXP, and XVECLEN.
Referenced by canonicalize_condition(), clobbers_queued_reg_save(), cond_exec_process_if_block(), cond_exec_process_insns(), cprop_jump(), cse_cc_succs(), fill_slots_from_thread(), find_moveable_pseudos(), fp_setter_insn(), init_alias_analysis(), modified_in_p(), no_conflict_move_test(), noce_convert_multiple_sets_1(), noce_get_alt_condition(), noce_process_if_block(), noce_try_cmove_arith(), and thread_jump().
|
extern |
In expr.cc
Generate several move instructions to copy LEN bytes from block FROM to block TO. (These are MEM rtx's with BLKmode). If PUSH_ROUNDING is defined and TO is NULL, emit_single_push_insn is used to push FROM to the stack. ALIGN is maximum stack alignment we can assume. Return value is based on RETMODE argument.
References gcc_unreachable, NULL, and RETURN_BEGIN.
Referenced by emit_block_move_hints(), and emit_push_insn().
Given an INSN, return true if it has more than one SET, else return false.
References set_of_data::found, GET_CODE, i, INSN_P, PATTERN(), SET, XVECEXP, and XVECLEN.
Referenced by combine_and_move_insns(), cse_extended_basic_block(), find_reg_equal_equiv_note(), forward_propagate_into(), hash_scan_set(), process_bb_node_lives(), set_for_reg_notes(), and simple_move_p().
|
inline |
Given that a subreg has outer mode OUTERMODE and inner mode INNERMODE, return the smaller of the two modes if they are different sizes, otherwise return the outer mode.
References paradoxical_subreg_p().
Referenced by update_costs_from_allocno().
|
extern |
Read an rtx of mode MODE from the target memory image given by BYTES, starting at byte FIRST_BYTE. Each element of BYTES contains BITS_PER_UNIT bits and the bytes are in target memory order. The image has enough values to specify all bytes of MODE. Return the rtx on success, otherwise return NULL_RTX.
References ALL_SCALAR_FIXED_POINT_MODE_P, as_a(), CEIL, const_double_from_real_value(), CONST_FIXED_FROM_FIXED_VALUE, FIXED_VALUE_TYPE, gcc_assert, GET_MODE_BITSIZE(), GET_MODE_NUNITS(), GET_MODE_PRECISION(), GET_MODE_SIZE(), HOST_BITS_PER_WIDE_INT, i, immed_wide_int_const(), is_a(), MIN, native_decode_vector_rtx(), NULL_RTX, r, real_from_target(), REAL_VALUE_TYPE, subreg_size_lsb(), subreg_size_offset_from_lsb(), poly_int< N, C >::to_constant(), VECTOR_MODE_P, and wi::zero().
Referenced by c_readstr(), native_decode_vector_rtx(), and simplify_immed_subreg().
|
extern |
Read a vector of mode MODE from the target memory image given by BYTES, starting at byte FIRST_BYTE. The vector is known to be encodable using NPATTERNS interleaved patterns with NELTS_PER_PATTERN elements each, and BYTES is known to have enough bytes to supply NPATTERNS * NELTS_PER_PATTERN vector elements. Each element of BYTES contains BITS_PER_UNIT bits and the bytes are in target memory order. Return the vector on success, otherwise return NULL_RTX.
References rtx_vector_builder::build(), vector_builder< T, Shape, Derived >::encoded_nelts(), gcc_assert, gen_int_mode(), GET_MODE_CLASS, GET_MODE_INNER, GET_MODE_NUNITS(), GET_MODE_PRECISION(), i, native_decode_rtx(), NULL_RTX, and vector_element_size.
Referenced by native_decode_rtx(), and simplify_const_vector_subreg().
|
extern |
Try to calculate NUM_BYTES bytes of the target memory image of X, starting at byte FIRST_BYTE. Return true on success and add the bytes to BYTES, such that each byte has BITS_PER_UNIT bits and such that the bytes follow target memory order. Leave BYTES unmodified on failure. MODE is the mode of X. The caller must reserve NUM_BYTES bytes in BYTES before calling this function.
References CONST_DOUBLE_P, CONST_DOUBLE_REAL_VALUE, CONST_FIXED_VALUE_HIGH, CONST_FIXED_VALUE_LOW, CONST_SCALAR_INT_P, CONST_VECTOR_ELT, generic_wide_int< storage >::elt(), gcc_assert, GET_CODE, GET_MODE, GET_MODE_CLASS, GET_MODE_INNER, GET_MODE_MASK, GET_MODE_NUNITS(), GET_MODE_PRECISION(), GET_MODE_SIZE(), GET_MODE_UNIT_SIZE, HOST_BITS_PER_WIDE_INT, i, INTVAL, is_a(), MIN, native_encode_rtx(), real_to_target(), shift, subreg_size_lsb(), poly_int< N, C >::to_constant(), and vector_element_size.
Referenced by native_encode_rtx(), optimize_constant_pool(), output_constant_pool_2(), simplify_const_vector_subreg(), and simplify_immed_subreg().
Find the next insn after INSN that really does something. This routine does not look inside SEQUENCEs. After reload this also skips over standalone USE and CLOBBER insn.
References active_insn_p(), and NEXT_INSN().
Referenced by can_combine_p(), can_fallthru(), clear_hashed_info_until_next_barrier(), dbr_schedule(), fill_eager_delay_slots(), fill_simple_delay_slots(), fill_slots_from_thread(), first_active_target_insn(), follow_jumps(), label_before_next_insn(), optimize_skip(), own_thread_p(), peep2_attempt(), relax_delay_slots(), thread_prologue_and_epilogue_insns(), try_combine(), and try_merge_delay_insns().
References safe_as_a(), and XEXP.
Referenced by _succ_iter_cond(), add_cfis_to_fde(), add_equal_note(), add_insn_after_nobb(), add_store_equivs(), apply_opt_in_copies(), asan_clear_shadow(), assign_parm_setup_reg(), bb_note(), find_comparison_dom_walker::before_dom_children(), before_next_cfi_note(), block_jumps_and_fallthru(), build_def_use(), can_combine_p(), can_move_insns_across(), cfg_layout_can_duplicate_bb_p(), cfg_layout_can_merge_blocks_p(), cfg_layout_delete_block(), cfg_layout_duplicate_bb(), cfg_layout_merge_blocks(), cfg_layout_split_edge(), change_sp_offset(), cheap_bb_rtx_cost_p(), check_cond_move_block(), check_sibcall_argument_overlap(), cleanup_barriers(), combine_and_move_insns(), combine_instructions(), combine_reaching_defs(), combine_reload_insn(), combine_stack_adjustments_for_block(), combine_var_copies_in_loop_exit(), commit_one_edge_insertion(), compute_bb_for_insn(), cond_exec_process_if_block(), cond_exec_process_insns(), connect_traces(), construct_exit_block(), construct_init_block(), contains_call_div_mod(), contains_no_active_insn_p(), convert_to_eh_region_ranges(), copy_reg_eh_region_note_forward(), copyprop_hardreg_forward_1(), count_bb_insns(), create_basic_block_structure(), create_cands(), create_pseudo_cfg(), cse_cc_succs(), cse_change_cc_mode_insns(), cse_condition_code_reg(), curr_insn_transform(), dbr_schedule(), dead_or_predicable(), debug_rtx_find(), debug_rtx_list(), debug_rtx_range(), decompose_multiword_subregs(), decrease_live_ranges_number(), delete_address_reloads(), delete_address_reloads_1(), delete_dead_jumptables(), delete_for_peephole(), delete_from_delay_slot(), delete_insn(), delete_insn_and_edges(), delete_noop_moves(), delete_output_reload(), delete_related_insns(), delete_trivially_dead_insns(), delete_vta_debug_insns(), discover_loops(), distribute_links(), doloop_optimize(), doloop_valid_p(), dump_rtl_slim(), duplicate_insn_chain(), eliminate_partially_redundant_load(), emit_barrier_after_bb(), emit_debug_insn(), emit_inc_dec_insn_before(), emit_input_reload_insns(), emit_insn(), emit_insn_after_1(), emit_jump_insn(), emit_libcall_block_1(), emit_move_list(), emit_moves(), emit_note_insn_var_location(), emit_output_reload_insns(), emit_pattern_after_setloc(), emit_pattern_before_noloc(), emit_pattern_before_setloc(), emit_to_new_bb_before(), end_ifcvt_sequence(), expand_binop_directly(), expand_builtin_apply(), expand_builtin_apply_args(), expand_case(), expand_debug_locations(), expand_doubleword_divmod(), expand_doubleword_mod(), expand_function_end(), expand_gimple_basic_block(), expand_gimple_cond(), expand_gimple_tailcall(), expand_sjlj_dispatch_table(), expand_unop_direct(), fill_eager_delay_slots(), fill_simple_delay_slots(), final(), final_1(), final_scan_insn_1(), final_start_function_1(), find_active_insn_after(), find_bb_boundaries(), find_cond_trap(), find_jump_block(), find_moveable_pseudos(), find_reload_regno_insns(), find_shift_sequence(), find_single_use(), find_split_point(), first_active_insn(), first_insn_after_basic_block_note(), fix_crossing_unconditional_branches(), fixup_abnormal_edges(), fixup_debug_insns(), fixup_eh_region_note(), fixup_reorder_chain(), fixup_tail_calls(), flow_find_head_matching_sequence(), follow_jumps(), force_nonfallthru_and_redirect(), free_bb_for_insn(), gen_reload(), get_bb_avail_insn(), get_some_local_dynamic_name(), function_reader::handle_insn_uids(), inherit_reload_reg(), init_eliminable_invariants(), init_label_info(), insert_insn_end_basic_block(), insert_insn_start_basic_block(), insert_insn_start_basic_block(), inside_basic_block_p(), insn_current_reference_address(), instantiate_virtual_regs(), internal_arg_pointer_based_exp_scan(), ira_update_equiv_info_by_shuffle_insn(), iv_analyze(), jump_table_for_label(), leaf_function_p(), lra_process_new_insns(), lra_split_hard_reg_for(), make_edges(), make_return_insns(), mark_all_labels(), mark_constant_pool(), mark_referenced_resources(), maybe_cleanup_end_of_block(), maybe_clear_subreg_promoted_p(), maybe_dump_rtl_for_gimple_stmt(), maybe_emit_unop_insn(), memref_used_between_p(), merge_blocks_move_successor_nojumps(), merge_if_block(), modified_between_p(), next_active_insn(), next_active_insn_bb(), next_insn(), next_insn_no_annul(), next_non_note_insn_var_location(), next_nondebug_insn(), next_nonnote_insn(), next_nonnote_nondebug_insn(), next_nonnote_nondebug_insn_bb(), next_real_insn(), next_real_nondebug_insn(), no_labels_between_p(), noce_convert_multiple_sets(), noce_convert_multiple_sets_1(), noce_get_alt_condition(), note_add_store(), own_thread_p(), function_reader::parse_insn(), peep2_attempt(), peephole2_optimize(), rtx_writer::print_rtl(), print_rtl_with_bb(), print_rtx_function(), process_address_1(), propagate_for_debug(), push_to_sequence(), record_effective_endpoints(), record_insns(), reemit_insn_block_notes(), reg_killed_on_edge(), reg_killed_on_edge(), reg_scan(), reg_set_between_p(), reg_used_between_p(), reg_used_on_edge(), relax_delay_slots(), reload(), reload_as_needed(), reload_cse_move2add(), remove_barriers_from_footer(), remove_insn(), remove_reachable_equiv_notes(), reorder_blocks_1(), reorder_insns(), reorder_insns_nobb(), replace_read(), replace_store_insn(), reposition_prologue_and_epilogue_notes(), reset_all_used_flags(), reset_subreg_promoted_p(), resolve_shift_zext(), rest_of_clean_state(), rtl_dump_bb(), rtl_flow_call_edges_add(), rtl_merge_blocks(), rtl_split_block(), rtl_split_edge(), rtl_tidy_fallthru_edge(), rtl_verify_bb_insns(), rtl_verify_bb_layout(), rtl_verify_bb_pointers(), rtl_verify_fallthru(), save_call_clobbered_regs(), scan_loop(), scan_trace(), seq_cost(), set_insn_locations(), set_last_insn(), set_new_first_and_last_insn(), set_nothrow_function_flags(), setup_sp_offset(), shorten_branches(), sjlj_emit_function_enter(), sjlj_emit_function_exit(), sjlj_mark_call_sites(), skip_consecutive_labels(), skip_insns_after_block(), spill_hard_reg_in_range(), spill_pseudos(), split_all_insns(), split_all_insns_noflow(), split_insn(), split_reg(), switch_text_sections_between_p(), thread_jump(), thread_prologue_and_epilogue_insns(), try_combine(), try_crossjump_to_edge(), try_head_merge_bb(), try_optimize_cfg(), try_redirect_by_replacing_jump(), try_shrink_wrapping(), try_split(), unique_locus_on_edge_between_p(), unlink_insn_chain(), unshare_all_rtl_again(), unshare_all_rtl_in_chain(), update_bb_for_insn_chain(), update_cfg_for_uncondjump(), update_equiv_regs(), validate_equiv_mem(), verify_insn_chain(), verify_rtl_sharing(), and vt_stack_adjustments().
Return the next insn. If it is a SEQUENCE, return the first insn of the sequence.
References as_a(), GET_CODE, NEXT_INSN(), NONJUMP_INSN_P, and PATTERN().
Referenced by collect_fn_hard_reg_usage(), constprop_register(), emit_notes_in_bb(), find_reload_regno_insns(), gen_rtx_INSN(), get_first_nonnote_insn(), insert_insn_start_basic_block(), mark_target_live_regs(), peephole2_optimize(), process_insn_equiv_class(), record_effective_endpoints(), and tablejump_p().
Return the next insn after INSN that is not a DEBUG_INSN. This routine does not look inside SEQUENCEs.
References DEBUG_INSN_P, and NEXT_INSN().
Referenced by constprop_register().
Return the next insn after INSN that is not a NOTE. This routine does not look inside SEQUENCEs.
References NEXT_INSN(), and NOTE_P.
Referenced by clear_hashed_info_until_next_barrier(), fill_simple_delay_slots(), fill_slots_from_thread(), find_basic_block(), fix_reg_dead_note(), init_resource_info(), keep_with_call_p(), merge_blocks_move_predecessor_nojumps(), optimize_skip(), try_merge_delay_insns(), and update_reg_dead_notes().
Return the next insn after INSN that is not a NOTE nor DEBUG_INSN. This routine does not look inside SEQUENCEs.
References DEBUG_INSN_P, NEXT_INSN(), and NOTE_P.
Referenced by distribute_notes(), find_moveable_pseudos(), reload_cse_move2add(), rtl_verify_bb_layout(), rtx_renumbered_equal_p(), try_combine(), try_redirect_by_replacing_jump(), and update_cfg_for_uncondjump().
Return the next insn after INSN that is not a NOTE nor DEBUG_INSN, but stop the search before we enter another basic block. This routine does not look inside SEQUENCEs.
References DEBUG_INSN_P, NEXT_INSN(), NOTE_INSN_BASIC_BLOCK_P, NOTE_P, and NULL.
Referenced by get_last_bb_insn().
Return the next INSN, CALL_INSN, JUMP_INSN or DEBUG_INSN after INSN; or 0, if there is none. This routine does not look inside SEQUENCEs.
References INSN_P, and NEXT_INSN().
Referenced by decrease_live_ranges_number(), expand_gimple_stmt(), and mark_transaction_restart_calls().
Return the next INSN, CALL_INSN or JUMP_INSN after INSN; or 0, if there is none. This routine does not look inside SEQUENCEs.
References NEXT_INSN(), NONDEBUG_INSN_P, and safe_as_a().
Referenced by fill_simple_delay_slots(), and relax_delay_slots().
Return true if in between BEG and END, exclusive of BEG and END, there is no CODE_LABEL insn.
References end(), LABEL_P, and NEXT_INSN().
Referenced by fill_simple_delay_slots(), and relax_delay_slots().
Return true if X is an address that is known to not be zero.
References arg_pointer_rtx, CONST_INT_P, CONSTANT_P, fixed_regs, frame_pointer_rtx, GET_CODE, hard_frame_pointer_rtx, INTVAL, nonzero_address_p(), pic_offset_table_rtx, stack_pointer_rtx, SYMBOL_REF_WEAK, VIRTUAL_REGISTER_P, and XEXP.
Referenced by nonzero_address_p(), and simplify_const_relational_operation().
|
extern |
References cached_nonzero_bits(), GET_MODE, GET_MODE_MASK, is_a(), and NULL_RTX.
Referenced by combine_simplify_rtx(), evaluate_stmt(), exact_int_to_float_conversion_p(), expand_compound_operation(), extend_mask(), extended_count(), find_split_point(), force_int_to_mode(), force_to_mode(), get_default_value(), if_then_else_cond(), intersect_range_with_nonzero_bits(), make_compound_operation_int(), make_extraction(), make_field_assignment(), num_sign_bit_copies1(), record_value_for_reg(), simplify_and_const_int_1(), simplify_context::simplify_binary_operation_1(), simplify_compare_const(), simplify_comparison(), simplify_const_relational_operation(), simplify_if_then_else(), simplify_context::simplify_relational_operation_1(), simplify_set(), simplify_shift_const_1(), simplify_context::simplify_unary_operation_1(), try_combine(), try_widen_shift_mode(), and update_rsp_from_reg_equal().
Return true if an insn consists only of SETs, each of which only sets a value to itself.
References COND_EXEC_CODE, GET_CODE, i, INSN_CODE, NOOP_MOVE_INSN_CODE, set_of_data::pat, PATTERN(), SET, set_noop_p(), XVECEXP, and XVECLEN.
Referenced by copyprop_hardreg_forward_1(), delete_noop_moves(), delete_unmarked_insns(), distribute_notes(), and find_rename_reg().
Call FUN on each register or MEM that is stored into or clobbered by X. (X would be the pattern of an insn). DATA is an arbitrary pointer, ignored by note_stores, but passed to FUN. FUN receives three arguments: 1. the REG, MEM or PC being stored in or clobbered, 2. the SET or CLOBBER rtx that does the store, 3. the pointer DATA provided to note_stores. If the item being stored in or clobbered is a SUBREG of a hard register, the SUBREG will be passed.
References COND_EXEC_CODE, GET_CODE, i, note_pattern_stores(), REG_P, REGNO, SET, SET_DEST, SUBREG_REG, XEXP, XVECEXP, and XVECLEN.
Referenced by cselib_record_sets(), note_pattern_stores(), note_stores(), reload(), set_of(), single_set_gcse(), try_combine(), and update_equiv_regs().
|
extern |
Same, but for an instruction. If the instruction is a call, include any CLOBBERs in its CALL_INSN_FUNCTION_USAGE.
References CALL_INSN_FUNCTION_USAGE, CALL_P, GET_CODE, note_pattern_stores(), PATTERN(), and XEXP.
Referenced by add_with_sets(), adjust_insn(), assign_parm_setup_reg(), build_def_use(), calculate_loop_reg_pressure(), can_move_insns_across(), combine_instructions(), compute_hash_table_work(), copyprop_hardreg_forward_1(), delete_trivially_dead_insns(), doloop_optimize(), emit_inc_dec_insn_before(), emit_libcall_block_1(), emit_output_reload_insns(), expand_atomic_compare_and_swap(), find_all_hard_reg_sets(), find_first_parameter_load(), init_alias_analysis(), insert_one_insn(), insn_invalid_p(), kill_clobbered_values(), likely_spilled_retval_p(), load_killed_in_block_p(), load_killed_in_block_p(), mark_nonreg_stores(), mark_target_live_regs(), memory_modified_in_insn_p(), record_dead_and_set_regs(), record_last_mem_set_info_common(), record_opr_changes(), reg_dead_at_p(), reload_as_needed(), reload_combine(), reload_cse_move2add_invalidate(), replace_read(), save_call_clobbered_regs(), setup_save_areas(), simplify_using_initial_values(), try_shrink_wrapping(), and validate_equiv_mem().
Like notes_stores, but call FUN for each expression that is being referenced in PBODY, a pointer to the PATTERN of an insn. We only call FUN for each expression, not any interior subexpressions. FUN receives a pointer to the expression and the DATA passed to this function. Note that this is not quite the same test as that done in reg_referenced_p since that considers something as being referenced if it is being partially set, while we do not.
References ASM_OPERANDS_INPUT, ASM_OPERANDS_INPUT_LENGTH, COND_EXEC_CODE, COND_EXEC_TEST, GET_CODE, i, MEM_P, note_uses(), note_uses(), PATTERN(), SET, SET_DEST, SET_SRC, TRAP_CONDITION, XEXP, XVECEXP, and XVECLEN.
Referenced by add_with_sets(), adjust_insn(), bypass_block(), combine_instructions(), copyprop_hardreg_forward_1(), cprop_insn(), find_call_stack_args(), insert_one_insn(), local_cprop_pass(), note_uses(), scan_insn(), try_shrink_wrapping(), and validate_replace_src_group().
|
extern |
References cached_num_sign_bit_copies, GET_MODE, is_a(), and NULL_RTX.
Referenced by combine_simplify_rtx(), exact_int_to_float_conversion_p(), extended_count(), force_int_to_mode(), if_then_else_cond(), nonzero_bits1(), record_value_for_reg(), simplify_compare_const(), simplify_comparison(), simplify_const_relational_operation(), simplify_if_then_else(), simplify_set(), simplify_shift_const_1(), simplify_context::simplify_unary_operation_1(), truncated_to_mode(), try_widen_shift_mode(), and update_rsp_from_reg_equal().
Return true if SYMBOL is a SYMBOL_REF and OFFSET + SYMBOL points to somewhere in the same object or object_block as SYMBOL.
References CONSTANT_POOL_ADDRESS_P, GET_CODE, GET_MODE_SIZE(), get_pool_mode(), int_size_in_bytes(), SYMBOL_REF_BLOCK, SYMBOL_REF_BLOCK_OFFSET, SYMBOL_REF_DECL, SYMBOL_REF_HAS_BLOCK_INFO_P, and TREE_TYPE.
Return true if INSN is a jump that only transfers control and nothing more.
References GET_CODE, JUMP_P, NULL, SET_DEST, SET_SRC, side_effects_p(), and single_set().
Referenced by add_test(), bb_valid_for_noce_process_p(), bypass_conditional_jumps(), cfg_layout_can_merge_blocks_p(), cfg_layout_redirect_edge_and_branch(), check_cond_move_block(), check_simple_exit(), cond_exec_process_if_block(), constprop_register(), dead_or_predicable(), find_cond_trap(), find_if_case_1(), find_if_case_2(), fixup_reorder_chain(), flow_find_cross_jump(), follow_jumps(), noce_find_if_block(), outgoing_edges_match(), rtl_block_empty_p(), rtl_can_merge_blocks(), rtl_can_remove_branch_p(), rtl_tidy_fallthru_edge(), simplify_using_initial_values(), thread_jump(), try_optimize_cfg(), and try_redirect_by_replacing_jump().
|
extern |
Return subword OFFSET of operand OP. The word number, OFFSET, is interpreted as the word number starting at the low-order address. OFFSET 0 is the low-order word if not WORDS_BIG_ENDIAN, otherwise it is the high-order word. If we cannot extract the required word, we return zero. Otherwise, an rtx corresponding to the requested word will be returned. VALIDATE_ADDRESS is nonzero if the address should be validated. Before reload has completed, a valid address will always be returned. After reload, if a valid address cannot be returned, we return zero. If VALIDATE_ADDRESS is zero, we simply form the required address; validating it is the responsibility of the caller. MODE is the mode of OP in case it is a CONST_INT. ??? This is still rather broken for some cases. The problem for the moment is that all callers of this thing provide no 'goal mode' to tell us to work with. This exists because all callers were written in a word based SUBREG world. Now use of this function can be deprecated by simplify_subreg in most cases.
References adjust_address_nv, const0_rtx, gcc_assert, GET_MODE, GET_MODE_SIZE(), maybe_gt, MEM_ADDR_SPACE, MEM_P, reload_completed, replace_equiv_address(), simplify_gen_subreg(), strict_memory_address_addr_space_p(), word_mode, and XEXP.
Referenced by convert_mode_scalar(), copy_blkmode_from_reg(), copy_blkmode_to_reg(), emit_move_multi_word(), expand_absneg_bit(), expand_binop(), expand_copysign_bit(), expand_doubleword_bswap(), expand_doubleword_mult(), expand_unop(), extract_integral_bit_field(), find_equiv_reg(), move_block_from_reg(), and operand_subword_force().
|
extern |
In emit-rtl.cc
Similar to `operand_subword', but never return 0. If we can't extract the required subword, put OP into a register and try again. The second attempt must succeed. We always validate the address in this case. MODE is the mode of OP, in case it is CONST_INT.
References copy_to_reg(), force_reg(), gcc_assert, operand_subword(), and REG_P.
Referenced by copy_blkmode_from_reg(), copy_blkmode_to_reg(), do_jump_by_parts_equality_rtx(), do_jump_by_parts_greater_rtx(), do_jump_by_parts_zero_rtx(), emit_move_multi_word(), emit_push_insn(), expand_absneg_bit(), expand_binop(), expand_builtin_signbit(), expand_copysign_absneg(), expand_copysign_bit(), expand_doubleword_bswap(), expand_doubleword_mod(), expand_doubleword_mult(), expand_doubleword_parity(), expand_doubleword_popcount(), expand_unop(), extract_split_bit_field(), move_block_to_reg(), store_integral_bit_field(), store_split_bit_field(), and store_unaligned_arguments_into_pseudos().
Return an rtx representing a reference to constant data in memory for the constant expression EXP. If assembler code for such a constant has already been output, return an rtx to refer to it. Otherwise, output such a constant in memory and generate an rtx for it. If DEFER is nonzero, this constant can be deferred and output only if referenced in the function after all optimizations. `const_desc_table' records which constants already have label strings.
References add_constant_to_table(), exp(), maybe_output_constant_def_contents(), and constant_descriptor_tree::rtl.
Referenced by assemble_crc_table(), expand_expr_constant(), make_decl_rtl(), and output_addressed_constants().
Output dependence: X is written after store in MEM takes place.
References NULL_RTX, and write_dependence_p().
Referenced by memory_modified_1(), and store_killed_in_pat().
Return true if X is a paradoxical subreg, false otherwise.
References GET_CODE, GET_MODE, paradoxical_subreg_p(), and SUBREG_REG.
|
inline |
Return true if a subreg with the given outer and inner modes is paradoxical.
References gcc_checking_assert, GET_MODE_PRECISION(), and maybe_gt.
Referenced by alter_subreg(), insn_propagation::apply_to_rvalue_1(), bbs_ok_for_cmove_arith(), byte_lowpart_offset(), change_zero_ext(), choose_reload_regs(), combine_reaching_defs(), compute_reload_subreg_offset(), contains_paradoxical_subreg_p(), cse_insn(), curr_insn_transform(), eliminate_regs_1(), elimination_effects(), equiv_constant(), expand_mult_const(), ext_dce_process_sets(), ext_dce_process_uses(), find_reloads(), find_reloads_subreg_address(), force_operand(), force_to_mode(), forward_propagate_subreg(), gen_lowpart_for_combine(), general_operand(), get_last_value(), ira_build_conflicts(), lra_eliminate_regs_1(), make_extraction(), make_field_assignment(), move_plus_up(), narrower_subreg_mode(), num_sign_bit_copies1(), paradoxical_subreg_p(), push_reload(), push_secondary_reload(), record_dead_and_set_regs_1(), record_jump_cond(), reg_subword_p(), resolve_clobber(), rtx_equal_for_field_assignment_p(), set_nonzero_bits_and_sign_copies(), set_paradoxical_subreg(), set_reg_attrs_from_value(), simplify_context::simplify_binary_operation_1(), simplify_comparison(), simplify_const_vector_subreg(), simplify_gen_subreg_concatn(), simplify_immed_subreg(), simplify_operand_subreg(), simplify_set(), simplify_context::simplify_subreg(), simplify_context::simplify_ternary_operation(), simplify_context::simplify_unary_operation_1(), split_reg(), store_integral_bit_field(), strip_paradoxical_subreg(), subreg_memory_offset(), and track_loc_p().
Likewise return true if X is a subreg that is smaller than the inner register. Use read_modify_subreg_p to test whether writing to such a subreg preserves any part of the inner register.
References GET_CODE, GET_MODE, partial_subreg_p(), and SUBREG_REG.
|
inline |
Return true if a subreg of mode OUTERMODE would only access part of an inner register with mode INNERMODE. The other bits of the inner register would then be "don't care" on read. The behavior for writes depends on REGMODE_NATURAL_SIZE; bits in the same REGMODE_NATURAL_SIZE-d chunk would be clobbered but other bits would be preserved.
References gcc_checking_assert, and GET_MODE_PRECISION().
Referenced by alter_reg(), assign_parm_setup_reg(), combinable_i3pat(), copy_value(), copyprop_hardreg_forward_1(), create_insn_allocnos(), cse_insn(), cselib_lookup_1(), curr_insn_transform(), eliminate_regs_1(), expand_call(), extract_bit_field_using_extv(), find_reloads(), find_reloads_subreg_address(), force_to_mode(), gen_lowpart_or_truncate(), lra_substitute_pseudo(), lra_update_biggest_mode(), make_compound_operation_int(), make_extraction(), make_field_assignment(), match_reload(), maybe_mode_change(), mode_change_ok(), move_deaths(), partial_subreg_p(), push_reload(), record_dead_and_set_regs_1(), record_jump_cond(), record_truncated_value(), reg_truncated_to_mode(), save_call_clobbered_regs(), scan_paradoxical_subregs(), simplify_operand_subreg(), simplify_context::simplify_relational_operation_1(), simplify_context::simplify_unary_operation_1(), and wider_subreg_mode().
The body of an insn.
References XEXP.
Referenced by active_insn_p(), add_stores(), generic_subrtx_iterator< T >::add_subrtxes_to_queue(), add_with_sets(), adjust_insn(), apply_opt_in_copies(), insn_propagation::apply_to_rvalue_1(), arithmetic_flags_clobber_p(), attempt_change(), bb_is_just_return(), block_has_only_trap(), block_jumps_and_fallthru(), build_def_use(), bypass_block(), bypass_conditional_jumps(), calculate_equiv_gains(), calculate_loop_reg_pressure(), calculate_needs_all_insns(), call_from_call_insn(), can_assign_to_reg_without_clobbers_p(), can_combine_p(), can_eliminate_compare(), can_merge_compare_into_arith(), can_move_insns_across(), can_replace_by(), can_split_parallel_of_n_reg_sets(), can_throw_external(), canonicalize_insn(), cheap_bb_rtx_cost_p(), check_for_inc_dec(), check_for_inc_dec_1(), check_for_label_ref(), check_rtl(), check_sibcall_argument_overlap(), combinable_i3pat(), combine_and_move_insns(), combine_instructions(), combine_reg_notes(), combine_stack_adjustments_for_block(), combine_validate_cost(), compare_and_jump_seq(), compute_can_copy(), compute_hash_table(), compute_ld_motion_mems(), compute_regs_asm_clobbered(), computed_jump_p(), cond_exec_process_insns(), condjump_in_parallel_p(), condjump_p(), contains(), contains_call_div_mod(), control_flow_insn_p(), convert_to_eh_region_ranges(), copyprop_hardreg_forward_1(), count_reg_usage(), cprop_insn(), create_bb_allocnos(), create_log_links(), create_trace_edges(), cse_change_cc_mode_insn(), cse_condition_code_reg(), cse_insn(), cse_prescan_path(), cselib_record_sets(), curr_insn_transform(), dbr_schedule(), dead_or_set_regno_p(), decompose_multiword_subregs(), decrease_live_ranges_number(), deletable_insn_p(), delete_address_reloads_1(), delete_dead_insn(), delete_from_delay_slot(), delete_move_and_clobber(), delete_output_reload(), delete_prior_computation(), delete_related_insns(), delete_trivially_dead_insns(), delete_unmarked_insns(), df_get_call_refs(), df_insn_refs_collect(), distribute_links(), distribute_notes(), do_local_cprop(), do_output_reload(), do_remat(), doloop_condition_get(), duplicate_insn_chain(), dwarf2out_frame_debug(), eh_returnjump_p(), eliminate_partially_redundant_load(), eliminate_partially_redundant_loads(), eliminate_regs_in_insn(), eliminate_regs_in_insn(), elimination_costs_in_insn(), emit_copy_of_insn_after(), emit_input_reload_insns(), emit_jump_table_data(), emit_move_insn_1(), emit_output_reload_insns(), emit_reload_insns(), equiv_can_be_consumed_p(), expand_gimple_stmt(), ext_dce_process_bb(), extract_insn(), failed_reload(), fill_simple_delay_slots(), fill_slots_from_thread(), final_scan_insn_1(), find_args_size_adjust(), find_call_stack_args(), find_cond_trap(), find_dummy_reload(), find_end_label(), find_equiv_reg(), find_flags_uses_in_insn(), find_inc(), find_invariant_insn(), find_memory(), find_moveable_pseudos(), find_reg_equal_equiv_note(), find_reload_regno_insns(), find_reloads(), find_reloads_address_1(), find_sets_in_insn(), find_single_use(), find_split_point(), pair_fusion::find_trailing_add(), first_hazard_after(), fix_crossing_conditional_branches(), fix_crossing_unconditional_branches(), fix_reg_dead_note(), fix_up_fall_thru_edges(), fixup_reorder_chain(), flow_active_insn_p(), flow_find_cross_jump(), follow_jumps(), force_nonfallthru_and_redirect(), forward_propagate_and_simplify(), forward_propagate_into(), free_load_extend(), pair_fusion_bb_info::fuse_pair(), get_attr_length_1(), get_avail_load_store_reg(), get_branch_condition(), get_call_rtx_from(), rtx_jump_table_data::get_data_mode(), get_eh_region_and_lp_from_rtx(), get_first_nonnote_insn(), rtx_jump_table_data::get_labels(), get_last_nonnote_insn(), get_some_local_dynamic_name(), get_sub_rtx(), hash_scan_insn(), hash_scan_insn(), hash_scan_set(), if_test_bypass_p(), inherit_in_ebb(), init_alias_analysis(), init_eliminable_invariants(), init_elimination(), init_expr_target(), init_label_info(), init_subregs_of_mode(), insert_insn_end_basic_block(), insert_insn_start_basic_block(), insert_one_insn(), insn_cost(), insn_could_throw_p(), insn_invalid_p(), insn_live_p(), insn_nothrow_p(), insn_stack_adjust_offset_pre_post(), instantiate_virtual_regs(), instantiate_virtual_regs_in_insn(), interesting_dest_for_shprep(), invalidate_from_clobbers(), invalidate_from_sets_and_clobbers(), ira_nullify_asm_goto(), kill_autoinc_value(), last_active_insn(), latest_hazard_before(), leaf_function_p(), likely_spilled_retval_p(), link_insn_into_chain(), load_modified_by_store_p(), local_cprop_pass(), location_for_asm(), lra_asm_insn_error(), lra_constraints(), lra_delete_dead_insn(), lra_final_code_change(), lra_process_new_insns(), lra_set_insn_recog_data(), lra_split_hard_reg_for(), lra_update_insn_recog_data(), lra_update_insn_regno_info(), make_call_insn_raw(), make_debug_insn_raw(), make_edges(), make_insn_raw(), make_jump_insn_raw(), make_return_insns(), mark_all_labels(), mark_constants(), mark_constants_in_pattern(), mark_jump_label(), mark_jump_label_1(), mark_referenced_resources(), mark_set_resources(), mark_target_live_regs(), match_reload(), maybe_add_nop_after_section_switch(), maybe_fix_stack_asms(), memref_used_between_p(), merge_if_block(), merge_in_block(), move2add_use_add2_insn(), move_insn_for_shrink_wrap(), move_unallocated_pseudos(), multiple_sets(), need_fake_edge_p(), next_insn(), next_insn_no_annul(), no_conflict_move_test(), noce_convert_multiple_sets_1(), noce_emit_all_but_last(), noce_get_alt_condition(), noce_try_cmove_arith(), noop_move_p(), note_add_store(), note_stores(), note_uses(), old_insns_match_p(), one_cprop_pass(), operand_to_remat(), optimize_skip(), outgoing_edges_match(), own_thread_p(), patch_jump_insn(), pc_set(), peep2_attempt(), peephole2_optimize(), pre_insert_copy_insn(), previous_insn(), print_insn(), process_bb_lives(), process_bb_node_lives(), pair_fusion::process_block(), process_insn_for_elimination(), process_invariant_for_inheritance(), purge_dead_edges(), push_reload(), recog_for_combine_1(), recog_memoized(), record_out_operands(), record_stack_refs(), record_store(), redirect_exp_1(), redirect_jump_1(), redirect_with_delay_slots_safe_p(), redundant_insn(), reemit_insn_block_notes(), reg_scan(), reg_set_p(), reg_used_between_p(), reg_used_on_edge(), regno_clobbered_p(), relax_delay_slots(), reload(), reload_as_needed(), reload_combine(), reload_combine_recognize_const_pattern(), reload_combine_recognize_pattern(), reload_cse_move2add(), reload_cse_move2add_invalidate(), reload_cse_simplify(), remove_init_insns(), remove_insn(), replace_label(), reset_all_used_flags(), reset_insn_used_flags(), reset_subreg_promoted_p(), resolve_debug(), rest_of_clean_state(), return_insn_p(), returnjump_p(), rtl_split_edge(), save_call_clobbered_regs(), scan_insn(), scan_loop(), scan_one_insn(), scan_rtx(), scan_rtx_reg(), scan_trace(), set_for_reg_notes(), set_label_offsets(), set_nonzero_bits_and_sign_copies(), set_of(), set_paradoxical_subreg(), set_return_jump_label(), set_unique_reg_note(), setup_sp_offset(), shorten_branches(), simplejump_or_return_p(), simplejump_p(), simplify_set(), single_set(), single_set_for_csa(), single_set_gcse(), spill_failure(), spill_pseudos(), split_insn(), steal_delay_list_from_fallthrough(), steal_delay_list_from_target(), stop_search_p(), store_data_bypass_p(), store_data_bypass_p_1(), store_killed_in_insn(), thread_jump(), thread_prologue_and_epilogue_insns(), pair_fusion_bb_info::track_access(), transform_ifelse(), try_apply_stack_adjustment(), try_back_substitute_reg(), try_combine(), try_eliminate_compare(), pair_fusion_bb_info::try_fuse_pair(), try_fwprop_subst_pattern(), try_merge_compare(), try_merge_delay_insns(), try_optimize_cfg(), pair_fusion::try_promote_writeback(), try_shrink_wrapping(), try_split(), rtx_properties::try_to_add_insn(), undo_optional_reloads(), unshare_all_rtl_again(), unshare_all_rtl_in_chain(), update_equiv_regs(), update_inc_notes(), update_ld_motion_stores(), update_reg_dead_notes(), validate_replace_rtx(), validate_replace_rtx_group(), validate_replace_src_group(), validate_simplify_insn(), verify_changes(), verify_insn_sharing(), verify_rtl_sharing(), and vt_initialize().
Calculate the rtx_cost of a single instruction pattern. A return value of zero indicates an instruction pattern without a known cost.
References COSTS_N_INSNS, GET_CODE, GET_MODE, i, MAX, NULL_RTX, SET, SET_DEST, SET_SRC, set_src_cost(), XVECEXP, and XVECLEN.
Referenced by bb_valid_for_noce_process_p(), and insn_cost().
Return set of PC, otherwise NULL.
References GET_CODE, JUMP_P, NULL_RTX, PATTERN(), SET, SET_DEST, and XVECEXP.
Referenced by any_condjump_p(), any_uncondjump_p(), bypass_block(), compare_and_jump_seq(), cond_exec_get_condition(), condjump_label(), cprop_jump(), get_condition(), indirect_jump_optimize(), invert_jump_1(), maybe_propagate_label_ref(), noce_emit_store_flag(), noce_get_alt_condition(), noce_get_condition(), outgoing_edges_match(), record_jump_equiv(), reload_cse_regs_1(), and thread_jump().
|
extern |
Return an rtx for the sum of X and the integer C, given that X has mode MODE. INPLACE is true if X can be modified inplace or false if it must be treated as immutable.
References wi::add(), CASE_CONST_SCALAR_INT, const0_rtx, CONST_POLY_INT_P, const_poly_int_value(), CONSTANT_P, CONSTANT_POOL_ADDRESS_P, copy_rtx(), find_constant_term_loc(), force_const_mem(), gcc_assert, gen_int_mode(), gen_lowpart, GET_CODE, GET_MODE, GET_MODE_INNER, get_pool_constant(), get_pool_mode(), immed_wide_int_const(), known_eq, memory_address_p, plus_constant(), RTX_CODE, shared_const_p(), XEXP, and y.
Referenced by addr_side_effect_eval(), adjust_address_1(), adjust_mems(), allocate_dynamic_stack_space(), anti_adjust_stack_and_probe(), anti_adjust_stack_and_probe_stack_clash(), asan_clear_shadow(), asan_emit_stack_protection(), assign_stack_local_1(), autoinc_split(), check_mem_read_rtx(), combine_simplify_rtx(), compute_argument_addresses(), compute_cfa_pointer(), cselib_init(), cselib_record_sp_cfa_base_equiv(), cselib_reset_table(), cselib_subst_to_values(), pieces_addr::decide_autoinc(), default_memtag_add_tag(), drop_writeback(), eliminate_regs_1(), eliminate_regs_in_insn(), eliminate_regs_in_insn(), emit_library_call_value_1(), emit_move_resolve_push(), emit_push_insn(), equiv_address_substitution(), expand_builtin_adjust_descriptor(), expand_builtin_apply(), expand_builtin_apply_args_1(), expand_builtin_extract_return_addr(), expand_builtin_frob_return_addr(), expand_builtin_longjmp(), expand_builtin_nonlocal_goto(), expand_builtin_return_addr(), expand_builtin_setjmp_setup(), expand_builtin_stack_address(), expand_builtin_stpcpy_1(), expand_builtin_strub_leave(), expand_builtin_strub_update(), expand_builtin_update_setjmp_buf(), expand_call(), expand_debug_expr(), expand_divmod(), expand_expr_addr_expr_1(), expand_expr_real_2(), expand_movstr(), expand_one_stack_var_at(), extract_writebacks(), find_reg_offset_for_const(), find_reloads_address(), fixup_debug_use(), fold_rtx(), force_int_to_mode(), form_sum(), form_sum(), pair_fusion_bb_info::fuse_pair(), get_addr(), get_dynamic_stack_size(), hwasan_emit_prologue(), hwasan_get_frame_extent(), init_alias_analysis(), init_reload(), insert_const_anchor(), instantiate_virtual_regs_in_rtx(), internal_arg_pointer_based_exp(), lra_eliminate_regs_1(), memory_load_overlap(), offsettable_address_addr_space_p(), plus_constant(), prepare_call_address(), prepare_call_arguments(), prepare_cmp_insn(), probe_stack_range(), push_block(), record_store(), round_push(), rtl_for_decl_location(), simplify_context::simplify_binary_operation_1(), simplify_context::simplify_plus_minus(), simplify_context::simplify_unary_operation_1(), sjlj_emit_function_enter(), sjlj_mark_call_sites(), store_expr(), try_apply_stack_adjustment(), try_store_by_multiple_pieces(), use_anchored_address(), use_related_value(), vt_add_function_parameter(), vt_canonicalize_addr(), and vt_initialize().
Return true if X is a scalar integer or a CONST_POLY_INT. The value can then be extracted using wi::to_poly_wide.
References CONST_POLY_INT_P, and CONST_SCALAR_INT_P.
Referenced by adjust_stack(), anti_adjust_stack(), assign_parm_find_stack_rtl(), clear_storage_hints(), combine_simplify_rtx(), compute_argument_addresses(), dwarf2out_frame_debug_expr(), eliminate_regs_in_insn(), address_reload_context::emit_autoinc(), emit_block_move_hints(), emit_note_insn_var_location(), emit_push_insn(), equiv_address_substitution(), expand_debug_expr(), fold_rtx(), force_int_to_mode(), form_sum(), get_addr(), init_alias_analysis(), instantiate_virtual_regs_in_insn(), internal_arg_pointer_based_exp(), lra_eliminate_regs_1(), mark_not_eliminable(), mem_might_overlap_already_clobbered_arg_p(), memrefs_conflict_p(), process_address_1(), push_block(), push_operand(), reduce_to_bit_field_precision(), rtx_addr_can_trap_p_1(), set_noop_p(), shared_const_p(), simplify_context::simplify_binary_operation_1(), simplify_const_binary_operation(), simplify_context::simplify_plus_minus(), store_expr(), strip_offset(), and vt_canonicalize_addr().
|
inline |
Return true if arbitrary value X is an integer constant that can be represented as a poly_int64. Store the value in *RES if so, otherwise leave it unmodified.
References poly_int< N, C >::coeffs, CONST_INT_P, CONST_POLY_INT_COEFFS, CONST_POLY_INT_P, wi::fits_shwi_p(), i, INTVAL, and NUM_POLY_INT_COEFFS.
|
extern |
After emitting to the outer-level insn chain, update the outer-level insn chain, and restore the previous saved state.
References end_sequence(), sequence_stack::first, get_insns(), get_last_insn(), get_topmost_sequence(), and sequence_stack::last.
Referenced by expand_builtin_apply_args(), expand_builtin_saveregs(), and get_arg_pointer_save_area().
Generate RTL to copy an EXP to REG and return it.
References emit_insn(), emit_move_insn(), end_sequence(), exp(), gcc_unreachable, general_operand(), get_insns(), GET_MODE, insn_invalid_p(), and start_sequence().
Referenced by process_insert_insn(), and replace_store_insn().
Find the last insn before INSN that really does something. This routine does not look inside SEQUENCEs. After reload this also skips over standalone USE and CLOBBER insn.
References active_insn_p(), and PREV_INSN().
Referenced by delete_dead_insn(), merge_blocks_move_successor_nojumps(), and relax_delay_slots().
Chain insns together in sequence.
For now these are split in two: an rvalue form: PREV_INSN/NEXT_INSN and an lvalue form: SET_NEXT_INSN/SET_PREV_INSN.
References safe_as_a(), and XEXP.
Referenced by add_insn_before_nobb(), attempt_change(), bb_valid_for_noce_process_p(), build_insn_chain(), can_combine_p(), can_merge_compare_into_arith(), can_move_insns_across(), cfg_layout_delete_block(), cleanup_barriers(), combine_instructions(), commit_one_edge_insertion(), cond_exec_find_if_block(), connect_traces(), copy_reg_eh_region_note_backward(), create_basic_block_structure(), cse_condition_code_reg(), dead_or_predicable(), debug_rtx_list(), delete_address_reloads(), delete_address_reloads_1(), delete_for_peephole(), delete_from_delay_slot(), delete_insn_chain(), delete_move_and_clobber(), delete_output_reload(), delete_related_insns(), delete_trivially_dead_insns(), discover_loops(), distribute_notes(), eliminate_partially_redundant_load(), emit_delay_sequence(), emit_input_reload_insns(), emit_libcall_block_1(), emit_library_call_value_1(), emit_moves(), emit_pattern_after(), emit_pattern_before(), emit_pattern_before_setloc(), emit_to_new_bb_before(), equivalent_reg_at_start(), expand_builtin_longjmp(), expand_builtin_nonlocal_goto(), expand_call(), expand_call_stmt(), expand_debug_locations(), expand_gimple_basic_block(), expand_gimple_cond(), expand_gimple_tailcall(), fill_simple_delay_slots(), final_scan_insn_1(), find_active_insn_before(), find_bb_boundaries(), find_call_crossed_cheap_reg(), find_call_stack_args(), find_end_label(), find_equiv_reg(), find_first_parameter_load(), find_moveable_store(), find_reload_regno_insns(), fixup_abnormal_edges(), fixup_args_size_notes(), fixup_partitions(), fixup_reorder_chain(), flow_find_cross_jump(), get_bb_avail_insn(), get_label_before(), inherit_in_ebb(), insert_insn_start_basic_block(), insn_current_reference_address(), label_before_next_insn(), last_active_insn(), last_call_insn(), likely_spilled_retval_p(), lra_process_new_insns(), make_return_insns(), mark_referenced_resources(), mark_target_live_regs(), maybe_add_nop_after_section_switch(), maybe_cleanup_end_of_block(), merge_blocks_move_predecessor_nojumps(), next_insn_no_annul(), noce_get_alt_condition(), noce_process_if_block(), outgoing_edges_match(), own_thread_p(), peep2_attempt(), peep2_update_life(), peephole2_optimize(), prev_active_insn(), prev_active_insn_bb(), prev_nondebug_insn(), prev_nonnote_insn(), prev_nonnote_nondebug_insn(), prev_nonnote_nondebug_insn_bb(), prev_real_insn(), prev_real_nondebug_insn(), previous_insn(), process_address_1(), purge_dead_edges(), push_insns(), record_effective_endpoints(), redundant_insn(), reg_dead_at_p(), relax_delay_slots(), reload_as_needed(), reload_combine(), remove_barriers_from_footer(), remove_inheritance_pseudos(), remove_insn(), reorder_insns(), reorder_insns_nobb(), reposition_prologue_and_epilogue_notes(), rtl_block_ends_with_call_p(), rtl_flow_call_edges_add(), rtl_merge_blocks(), rtl_split_block(), rtl_tidy_fallthru_edge(), rtl_verify_bb_insn_chain(), save_call_clobbered_regs(), set_first_insn(), shorten_branches(), simulate_backwards_to_point(), skip_insns_after_block(), split_insn(), store_killed_after(), store_killed_before(), thread_prologue_and_epilogue_insns(), trivially_empty_bb_p(), try_back_substitute_reg(), try_crossjump_to_edge(), try_head_merge_bb(), try_redirect_by_replacing_jump(), try_split(), unique_locus_on_edge_between_p(), unlink_insn_chain(), update_cfg_for_uncondjump(), update_ebb_live_info(), verify_insn_chain(), and walk_to_nondebug_insn().
Return the previous insn before INSN that is not a DEBUG_INSN. This routine does not look inside SEQUENCEs.
References DEBUG_INSN_P, and PREV_INSN().
Referenced by combine_and_move_insns(), doloop_condition_get(), expand_gimple_basic_block(), and try_forward_edges().
Return the previous insn before INSN that is not a NOTE. This routine does not look inside SEQUENCEs.
References NOTE_P, and PREV_INSN().
Referenced by assign_parm_setup_reg(), commit_one_edge_insertion(), delete_prior_computation(), fill_simple_delay_slots(), final_scan_insn_1(), find_basic_block(), get_label_before(), own_thread_p(), relax_delay_slots(), reversed_comparison_code_parts(), and set_label_offsets().
Return the previous insn before INSN that is not a NOTE nor DEBUG_INSN. This routine does not look inside SEQUENCEs.
References DEBUG_INSN_P, NOTE_P, and PREV_INSN().
Referenced by canonicalize_condition(), cleanup_barriers(), create_cands(), noce_get_alt_condition(), noce_process_if_block(), noce_try_abs(), and reload_combine_recognize_pattern().
Return the previous insn before INSN that is not a NOTE nor DEBUG_INSN, but stop the search before we enter another basic block. This routine does not look inside SEQUENCEs.
References DEBUG_INSN_P, NOTE_INSN_BASIC_BLOCK_P, NOTE_P, NULL, and PREV_INSN().
Referenced by find_bb_boundaries(), and setup_sp_offset().
Return the last INSN, CALL_INSN, JUMP_INSN or DEBUG_INSN before INSN; or 0, if there is none. This routine does not look inside SEQUENCEs.
References INSN_P, and PREV_INSN().
Referenced by add_var_loc_to_decl(), and lra_delete_dead_insn().
Return the last INSN, CALL_INSN or JUMP_INSN before INSN; or 0, if there is none. This routine does not look inside SEQUENCEs.
References NONDEBUG_INSN_P, and PREV_INSN().
Referenced by move_deaths(), and try_head_merge_bb().
Return the previous insn. If it is a SEQUENCE, return the last insn of the sequence.
References dyn_cast(), NONJUMP_INSN_P, PATTERN(), and PREV_INSN().
Referenced by get_last_nonnote_insn().
|
extern |
Print an rtx on the current line of FILE. Initially indent IND characters.
References NULL, and rtx_writer::print_rtx().
Referenced by canon_address(), check_mem_read_rtx(), cselib_lookup(), debug_reload_to_stream(), dump_cands(), dump_cselib_table(), dump_cselib_val(), expand_loc(), init_eliminable_invariants(), insert_insn_start_basic_block(), insert_store(), log_op_type(), main(), replace_store_insn(), try_fwprop_subst_note(), update_ld_motion_stores(), val_resolve(), and val_store().
|
extern |
References CONST_CAST_TREE, dump_flags, fputc(), print_generic_expr(), and TDF_SLIM.
Referenced by dump_attrs_list(), output_asm_operand_names(), rtx_writer::print_rtx(), rtx_writer::print_rtx_operand(), and rtx_writer::print_rtx_operand_code_r().
|
extern |
External entry point for printing a chain of insns starting with RTX_FIRST onto file OUTF. A blank line separates insns. If RTX_FIRST is not an insn, then it alone is printed, with no newline.
References NULL, and rtx_writer::print_rtl().
Referenced by analyze_insn_to_expand_var(), bypass_block(), cprop_insn(), cprop_jump(), df_print_note(), do_local_cprop(), dump_class(), dump_expr_hash_table_entry(), dump_hash_table(), dump_hash_table(), dump_iv_info(), eliminate_partially_redundant_load(), expansion_failed(), find_simple_exit(), iv_analyze_biv(), iv_analyze_def(), iv_analyze_op(), maybe_dump_rtl_for_gimple_stmt(), mem_loc_descriptor(), output_description(), print_ldst_list(), print_node(), print_store_motion_mems(), reorg_loops(), and update_ld_motion_stores().
|
extern |
Like print_rtx, except specify a file.
References NULL, and rtx_writer::print_rtl_single_with_indent().
Referenced by add_removable_extension(), assemble_crc_table(), combine_reaching_defs(), combine_set_extension(), cselib_expand_value_rtx_1(), delete_redundant_insns_1(), discover_loops(), dump_attrs_list(), dump_expr_hash_table_entry(), dump_onepart_variable_differences(), dump_var(), eliminate_partially_redundant_load(), ext_dce_try_optimize_insn(), final_scan_insn_1(), find_and_remove_re(), iv_analyze_def(), iv_analyze_op(), new_cselib_val(), print_rtl_with_bb(), print_rtx_insn_vec(), recog_for_combine_1(), rest_of_clean_state(), rtl_dump_bb(), split_live_ranges_for_shrink_wrap(), transform_ifelse(), try_fwprop_subst_pattern(), try_shrink_wrapping(), and vt_initialize().
|
extern |
|
extern |
Like print_rtl except without all the detail; for example, if RTX is a CONST_INT then print in decimal format.
References NULL, and rtx_writer::print_rtl().
Referenced by insert_part_to_rtx_on_edge(), insert_rtx_to_part_on_edge(), mark_reg_dependencies(), replace_read(), and store_modifies_mem_p().
|
extern |
Set up the insn chain starting with FIRST as the current sequence, saving the previously current one. See the documentation for start_sequence for more information about how to use this function.
References sequence_stack::first, last, NEXT_INSN(), set_first_insn(), set_last_insn(), and start_sequence().
Referenced by asan_emit_allocas_unpoison(), curr_insn_transform(), emit_input_reload_insns(), emit_output_reload_insns(), expand_builtin_return(), insert_insn_on_edge(), insert_move_for_subreg(), match_reload(), process_addr_reg(), and process_address_1().
Like push_to_sequence, but take the last insn as an argument to avoid looping through the list.
References sequence_stack::first, last, set_first_insn(), set_last_insn(), and start_sequence().
Referenced by assign_parm_setup_block(), assign_parm_setup_reg(), assign_parm_setup_stack(), assign_parms_unsplit_complex(), and expand_asm_stmt().
|
extern |
Set up the outer-level insn chain as the current sequence, saving the previously current one.
References sequence_stack::first, get_topmost_sequence(), sequence_stack::last, set_first_insn(), set_last_insn(), and start_sequence().
Referenced by expand_builtin_apply_args(), expand_builtin_saveregs(), and get_arg_pointer_save_area().
|
inline |
References PUT_MODE_RAW, REG_P, REGNO, and set_mode_and_regno().
Referenced by adjust_reg_mode(), apply_mode_iterator(), assign_parm_setup_block(), attempt_change(), can_assign_to_reg_without_clobbers_p(), can_compare_p(), compute_costs(), const_double_from_real_value(), const_fixed_from_fixed_value(), convert_debug_memory_address(), convert_memory_address_addr_space_1(), create_block_symbol(), cse_cc_succs(), cse_insn(), doloop_optimize(), expand_expr_real_1(), expand_function_end(), expand_load_lanes_optab_fn(), expand_return(), expand_store_lanes_optab_fn(), find_reloads(), find_reloads_address(), find_reloads_subreg_address(), find_reloads_toplev(), hard_function_value(), immed_double_const(), immed_wide_int_const(), immed_wide_int_const_1(), init_eliminable_invariants(), init_expmed_one_conv(), init_expmed_one_mode(), init_expr_target(), instantiate_virtual_regs_in_insn(), layout_decl(), new_cselib_val(), prefer_and_bit_test(), rtx_reader::read_rtx_variadic(), reg_save_code(), shift_cost(), shorten_branches(), simplify_operand_subreg(), and subst_reg_equivs().
Functions to compute memory dependencies. Since we process the insns in execution order, we can build tables to keep track of what registers are fixed (and not aliased), what registers are varying in known ways, and what registers are varying in unknown ways. If both memory references are volatile, then there must always be a dependence between the two references, since their order cannot be changed. A volatile and non-volatile reference can be interchanged though. We also must allow AND addresses, because they may generate accesses outside the object being referenced. This is used to generate aligned addresses from unaligned addresses, for instance, the alpha storeqi_unaligned pattern.
Read dependence: X is read after read in MEM takes place. There can only be a dependence here if both reads are volatile, or if either is an explicit barrier.
References ALIAS_SET_MEMORY_BARRIER, MEM_ALIAS_SET, and MEM_VOLATILE_P.
Return true if X is a SUBREG and if storing a value to X would preserve some of its SUBREG_REG. For example, on a normal 32-bit target, using a SUBREG to store to one half of a DImode REG would preserve the other half.
References gcc_checking_assert, GET_CODE, GET_MODE, GET_MODE_SIZE(), maybe_gt, REGMODE_NATURAL_SIZE, and SUBREG_REG.
Referenced by add_regs_to_insn_regno_info(), insn_propagation::apply_to_lvalue_1(), collect_non_operand_hard_regs(), covers_regno_no_parallel_p(), curr_insn_transform(), df_def_record_1(), df_uses_record(), df_word_lr_mark_ref(), expand_field_assignment(), find_single_use_1(), init_subregs_of_mode(), local_cprop_find_used_regs(), mark_pseudo_reg_dead(), mark_pseudo_reg_live(), mark_ref_dead(), mark_referenced_regs(), move_deaths(), reg_referenced_p(), simplify_operand_subreg(), and rtx_properties::try_to_add_dest().
|
extern |
This function rebuilds the JUMP_LABEL field and REG_LABEL_TARGET notes in jumping insns and REG_LABEL_OPERAND notes in non-jumping instructions and jumping insns that have labels as operands (e.g. cbranchsi4).
References rebuild_jump_labels_1().
Referenced by break_superblocks(), cfg_layout_finalize(), indirect_jump_optimize(), function_reader::parse_function(), peephole2_optimize(), rest_of_handle_combine(), rest_of_handle_cse(), rest_of_handle_cse2(), rest_of_handle_cse_after_global_opts(), and rest_of_handle_gcse2().
|
extern |
This function is like rebuild_jump_labels, but doesn't run over forced_labels. It can be used on insn chains that aren't the main function chain.
References rebuild_jump_labels_1().
Referenced by commit_edge_insertions(), and commit_one_edge_insertion().
This function, called through note_stores, collects sets and clobbers of hard registers in a HARD_REG_SET, which is pointed to by DATA.
References add_to_hard_reg_set(), GET_MODE, HARD_REGISTER_P, REG_P, and REGNO.
Referenced by assign_parm_setup_reg(), find_all_hard_reg_sets(), and try_shrink_wrapping().
|
extern |
Like record_hard_reg_sets, but called through note_uses.
References find_all_hard_regs().
Referenced by try_shrink_wrapping().
|
extern |
Make JUMP go to NLABEL instead of where it jumps now. If the old jump target label is unused as a result, it and the code following it may be deleted. Normally, NLABEL will be a label, but it may also be a RETURN rtx; in that case we are to turn the jump into a (possibly conditional) return insn. The return value will be true if the change was made, false if it wasn't (this can only occur when trying to produce return insns).
References apply_change_group(), epilogue_completed, gcc_unreachable, rtx_jump_insn::jump_label(), redirect_jump_1(), and redirect_jump_2().
Referenced by compare_and_jump_seq(), dbr_schedule(), fix_crossing_conditional_branches(), force_nonfallthru_and_redirect(), patch_jump_insn(), reorg_redirect_jump(), try_optimize_cfg(), and try_redirect_by_replacing_jump().
Make JUMP go to NLABEL instead of where it jumps now. Accrue the modifications into the change group. Return false if we did not see how to do that.
References ASM_OPERANDS_LABEL, ASM_OPERANDS_LABEL_LENGTH, extract_asm_operands(), gcc_assert, GET_CODE, JUMP_LABEL, NULL, NULL_RTX, num_validated_changes(), PATTERN(), redirect_exp_1(), and XVECEXP.
Referenced by dead_or_predicable(), invert_jump_1(), and redirect_jump().
|
extern |
Fix up JUMP_LABEL and label ref counts after OLABEL has been replaced with NLABEL in JUMP. If DELETE_UNUSED is positive, delete related insn to OLABEL if its ref count has dropped to zero.
References ANY_RETURN_P, confirm_change_group(), CROSSING_JUMP_P, delete_related_insns(), find_reg_note(), gcc_assert, INSN_UID(), invert_br_probabilities(), invert_exp_1(), JUMP_LABEL, LABEL_NUSES, NULL_RTX, redirect_exp_1(), remove_note(), and XEXP.
Referenced by dead_or_predicable(), invert_jump(), and redirect_jump().
Overload for refers_to_regno_p for checking a single register.
References NULL, and refers_to_regno_p().
Return true if register in range [REGNO, ENDREGNO) appears either explicitly or implicitly in X other than being stored into. References contained within the substructure at LOC do not count. LOC may be zero, meaning don't ignore anything.
References END_REGNO(), GET_CODE, GET_RTX_FORMAT, GET_RTX_LENGTH, i, refers_to_regno_p(), REG_P, REGNO, RTX_CODE, SET, SET_DEST, SET_SRC, subreg_nregs(), SUBREG_REG, subreg_regno(), VIRTUAL_REGISTER_NUM_P, XEXP, XVECEXP, and XVECLEN.
Referenced by delete_output_reload(), df_get_call_refs(), distribute_notes(), first_hazard_after(), pair_fusion_bb_info::fuse_pair(), latest_hazard_before(), move_insn_for_shrink_wrap(), refers_to_regno_p(), refers_to_regno_p(), reg_overlap_mentioned_p(), remove_invalid_refs(), remove_invalid_subreg_refs(), and pair_fusion_bb_info::try_fuse_pair().
|
extern |
Return the reg_class which is used by IRA for its allocation.
References reg_pref::allocnoclass, gcc_assert, and reg_info_size.
Referenced by get_pressure_class_and_nregs(), get_pressure_class_and_nregs(), get_regno_pressure_class(), get_regno_pressure_class(), ira(), lra_get_allocno_class(), move_invariants(), and setup_preferred_alternate_classes_for_new_pseudos().
|
extern |
References reg_pref::altclass, gcc_assert, and reg_info_size.
Referenced by dump_reg_info(), find_reloads(), ira(), move_invariants(), must_not_spill_p(), and setup_preferred_alternate_classes_for_new_pseudos().
|
extern |
Return true if C1 is a subset of C2, i.e., if every register in C1 is also in C2.
References hard_reg_set_subset_p(), and reg_class_contents.
Referenced by combine_reloads(), default_secondary_reload(), find_reloads(), find_reusable_reload(), push_reload(), push_secondary_reload(), and setup_reg_class_relations().
|
extern |
In reginfo.cc
Return true if there is a register that is in both C1 and C2.
References hard_reg_set_intersect_p(), and reg_class_contents.
Referenced by check_and_make_def_conflict(), check_and_make_def_use_conflict(), choose_reload_regs(), gain_for_invariant(), and make_pseudo_conflict().
Return true if register REG appears somewhere within IN. Also works if REG is not a register; in this case it checks for a subexpression of IN that is Lisp "equal" to REG.
References CASE_CONST_ANY, GET_CODE, GET_RTX_FORMAT, GET_RTX_LENGTH, i, label_ref_label(), reg_mentioned_p(), REG_P, REGNO, rtx_equal_p(), XEXP, XVECEXP, and XVECLEN.
Referenced by assign_parm_setup_reg(), combine_stack_adjustments_for_block(), decrease_live_ranges_number(), delete_dead_insn(), delete_output_reload(), distribute_notes(), emit_output_reload_insns(), emit_push_insn(), emit_store_flag_force(), expand_call(), expand_divmod(), expand_function_start(), extract_integral_bit_field(), find_reloads(), find_split_point(), fold_rtx(), gcse_emit_move_after(), gen_reload_chain_without_interm_reg_p(), if_test_bypass_p(), init_label_info(), init_noce_multiple_sets_info(), lra_delete_dead_insn(), make_safe_from(), maybe_strip_eq_note_for_split_iv(), noce_get_alt_condition(), push_reload(), record_stack_refs(), reg_mentioned_p(), reg_overlap_mentioned_for_reload_p(), reg_overlap_mentioned_p(), rehash_using_reg(), reloads_unique_chain_p(), scan_loop(), simple_mem(), simplify_if_then_else(), store_data_bypass_p_1(), try_back_substitute_reg(), try_combine(), try_replace_reg(), and unmentioned_reg_p().
|
extern |
Return regno of the register REG and handle subregs too.
References gcc_assert, GET_CODE, REG_P, REGNO, and SUBREG_REG.
Referenced by gen_reload(), ira_get_dup_out_num(), push_reload(), and try_combine().
Rreturn true if modifying X will affect IN. If X is a register or a SUBREG, we check if any register number in X conflicts with the relevant register numbers. If X is a constant, return false. If X is a MEM, return true iff IN contains a MEM (we don't bother checking for memory addresses that can't conflict because we expect this to be a rare case.
References CONSTANT_P, END_REGNO(), gcc_assert, GET_CODE, GET_RTX_FORMAT, GET_RTX_LENGTH, i, MEM_P, refers_to_regno_p(), reg_mentioned_p(), reg_overlap_mentioned_p(), REGNO, subreg_nregs(), SUBREG_REG, subreg_regno(), XEXP, XVECEXP, and XVECLEN.
Referenced by add_equal_note(), add_removable_extension(), insn_propagation::apply_to_lvalue_1(), insn_propagation::apply_to_rvalue_1(), bb_valid_for_noce_process_p(), can_combine_p(), check_cond_move_block(), check_invalid_inc_dec(), combinable_i3pat(), combine_reaching_defs(), conflicts_with_override(), convert_mode_scalar(), copyprop_hardreg_forward_1(), decrease_live_ranges_number(), delete_prior_computation(), distribute_links(), distribute_notes(), emit_move_complex_parts(), expand_absneg_bit(), expand_asm_stmt(), expand_atomic_compare_and_swap(), expand_binop(), expand_copysign_bit(), expand_expr_real_2(), expand_unop(), fill_slots_from_thread(), find_inc(), gen_reload(), init_alias_analysis(), match_asm_constraints_1(), no_conflict_move_test(), noce_convert_multiple_sets_1(), noce_get_alt_condition(), noce_process_if_block(), noce_try_store_flag_constants(), process_bb_node_lives(), record_value_for_reg(), reg_overlap_mentioned_p(), reg_referenced_p(), reg_used_between_p(), reg_used_on_edge(), resolve_simple_move(), set_of_1(), subst(), try_combine(), pair_fusion_bb_info::try_fuse_pair(), validate_equiv_mem(), and validate_equiv_mem_from_store().
|
extern |
Return the reg_class in which pseudo reg number REGNO is best allocated. This function is sometimes called before the info has been computed. When that happens, just return GENERAL_REGS, which is innocuous.
References gcc_assert, reg_pref::prefclass, and reg_info_size.
Referenced by dump_reg_info(), find_costs_and_classes(), find_hard_regno_for(), find_reloads(), ira(), ira_bad_reload_regno_1(), ira_get_dup_out_num(), move_invariants(), must_not_spill_p(), setup_preferred_alternate_classes_for_new_pseudos(), update_conflict_hard_reg_costs(), and update_equiv_regs().
Return true if the old value of X, a register, is referenced in BODY. If X is entirely replaced by a new value and the only use is as a SET_DEST, we do not consider it a reference.
References ASM_OPERANDS_INPUT, ASM_OPERANDS_INPUT_LENGTH, COND_EXEC_CODE, COND_EXEC_TEST, GET_CODE, i, MEM_P, read_modify_subreg_p(), reg_overlap_mentioned_p(), reg_overlap_mentioned_p(), REG_P, reg_referenced_p(), reg_referenced_p(), SET, SET_DEST, SET_SRC, SUBREG_REG, TRAP_CONDITION, XEXP, XVECEXP, and XVECLEN.
Referenced by can_split_parallel_of_n_reg_sets(), combinable_i3pat(), cse_condition_code_reg(), delete_address_reloads_1(), distribute_links(), distribute_notes(), fill_slots_from_thread(), move_deaths(), note_add_store(), reg_referenced_p(), set_nonzero_bits_and_sign_copies(), try_combine(), and update_reg_dead_notes().
|
extern |
References INSN_P, NEXT_INSN(), PATTERN(), REG_NOTES, reg_scan_mark_refs(), timevar_pop(), and timevar_push().
Referenced by cse_main().
|
extern |
Return true if register REG is set or clobbered in an insn between FROM_INSN and TO_INSN (exclusive of those two).
References INSN_P, NEXT_INSN(), and reg_set_p().
Referenced by bb_valid_for_noce_process_p(), can_combine_p(), combine_reaching_defs(), distribute_notes(), eliminate_partially_redundant_load(), get_bb_avail_insn(), modified_between_p(), and try_combine().
Return true if REG is set or clobbered inside INSN.
References as_a(), CALL_P, find_reg_fusage(), FIND_REG_INC_NOTE, FOR_EACH_SUBRTX_VAR, GET_CODE, GET_MODE, GET_RTX_CLASS, i, insn_callee_abi(), INSN_P, MEM_P, NULL_RTX, PATTERN(), REG_P, reg_set_p(), REGNO, RTX_AUTOINC, set_of(), stack_pointer_rtx, XEXP, XVECEXP, and XVECLEN.
Referenced by canonicalize_condition(), cse_cc_succs(), cse_change_cc_mode_insns(), cse_condition_code_reg(), decrease_live_ranges_number(), delete_address_reloads_1(), delete_prior_computation(), distribute_links(), distribute_notes(), emit_reload_insns(), fill_slots_from_thread(), find_call_crossed_cheap_reg(), fix_reg_dead_note(), modified_in_p(), move_deaths(), reg_killed_on_edge(), reg_killed_on_edge(), reg_set_between_p(), reg_set_p(), reload_as_needed(), reload_cse_move2add_invalidate(), reload_cse_regs_1(), remove_init_insns(), and try_combine().
|
extern |
Return true if register REG is used in an insn between FROM_INSN and TO_INSN (exclusive of those two).
References CALL_P, find_reg_fusage(), NEXT_INSN(), NONDEBUG_INSN_P, PATTERN(), and reg_overlap_mentioned_p().
Referenced by can_combine_p(), combine_reaching_defs(), eliminate_partially_redundant_load(), no_conflict_move_test(), and try_combine().
|
extern |
Referenced by add_constraint(), hook_bool_reg_class_t_false(), and simplify_operand_subreg().
|
extern |
References clear_global_regs_cache(), CLEAR_HARD_REG_SET, global_reg_set, and no_global_reg_vars.
Referenced by toplev::finalize().
Return true if X is register asm.
References DECL_ASSEMBLER_NAME_SET_P, DECL_REGISTER, HAS_DECL_ASSEMBLER_NAME_P, NULL_TREE, REG_EXPR, and REG_P.
Referenced by insn_propagation::apply_to_rvalue_1(), and verify_changes().
Searches X for any reference to REGNO, returning the rtx of the reference found if any. Otherwise, returns NULL_RTX.
References GET_CODE, GET_RTX_FORMAT, GET_RTX_LENGTH, i, NULL_RTX, REG_P, REGNO, regno_use_in(), XEXP, XVECEXP, and XVECLEN.
Referenced by regno_use_in().
|
extern |
The same as previous function plus initializing IRA.
References caller_save_initialized_p, init_regs(), ira_init(), recog_init(), and this_target_rtl.
Referenced by globalize_reg().
Remove register number REGNO from the dead registers list of INSN. Return the note used to record the death, if there was one.
References find_regno_note(), insn_link::insn, insn_link::regno, and remove_note().
Referenced by combine_and_move_insns(), and move_deaths().
|
extern |
Remove and free the first node in the EXPR_LIST pointed to by LISTP.
References free_EXPR_LIST_node(), remove_list_node(), and XEXP.
|
extern |
Remove and free corresponding to ELEM node in the INSN_LIST pointed to by LISTP.
References free_INSN_LIST_node(), and remove_list_elem().
|
extern |
Remove and free the first node in the INSN_LIST pointed to by LISTP.
References free_INSN_LIST_node(), rtx_insn_list::insn(), and remove_list_node().
|
extern |
Unlink INSN from the insn chain. This function knows how to handle sequences. This function does not invalidate data flow information associated with INSN (i.e. does not call df_insn_delete). That makes this function usable for only disconnecting an insn from the chain, and re-emit it elsewhere later. To later insert INSN elsewhere in the insn chain via add_insn and similar functions, PREV_INSN and NEXT_INSN must be nullified by the caller. Nullifying them here breaks many insn chain walks. To really delete an insn and related DF information, use delete_insn.
References as_a(), BARRIER_P, BB_END, BB_HEAD, BLOCK_FOR_INSN(), sequence_stack::first, gcc_assert, GET_CODE, get_current_sequence(), rtx_sequence::insn(), sequence_stack::last, rtx_sequence::len(), sequence_stack::next, NEXT_INSN(), NONJUMP_INSN_P, NOTE_P, PATTERN(), PREV_INSN(), SET_NEXT_INSN(), and SET_PREV_INSN().
Referenced by delete_insn(), emit_delay_sequence(), and resolve_simple_move().
Removes corresponding to ELEM node from the list pointed to by LISTP. Returns that node.
References find_list_elem(), and remove_list_node().
Referenced by remove_free_INSN_LIST_elem().
|
extern |
Search LISTP (an INSN_LIST) for an entry whose first operand is NODE and remove that entry from the list if it is found. A simple equality test is used to determine if NODE matches.
References gcc_checking_assert, in_insn_list_p(), rtx_insn_list::insn(), rtx_insn_list::next(), NULL, and XEXP.
Referenced by delete_insn().
Remove register note NOTE from the REG_NOTES of INSN.
References df_notes_rescan(), NULL_RTX, REG_NOTE_KIND, REG_NOTES, and XEXP.
Referenced by canonicalize_insn(), cprop_jump(), cse_insn(), dead_or_predicable(), decrease_live_ranges_number(), delete_insn(), emit_delay_sequence(), emit_libcall_block_1(), fix_reg_dead_note(), fixup_eh_region_note(), fixup_tail_calls(), force_nonfallthru_and_redirect(), init_label_info(), lra_process_new_insns(), maybe_strip_eq_note_for_split_iv(), merge_notes(), move_invariant_reg(), no_equiv(), noce_process_if_block(), patch_jump_insn(), purge_dead_edges(), redirect_jump_2(), reload_as_needed(), remove_death(), remove_reachable_equiv_notes(), remove_reg_equal_equiv_notes_for_regno(), replace_store_insn(), resolve_reg_notes(), rest_of_clean_state(), try_back_substitute_reg(), try_combine(), try_eliminate_compare(), try_replace_reg(), update_equiv_regs(), update_reg_dead_notes(), and update_reg_unused_notes().
Remove REG_EQUAL and/or REG_EQUIV notes if INSN has such notes. If NO_RESCAN is false and any notes were removed, call df_notes_rescan. Return true if any note has been removed.
References df_notes_rescan(), REG_NOTE_KIND, REG_NOTES, and XEXP.
Referenced by adjust_for_new_dest(), reload_combine_recognize_pattern(), and try_apply_stack_adjustment().
|
extern |
Remove all REG_EQUAL and REG_EQUIV notes referring to REGNO.
References df, DF_REF_INSN, DF_REG_EQ_USE_CHAIN, find_reg_equal_equiv_note(), gcc_assert, NULL, and remove_note().
Referenced by dead_or_predicable(), and remove_reg_equal_equiv_notes_for_defs().
Same as function above, but take care to update BB boundaries.
References BARRIER_P, BB_END, BLOCK_FOR_INSN(), df_insn_change_bb(), df_set_bb_dirty(), NEXT_INSN(), PREV_INSN(), and reorder_insns_nobb().
Referenced by dead_or_predicable(), expand_case(), expand_sjlj_dispatch_table(), move_invariant_reg(), noce_process_if_block(), reload_combine_recognize_const_pattern(), reposition_prologue_and_epilogue_notes(), rtl_tidy_fallthru_edge(), skip_insns_after_block(), thread_prologue_and_epilogue_insns(), and try_head_merge_bb().
This function is deprecated, please use sequences instead. Move a consecutive bunch of insns to a different place in the chain. The insns to be moved are those between FROM and TO. They are moved to a new position after the insn AFTER. AFTER must not be FROM or TO or any insn in between. This function does not know about SEQUENCEs and hence should not be called after delay-slot filling has been done.
References gcc_assert, get_insns(), get_last_insn(), NEXT_INSN(), PREV_INSN(), set_first_insn(), set_last_insn(), SET_NEXT_INSN(), and SET_PREV_INSN().
Referenced by cleanup_barriers(), create_basic_block_structure(), delete_insn(), find_bb_boundaries(), maybe_duplicate_computed_goto(), merge_blocks_move_predecessor_nojumps(), merge_blocks_move_successor_nojumps(), reload_as_needed(), reorder_insns(), and rtl_merge_blocks().
Replace occurrences of the OLD_LABEL in *LOC with NEW_LABEL. Also track the change in LABEL_NUSES if UPDATE_LABEL_NUSES.
References ALL, CONSTANT_POOL_ADDRESS_P, copy_rtx(), FOR_EACH_SUBRTX_PTR, force_const_mem(), GET_CODE, GET_NUM_ELEM, get_pool_constant(), get_pool_mode(), i, JUMP_LABEL, JUMP_P, JUMP_TABLE_DATA_P, LABEL_NUSES, PATTERN(), replace_label(), replace_rtx(), RTVEC_ELT, rtx_referenced_p(), XEXP, and XVEC.
Referenced by replace_label(), and replace_label_in_insn().
|
extern |
References gcc_checking_assert, and replace_label().
Referenced by outgoing_edges_match(), and try_crossjump_to_edge().
Replace any occurrence of FROM in X with TO. The function does not enter into CONST_DOUBLE for the replace. Note that copying is not done so X must not be shared unless all copies are to be modified. ALL_REGS is true if we want to replace all REGs equal to FROM, not just those pointer-equal ones.
References CONST_SCALAR_INT_P, gcc_assert, GET_CODE, GET_MODE, GET_RTX_FORMAT, GET_RTX_LENGTH, i, REG_P, REGNO, replace_rtx(), simplify_subreg(), simplify_unary_operation(), SUBREG_BYTE, SUBREG_REG, XEXP, XVECEXP, and XVECLEN.
Referenced by find_split_point(), match_asm_constraints_1(), record_value_for_reg(), replace_label(), and replace_rtx().
|
extern |
Clear all the USED bits in X to allow copy_rtx_if_shared to be used to look for shared sub-parts.
References mark_used_flags().
Referenced by doloop_modify(), reset_insn_used_flags(), try_combine(), and unshare_all_rtl_again().
|
extern |
reginfo.cc
Resize reg info.
Resize reg info. The new elements will be initialized. Return TRUE if new pseudos were added since the last call.
References allocate_reg_info(), reg_pref::allocnoclass, reg_pref::altclass, gcc_assert, i, max_reg_num(), max_regno_since_last_resize, NULL, reg_pref::prefclass, reg_info_size, and reg_renumber.
Referenced by expand_reg_data(), expand_reg_info(), find_costs_and_classes(), ira(), lra_get_allocno_class(), lra_get_regno_hard_regno(), and move_invariants().
Return TRUE if INSN is a return jump.
References FOR_EACH_SUBRTX, GET_CODE, JUMP_P, PATTERN(), SET, and SET_IS_RETURN_P.
Referenced by commit_one_edge_insertion(), create_trace_edges(), find_cond_trap(), fixup_reorder_chain(), flow_find_cross_jump(), make_edges(), make_insn_raw(), patch_jump_insn(), purge_dead_edges(), rtl_verify_bb_layout(), thread_prologue_and_epilogue_insns(), and try_combine().
In jump.cc
Given an rtx-code for a comparison, return the code for the negated comparison. If no such code exists, return UNKNOWN. WATCH OUT! reverse_condition is not safe to use on a jump that might be acting on the results of an IEEE floating point comparison, because of the special treatment of non-signaling nans in comparisons. Use reversed_comparison_code instead.
References gcc_unreachable.
Referenced by do_compare_rtx_and_jump(), emit_store_flag_force(), emit_store_flag_int(), fold_rtx(), iv_number_of_iterations(), known_cond(), noce_get_condition(), reversed_comparison_code_parts(), and simplify_comparison().
Similar, but we're allowed to generate unordered comparisons, which makes it safe for IEEE floating-point. Of course, we have to recognize that the target will support them too...
References gcc_unreachable.
Referenced by do_compare_rtx_and_jump(), emit_store_flag(), emit_store_flag_force(), prepare_float_lib_cmp(), and reversed_comparison_code_parts().
Return TRUE if a rotate in mode MODE with a constant count in OP1 should be reversed. If the rotate should not be reversed, return FALSE. LEFT indicates if this is a rotate left or a rotate right.
References CONST_INT_P, GET_MODE_UNIT_PRECISION, IN_RANGE, insn_operand_matches(), INTVAL, and optab_handler().
Referenced by expand_shift_1(), and simplify_context::simplify_binary_operation_1().
Return comparison with reversed code of EXP. Return NULL_RTX in case we fail to do the reversal.
References exp(), NULL, NULL_RTX, reversed_comparison_code(), simplify_gen_relational(), and XEXP.
Referenced by simplify_context::simplify_binary_operation_1(), simplify_if_then_else(), and simplify_context::simplify_unary_operation_1().
A wrapper around the previous function to take COMPARISON as rtx expression. This simplifies many callers.
References COMPARISON_P, GET_CODE, reversed_comparison_code_parts(), and XEXP.
Referenced by canonicalize_condition(), cond_exec_get_condition(), cond_exec_process_if_block(), dead_or_predicable(), find_comparison_args(), get_branch_condition(), if_then_else_cond(), invert_exp_1(), known_cond(), noce_emit_store_flag(), noce_reversed_cond_code(), noce_try_addcc(), noce_try_cmove_arith(), outgoing_edges_match(), reversed_comparison(), reversed_condition(), simplify_comparison(), simplify_if_then_else(), simplify_context::simplify_relational_operation_1(), simplify_context::simplify_ternary_operation(), simplify_context::simplify_unary_operation_1(), and thread_jump().
|
extern |
Given a comparison (CODE ARG0 ARG1), inside an insn, INSN, return a code of reversed comparison if it is possible to do so. Otherwise return UNKNOWN. UNKNOWN may be returned in case we are having CC_MODE compare and we don't know whether it's source is floating point or integer comparison. Machine description should define REVERSIBLE_CC_MODE and REVERSE_CONDITION macros to help this function avoid overhead in these cases.
References CONST_INT_P, GET_CODE, GET_MODE, GET_MODE_CLASS, GET_RTX_CLASS, HONOR_NANS(), LABEL_P, prev_nonnote_insn(), REG_P, REVERSE_CONDITION, reverse_condition(), reverse_condition_maybe_unordered(), REVERSIBLE_CC_MODE, RTX_COMM_COMPARE, RTX_COMPARE, rtx_equal_p(), SET, SET_DEST, set_of(), SET_SRC, and XEXP.
Referenced by combine_simplify_rtx(), emit_conditional_move(), record_jump_equiv(), and reversed_comparison_code().
|
inline |
Force the REGNO macro to only be used on the lhs.
References REG_CHECK.
|
extern |
Return true if all elements of VEC are equal.
References CASE_CONST_UNIQUE, GET_CODE, GET_NUM_ELEM, i, RTVEC_ELT, and rtx_equal_p().
Referenced by gen_rtx_CONST_VECTOR().
|
extern |
Allocate an rtx vector of N elements. Store the length, and initialize all elements to zero.
References rtvec_def::elem, gcc_assert, ggc_alloc_rtvec_sized, INT_MAX, PUT_NUM_ELEM, rtvec_alloc_counts, and rtvec_alloc_sizes.
Referenced by add_attributes(), adjust_insn(), alter_attrs_for_insn(), rtx_vector_builder::build(), cleanup_auto_inc_dec(), convert_set_attr(), convert_set_attr_alternative(), copy_insn_1(), copy_rtx(), md_reader::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_loc(), expand_asm_memory_blockage(), expand_asm_reg_clobber_mem_blockage(), expand_asm_stmt(), expand_debug_expr(), expand_delays(), expand_vector_broadcast(), gen_mnemonic_setattr(), gen_rewrite_sequence(), gen_rtvec(), gen_rtvec_v(), gen_rtvec_v(), get_peephole2_pattern(), insn_invalid_p(), instantiate_virtual_regs_in_insn(), ira_nullify_asm_goto(), main(), make_automaton_attrs(), make_canonical(), process_one_cond_exec(), process_rtx(), process_substs_on_one_elem(), rtx_reader::read_rtx_operand(), recog_for_combine_1(), remove_clobbers(), replace_operands_with_dups(), replace_reg_with_saved_mem(), shallow_copy_rtvec(), simplify_context::simplify_binary_operation_1(), simplify_cond(), simplify_const_binary_operation(), simplify_context::simplify_ternary_operation(), store_constructor(), substitute_address(), try_combine(), try_eliminate_compare(), verify_changes(), and vt_add_function_parameter().
Return true if VEC contains a linear series of integers { START, START+1, START+2, ... }.
References CONST_INT_P, GET_NUM_ELEM, i, INTVAL, and RTVEC_ELT.
Referenced by vec_series_highpart_p(), and vec_series_lowpart_p().
Return true if the use of X as an address in a MEM can cause a trap.
References rtx_addr_can_trap_p_1().
Referenced by find_comparison_args().
Return true if X refers to a memory location whose address cannot be compared reliably with constant addresses, or if X refers to a BLKmode memory object. FOR_ALIAS is nonzero if we are called from alias analysis; if it is zero, we are slightly more conservative.
References GET_CODE, GET_MODE, GET_RTX_FORMAT, GET_RTX_LENGTH, i, rtx_addr_varies_p(), rtx_varies_p(), XEXP, XVECEXP, and XVECLEN.
Referenced by rtx_addr_varies_p().
In rtl.cc
References CXX_MEM_STAT_INFO, and RTX_CODE.
References MEM_STAT_DECL, and RTX_CODE.
Return an estimate of the cost of computing rtx X. One use is in cse, to decide which expression to keep in the hash table. Another is in rtl generation, to pick the cheapest way to multiply. Other uses like the latter are expected in the future. X appears as operand OPNO in an expression with code OUTER_CODE. SPEED specifies whether costs optimized for speed or size should be returned.
References COSTS_N_INSNS, estimated_poly_value(), GET_CODE, GET_MODE, GET_MODE_SIZE(), GET_RTX_FORMAT, GET_RTX_LENGTH, i, mode_size, rtx_cost(), rtx_cost(), SET, SET_DEST, SUBREG_REG, targetm, XEXP, XVECEXP, and XVECLEN.
Referenced by avoid_expensive_constant(), default_address_cost(), emit_conditional_move(), emit_store_flag(), emit_store_flag_int(), get_full_rtx_cost(), maybe_optimize_mod_cmp(), maybe_optimize_pow2p_mod_cmp(), notreg_cost(), prefer_and_bit_test(), prepare_cmp_insn(), rtx_cost(), set_rtx_cost(), and set_src_cost().
|
extern |
Return true if X and Y are identical-looking rtx's. This is the Lisp function EQUAL for rtx arguments. Call CB on each pair of rtx if CB is not NULL. When the callback returns true, we continue with the new pair.
References CASE_CONST_UNIQUE, DEBUG_IMPLICIT_PTR_DECL, DEBUG_PARAMETER_REF_DECL, ENTRY_VALUE_EXP, gcc_unreachable, GET_CODE, GET_MODE, GET_RTX_FORMAT, GET_RTX_LENGTH, i, label_ref_label(), MEM_ADDR_SPACE, NULL, REGNO, rtx_equal_p(), same_vector_encodings_p(), SUBREG_BYTE, XEXP, XINT, XLOC, XSTR, XVECEXP, XVECLEN, XWINT, and y.
Referenced by add_equal_note(), add_var_loc_to_decl(), allocate_dynamic_stack_space(), analyze_insn_to_expand_var(), apply_distributive_law(), insn_propagation::apply_to_rvalue_1(), assign_call_lhs(), attr_equal_p(), base_alias_check(), bbs_ok_for_cmove_arith(), find_comparison_dom_walker::before_dom_children(), builtin_memset_gen_str(), calculate_needs_all_insns(), can_combine_p(), can_eliminate_compare(), can_replace_by(), canon_reg_for_combine(), canonicalize_condition(), canonicalize_insn(), change_address_1(), check_and_make_def_conflict(), choose_reload_regs(), clobber_slot_part(), combinable_i3pat(), combine_reloads(), combine_simplify_rtx(), compare_and_jump_seq(), cond_move_process_if_block(), condition_dominates_p(), const_vec_series_p_1(), copy_frame_info_to_split_insn(), copyprop_hardreg_forward_1(), count_occurrences(), cprop_jump(), cse_cc_succs(), cse_insn(), cselib_record_sets(), decompose_automod_address(), delegitimize_mem_from_attrs(), delete_address_reloads(), delete_address_reloads_1(), delete_output_reload(), delete_slot_part(), df_find_single_def_src(), distribute_notes(), do_compare_rtx_and_jump(), do_input_reload(), do_output_reload(), doloop_condition_get(), dw_val_equal_p(), address_reload_context::emit_autoinc(), emit_block_cmp_via_loop(), emit_block_move_hints(), emit_conditional_move(), emit_conditional_move_1(), emit_group_store(), emit_input_reload_insns(), emit_move_insn(), emit_note_insn_var_location(), emit_output_reload_insns(), emit_store_flag_int(), addr_hasher::equal(), const_rtx_desc_hasher::equal(), invariant_group_base_hasher::equal(), equal_different_set_p(), rtx_vector_builder::equal_p(), expand_binop(), expand_call(), expand_strided_load_optab_fn(), expand_vec_perm_1(), expand_vec_perm_const(), extract_ashift_operands_p(), extract_writebacks(), fill_slots_from_thread(), find_address(), find_args_size_adjust(), find_auto_inc(), find_call_crossed_cheap_reg(), find_equiv_reg(), find_inc(), 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(), fixup_debug_uses_trailing_add(), fold_rtx(), force_reg(), free_load_extend(), gcse_emit_move_after(), gen_reload(), get_biv_step_1(), get_hard_reg_initial_reg(), get_init_value(), get_reload_reg(), if_then_else_cond(), immune_p(), implies_p(), init_alias_analysis(), insns_have_identical_cfa_notes(), invariant_eq_p(), invariant_expr_equal_p(), ira_setup_alts(), ira_update_equiv_info_by_shuffle_insn(), iv_number_of_iterations(), kill_set_value(), known_cond(), lra_emit_move(), make_compound_operation_int(), mark_referenced_resources(), match_asm_constraints_1(), match_plus_neg_pattern(), maybe_legitimize_operands(), maybe_propagate_label_ref(), maybe_swap_commutative_operands(), merge_notes(), move2add_use_add3_insn(), noce_bbs_ok_for_cond_zero_arith(), noce_get_alt_condition(), noce_try_abs(), noce_try_addcc(), noce_try_bitop(), noce_try_cmove_arith(), noce_try_cond_zero_arith(), noce_try_minmax(), noce_try_move(), noce_try_store_flag_constants(), noce_try_store_flag_mask(), nonoverlapping_memrefs_p(), old_insns_match_p(), outgoing_edges_match(), pair_mem_strip_offset(), parse_add_or_inc(), prepare_cmp_insn(), propagate_for_debug_subst(), 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_cse_regs_1(), reload_reg_free_for_value_p(), reloads_unique_chain_p(), reversed_comparison_code_parts(), rtvec_all_equal_p(), rtx_equal_for_cselib_1(), rtx_equal_for_field_assignment_p(), rtx_equal_for_memref_p(), rtx_equal_p(), rtx_interchangeable_p(), rtx_referenced_p(), rtx_renumbered_equal_p(), safe_from_p(), same_dw_val_p(), set_noop_p(), set_of_1(), set_slot_part(), setup_reg_equiv(), simplify_context::simplify_binary_operation_1(), simplify_comparison(), simplify_context::simplify_cond_clz_ctz(), simplify_const_relational_operation(), simplify_context::simplify_distributive_operation(), simplify_if_then_else(), simplify_context::simplify_logical_relational_operation(), simplify_context::simplify_merge_mask(), simplify_context::simplify_relational_operation_1(), simplify_replace_fn_rtx(), simplify_rotate_op(), simplify_rtx(), simplify_set(), simplify_shift_const_1(), simplify_context::simplify_ternary_operation(), simplify_context::simplify_unary_operation_1(), simplify_using_condition(), sp_based_mem_offset(), split_insn(), store_constructor(), 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(), values_equal_p(), variable_part_different_p(), and variable_union().
References PUT_CODE, RTX_CODE, and RTX_HDR_SIZE.
Referenced by rtx_alloc_stat_v().
Return true if X is referenced in BODY.
References ALL, CONSTANT_POOL_ADDRESS_P, FOR_EACH_SUBRTX, GET_CODE, get_pool_constant(), LABEL_P, label_ref_label(), rtx_equal_p(), and y.
Referenced by analyze_insn_to_expand_var(), outgoing_edges_match(), referenced_in_one_insn_in_loop_p(), replace_label(), reset_debug_uses_in_loop(), and try_combine().
Like rtx_equal_p except that it considers two REGs as equal if they renumber to the same value and considers two commutative operations to be the same if the order of the operands has been reversed.
References CASE_CONST_UNIQUE, gcc_unreachable, GET_CODE, GET_MODE, GET_RTX_FORMAT, GET_RTX_LENGTH, i, known_eq, LABEL_P, label_ref_label(), LABEL_REF_NONLOCAL_P, MEM_ADDR_SPACE, next_nonnote_nondebug_insn(), NON_COMMUTATIVE_P, subreg_info::offset, REG_P, reg_renumber, REGNO, subreg_info::representable_p, rtx_equal_p(), rtx_renumbered_equal_p(), same_vector_encodings_p(), SUBREG_BYTE, subreg_get_info(), SUBREG_REG, targetm, UNARY_P, XEXP, XINT, XLOC, XSTR, XTREE, XVECEXP, XVECLEN, XWINT, and y.
Referenced by can_replace_by(), equal_different_set_p(), find_equiv_reg(), insns_have_identical_cfa_notes(), old_insns_match_p(), outgoing_edges_match(), and rtx_renumbered_equal_p().
|
extern |
In rtl.cc
Return the number of bytes occupied by rtx value X.
References CONST_POLY_INT_COEFFS, CONST_POLY_INT_P, CONST_WIDE_INT_NUNITS, CONST_WIDE_INT_P, GET_CODE, RTX_CODE_SIZE, RTX_HDR_SIZE, and SYMBOL_REF_HAS_BLOCK_INFO_P.
Referenced by shallow_copy_rtx().
|
extern |
Constructs double_int from rtx CST.
References CONST_DOUBLE_AS_INT_P, CONST_DOUBLE_HIGH, CONST_DOUBLE_LOW, CONST_INT_P, double_int::from_shwi(), gcc_unreachable, INTVAL, and r.
Referenced by loc_descriptor(), and mem_loc_descriptor().
|
inline |
Return the value of X as a poly_int64.
References poly_int< N, C >::coeffs, CONST_POLY_INT_COEFFS, CONST_POLY_INT_P, i, INTVAL, and NUM_POLY_INT_COEFFS.
Referenced by compute_argument_addresses(), dwarf2out_frame_debug_adjust_cfa(), dwarf2out_frame_debug_cfa_offset(), dwarf2out_frame_debug_expr(), emit_group_load_1(), emit_group_store(), emit_move_resolve_push(), expand_stack_vars(), find_args_size_adjust(), get_args_size(), initial_return_save(), mem_loc_descriptor(), store_expr(), store_one_arg(), and vt_initialize().
|
extern |
Translates rtx code to tree code, for those codes needed by real_arithmetic. The function returns an int because the caller may not know what `enum tree_code' means.
Look up the tree code for a given rtx code to provide the arithmetic operation for real_arithmetic. The function returns an int because the caller may not know what `enum tree_code' means.
Referenced by simplify_const_binary_operation().
Return true if the value of X is unstable (would be different at a different point in the program). The frame pointer, arg pointer, etc. are considered stable (within one function) and so is anything marked `unchanging'.
References arg_pointer_rtx, CASE_CONST_ANY, fixed_regs, frame_pointer_rtx, GET_CODE, GET_RTX_FORMAT, GET_RTX_LENGTH, hard_frame_pointer_rtx, i, MEM_READONLY_P, MEM_VOLATILE_P, PIC_OFFSET_TABLE_REG_CALL_CLOBBERED, pic_offset_table_rtx, RTX_CODE, rtx_unstable_p(), rtx_unstable_p(), XEXP, XVECEXP, and XVECLEN.
Referenced by rtx_unstable_p().
Return true if X has a value that can vary even between two executions of the program. false means X can be compared reliably against certain constants or near-constants. FOR_ALIAS is nonzero if we are called from alias analysis; if it is zero, we are slightly more conservative. The frame pointer and the arg pointer are considered constant.
References arg_pointer_rtx, CASE_CONST_ANY, fixed_regs, frame_pointer_rtx, GET_CODE, GET_RTX_FORMAT, GET_RTX_LENGTH, hard_frame_pointer_rtx, i, MEM_READONLY_P, MEM_VOLATILE_P, PIC_OFFSET_TABLE_REG_CALL_CLOBBERED, pic_offset_table_rtx, RTX_CODE, rtx_varies_p(), rtx_varies_p(), XEXP, XVECEXP, and XVECLEN.
Referenced by equiv_init_movable_p(), equiv_init_varies_p(), init_alias_analysis(), make_memloc(), rtx_addr_varies_p(), rtx_varies_p(), and update_equiv_regs().
Return true if CONST_VECTORs X and Y, which are known to have the same mode, also have the same encoding. This means that they are equal whenever their operands are equal.
References CONST_VECTOR_NELTS_PER_PATTERN, CONST_VECTOR_NPATTERNS, CONST_VECTOR_NUNITS, and y.
Referenced by exp_equiv_p(), operands_match_p(), operands_match_p(), rtx_equal_for_cselib_1(), rtx_equal_p(), and rtx_renumbered_equal_p().
|
extern |
Save the register information.
References accessible_reg_set, call_used_regs, fixed_regs, gcc_assert, operand_reg_set, reg_names, saved_accessible_reg_set, saved_call_used_regs, saved_fixed_regs, saved_operand_reg_set, and saved_reg_names.
Referenced by backend_init().
|
extern |
In sched-ebb.cc.
Referenced by rest_of_handle_sched2().
|
extern |
In sched-rgn.cc.
Referenced by rest_of_handle_live_range_shrinkage(), rest_of_handle_sched(), rest_of_handle_sched2(), and rest_of_handle_sched_fusion().
|
extern |
In sel-sched-dump.cc.
References print_rtx_head.
Returns estimate on cost of computing SEQ.
References CONST_CAST_RTX_INSN, insn_cost(), NEXT_INSN(), NONDEBUG_INSN_P, set_rtx_cost(), and single_set().
Referenced by attempt_change(), computation_cost(), default_noce_conversion_profitable_p(), expand_ccmp_expr_1(), expand_expr_divmod(), expand_expr_real_2(), expand_POPCOUNT(), init_set_costs(), maybe_optimize_mod_cmp(), maybe_optimize_pow2p_mod_cmp(), and try_emit_cmove_seq().
|
inline |
|
extern |
Set current location.
References curr_location.
Referenced by expand_expr_real_gassign(), expand_function_end(), expand_gimple_basic_block(), expand_gimple_cond(), expand_gimple_stmt_1(), expand_thunk(), insert_part_to_rtx_on_edge(), insert_partition_copy_on_edge(), insert_rtx_to_part_on_edge(), insert_value_copy_on_edge(), and set_location_for_edge().
Like set_unique_reg_note, but don't do anything unless INSN sets DST.
References NULL_RTX, SET_DEST, set_for_reg_notes(), and set_unique_reg_note().
Referenced by assign_parm_setup_reg(), emit_libcall_block_1(), expand_absneg_bit(), expand_binop(), expand_DIVMOD(), expand_divmod(), expand_fix(), expand_function_start(), expand_mult_const(), gen_reload(), and reload_cse_simplify().
In emit-rtl.cc
Notes like REG_EQUAL and REG_EQUIV refer to a set in an instruction. Return the set in INSN that such notes describe, or NULL if the notes have no meaning for INSN.
References GET_CODE, INSN_P, multiple_sets(), NULL_RTX, PATTERN(), REG_P, SET, SET_DEST, XEXP, and XVECEXP.
Referenced by add_equal_note(), forward_propagate_and_simplify(), reload_cse_simplify(), set_dst_reg_note(), set_unique_reg_note(), and try_fwprop_subst_pattern().
|
extern |
Replace insn with an deleted instruction note.
References df_insn_delete(), INSN_P, NOTE_KIND, and PUT_CODE.
Referenced by find_moveable_pseudos(), and one_cprop_pass().
|
extern |
Set the location of the insn chain starting at INSN to LOC.
References INSN_LOCATION(), INSN_P, and NEXT_INSN().
Referenced by emit_moves(), expand_function_end(), make_epilogue_seq(), make_prologue_seq(), make_split_prologue_seq(), and thread_prologue_and_epilogue_insns().
|
extern |
Set the mode and register number of X to MODE and REGNO.
References HARD_REGISTER_NUM_P, hard_regno_nregs(), PUT_MODE_RAW, and set_regno_raw().
Referenced by df_ref_change_reg_with_loc(), init_expr_target(), init_raw_REG(), PUT_MODE(), reg_save_code(), reload_cse_simplify_operands(), and setup_prohibited_mode_move_regs().
For procedure integration.
Install new pointers to the first and last insns in the chain. Also, set cur_insn_uid to one higher than the last in use. Used for an inline-procedure after copying the insn chain.
References cur_debug_insn_uid, cur_insn_uid, DEBUG_INSN_P, INSN_UID(), last, MAX, MAY_HAVE_DEBUG_INSNS, NEXT_INSN(), set_first_insn(), and set_last_insn().
References XEXP.
Referenced by can_assign_to_reg_without_clobbers_p(), cfg_layout_delete_block(), cfg_layout_merge_blocks(), delete_for_peephole(), delete_insns_since(), emit_barrier_after_bb(), emit_delay_sequence(), emit_insn_after_1(), emit_libcall_block_1(), fill_simple_delay_slots(), final_scan_insn_1(), fixup_abnormal_edges(), fixup_partitions(), fixup_reorder_chain(), link_insn_into_chain(), function_reader::parse_insn(), remove_barriers_from_footer(), remove_insn(), reorder_insns_nobb(), rest_of_clean_state(), save_call_clobbered_regs(), try_redirect_by_replacing_jump(), try_validate_parallel(), unlink_insn_chain(), and update_cfg_for_uncondjump().
Return true if the destination of SET equals the source and there are no side effects.
References const0_rtx, GET_CODE, GET_MODE, GET_MODE_UNIT_SIZE, HARD_REGISTER_P, i, MEM_P, pc_rtx, poly_int_rtx_p(), REG_CAN_CHANGE_MODE_P, REG_P, REGNO, rtx_equal_p(), SET_DEST, SET_SRC, side_effects_p(), simplify_subreg_regno(), SUBREG_BYTE, SUBREG_REG, validate_subreg(), XEXP, XVECEXP, and XVECLEN.
Referenced by eliminate_partially_redundant_load(), hash_scan_set(), hash_scan_set(), lra_coalesce(), noop_move_p(), recog_for_combine_1(), set_live_p(), split_all_insns(), split_all_insns_noflow(), and try_combine().
Give an INSN, return a SET or CLOBBER expression that does modify PAT (either directly or via STRICT_LOW_PART and similar modifiers).
References INSN_P, note_pattern_stores(), NULL_RTX, set_of_data::pat, PATTERN(), and set_of_1().
Referenced by canonicalize_condition(), check_cond_move_block(), end_ifcvt_sequence(), get_defs(), insn_valid_noce_process_p(), reg_set_p(), and reversed_comparison_code_parts().
References XEXP.
Referenced by can_assign_to_reg_without_clobbers_p(), cfg_layout_delete_block(), cfg_layout_merge_blocks(), delete_for_peephole(), emit_barrier_after_bb(), emit_delay_sequence(), emit_insn_after_1(), emit_libcall_block_1(), fill_simple_delay_slots(), final_scan_insn_1(), fixup_abnormal_edges(), fixup_partitions(), fixup_reorder_chain(), link_insn_into_chain(), function_reader::parse_insn(), remove_barriers_from_footer(), remove_insn(), reorder_insns_nobb(), rest_of_clean_state(), save_call_clobbered_regs(), try_redirect_by_replacing_jump(), try_validate_parallel(), unlink_insn_chain(), and update_cfg_for_uncondjump().
|
inline |
Change the REGNO and REG_NREGS of REG X to the specified values, bypassing the df machinery.
References reg_info::nregs, REG_CHECK, and reg_info::regno.
Referenced by rtx_reader::read_rtx_operand(), function_reader::read_rtx_operand_r(), and set_mode_and_regno().
Generally useful functions.
Return the cost of SET X. SPEED_P is true if optimizing for speed rather than size.
References rtx_cost().
Referenced by attempt_change(), compute_costs(), create_new_invariant(), seq_cost(), and try_replace_reg().
Return the cost of moving X into a register, relative to the cost of a register move. SPEED_P is true if optimizing for speed rather than size.
References rtx_cost(), and SET.
Referenced by attempt_change(), avoid_expensive_constant(), calculate_elim_costs_all_insns(), compress_float_constant(), computation_cost(), compute_costs(), create_new_invariant(), distribute_and_simplify_rtx(), doloop_optimize(), tree_switch_conversion::bit_test_cluster::emit(), expand_compound_operation(), expand_mult(), expand_smod_pow2(), find_shift_sequence(), force_int_to_mode(), init_expmed(), init_expmed_one_conv(), init_expmed_one_mode(), lshift_cheap_p(), make_extraction(), mult_by_coeff_cost(), noce_try_sign_mask(), note_reg_elim_costly(), optimize_range_tests_to_bit_test(), pattern_cost(), precompute_register_parameters(), reload_cse_simplify_operands(), reload_cse_simplify_set(), shift_cost(), should_replace_address(), simplify_context::simplify_binary_operation_1(), try_replace_in_use(), and want_to_gcse_p().
Place a note of KIND on insn INSN with DATUM as the datum. If a note of this type already exists, remove it first.
References add_reg_note(), as_a(), df_notes_rescan(), find_reg_note(), GET_CODE, NULL_RTX, PATTERN(), REG_NOTES, set_for_reg_notes(), side_effects_p(), and XEXP.
Referenced by add_equal_note(), add_store_equivs(), assign_parm_setup_reg(), compress_float_constant(), cprop_jump(), cse_insn(), emit_move_insn(), find_reloads(), force_reg(), forward_propagate_and_simplify(), gcse_emit_move_after(), gen_reload(), ira_update_equiv_info_by_shuffle_insn(), set_dst_reg_note(), split_insn(), try_back_substitute_reg(), try_fwprop_subst_pattern(), try_replace_reg(), and update_equiv_regs().
|
extern |
Set all the USED bits in X to allow copy_rtx_if_shared to be used to look for shared sub-parts.
References mark_used_flags().
Referenced by doloop_modify(), end_ifcvt_sequence(), noce_convert_multiple_sets(), noce_process_if_block(), set_used_decls(), and unshare_all_rtl_again().
|
extern |
Set up preferred, alternate, and allocno classes for REGNO as PREFCLASS, ALTCLASS, and ALLOCNOCLASS.
References reg_pref::allocnoclass, reg_pref::altclass, gcc_assert, max_reg_num(), NULL, reg_pref::prefclass, and reg_info_size.
Referenced by assign_by_spills(), expand_reg_info(), find_costs_and_classes(), ira(), lra_change_class(), lra_create_new_reg_with_unique_value(), move_invariants(), and setup_preferred_alternate_classes_for_new_pseudos().
Create a bitwise copy of VEC.
References rtvec_def::elem, GET_NUM_ELEM, and rtvec_alloc().
Referenced by cselib_subst_to_values(), and simplify_replace_fn_rtx().
References CXX_MEM_STAT_INFO.
|
inline |
Return the shape of a SUBREG rtx.
References GET_MODE, SUBREG_BYTE, and SUBREG_REG.
Referenced by record_subregs_of_mode().
Return true if ORIG is a sharable CONST.
References gcc_assert, GET_CODE, block_symbol::offset, poly_int_rtx_p(), and XEXP.
Referenced by cleanup_auto_inc_dec(), copy_insn_1(), copy_rtx(), copy_rtx_if_shared_1(), cprop_constant_p(), cselib_expand_value_rtx_1(), plus_constant(), and verify_rtx_sharing().
Similar to above, except that it also rejects register pre- and post- incrementing.
References CASE_CONST_ANY, GET_CODE, GET_MODE, GET_RTX_FORMAT, GET_RTX_LENGTH, i, MEM_VOLATILE_P, RTX_CODE, side_effects_p(), XEXP, XVECEXP, and XVECLEN.
Referenced by add_insn_allocno_copies(), can_combine_p(), can_split_parallel_of_n_reg_sets(), check_cond_move_block(), combine_instructions(), combine_simplify_rtx(), copyprop_hardreg_forward_1(), count_reg_usage(), cse_insn(), cselib_add_permanent_equiv(), cselib_record_set(), delete_dead_insn(), delete_prior_computation(), delete_trivially_dead_insns(), distribute_notes(), drop_writeback(), eliminate_partially_redundant_loads(), emit_conditional_move_1(), expand_builtin_prefetch(), fill_slots_from_thread(), find_moveable_store(), find_split_point(), flow_find_cross_jump(), fold_rtx(), force_to_mode(), get_reload_reg(), if_then_else_cond(), interesting_dest_for_shprep(), invariant_p(), known_cond(), lra_coalesce(), lra_delete_dead_insn(), match_plus_neg_pattern(), maybe_legitimize_operand_same_code(), noce_get_condition(), noce_operand_ok(), noce_process_if_block(), noce_try_sign_mask(), non_conflicting_reg_copy_p(), onlyjump_p(), recompute_constructor_flags(), record_set_data(), reload_cse_simplify_operands(), reload_cse_simplify_set(), resolve_simple_move(), rtl_can_remove_branch_p(), scan_one_insn(), set_live_p(), set_noop_p(), set_unique_reg_note(), side_effects_p(), simple_mem(), simplify_and_const_int_1(), simplify_context::simplify_binary_operation_1(), simplify_const_relational_operation(), simplify_context::simplify_distributive_operation(), simplify_if_then_else(), simplify_context::simplify_logical_relational_operation(), simplify_context::simplify_merge_mask(), simplify_context::simplify_relational_operation_1(), simplify_set(), simplify_shift_const_1(), simplify_context::simplify_ternary_operation(), simplify_context::simplify_unary_operation_1(), single_set_2(), store_expr(), thread_jump(), try_combine(), try_eliminate_compare(), try_merge_compare(), try_redirect_by_replacing_jump(), update_equiv_regs(), validate_equiv_mem(), and verify_constructor_flags().
Similarly, return the signed version of a comparison.
References gcc_unreachable.
Referenced by simplify_const_relational_operation().
Check whether instruction pattern PAT contains a SET with the following properties: - the SET is executed unconditionally; and - either: - the destination of the SET is a REG that contains REGNO; or - both: - the destination of the SET is a SUBREG of such a REG; and - writing to the subreg clobbers all of the SUBREG_REG (in other words, read_modify_subreg_p is false). If PAT does have a SET like that, return the set, otherwise return null. This is intended to be an alternative to single_set for passes that can handle patterns with multiple_sets.
References covers_regno_no_parallel_p(), GET_CODE, i, last, set_of_data::pat, SET, SET_DEST, simple_regno_set(), XVECEXP, and XVECLEN.
Referenced by forward_propagate_into(), and simple_regno_set().
Return true if INSN is an unconditional jump and nothing else.
References GET_CODE, JUMP_P, PATTERN(), SET, SET_DEST, and SET_SRC.
Referenced by cfg_layout_can_merge_blocks_p(), cfg_layout_redirect_edge_and_branch(), commit_one_edge_insertion(), cond_exec_find_if_block(), contains_no_active_insn_p(), cprop_jump(), emit_common_tails_for_components(), fill_simple_delay_slots(), fixup_reorder_chain(), flow_find_cross_jump(), maybe_duplicate_computed_goto(), outgoing_edges_match(), purge_dead_edges(), relax_delay_slots(), rtl_can_merge_blocks(), simplejump_or_return_p(), try_optimize_cfg(), and try_redirect_by_replacing_jump().
|
extern |
Return the set of hard registers that are able to form the subreg described by SHAPE.
References inchash::hash::add_hwi(), inchash::hash::end(), i, subreg_shape::inner_mode, subreg_shape::offset, subreg_shape::outer_mode, SET_HARD_REG_BIT, simplifiable_subreg::simplifiable_regs, simplify_subreg_regno(), targetm, this_target_hard_regs, and subreg_shape::unique_id().
Referenced by record_subregs_of_mode().
References simplify_context::simplify_binary_operation().
Referenced by combine_simplify_rtx(), const_vec_series_p_1(), eliminate_constant_term(), expand_and(), fold_rtx(), force_int_to_mode(), simplify_comparison(), simplify_const_binary_operation(), simplify_const_relational_operation(), simplify_expand_binop(), simplify_rtx(), and simplify_while_replacing().
References wi::add(), wi::arshift(), wi::bit_and(), wi::bit_or(), wi::bit_xor(), BITS_PER_WORD, rtx_vector_builder::build(), wi::clrsb(), wi::clz(), CONST_DOUBLE_AS_FLOAT_P, const_double_from_real_value(), CONST_DOUBLE_REAL_VALUE, CONST_FIXED_P, CONST_SCALAR_INT_P, CONST_VECTOR_DUPLICATE_P, CONST_VECTOR_ELT, CONST_VECTOR_NPATTERNS, CONST_VECTOR_NUNITS, CONST_VECTOR_STEPPED_P, count, dconst0, distributes_over_addition_p(), wi::div_trunc(), vector_builder< T, Shape, Derived >::encoded_nelts(), wi::eq_p(), f1, gcc_assert, gcc_unreachable, gen_rtx_CONST_VECTOR(), GET_CODE, GET_MODE, GET_MODE_INNER, GET_MODE_NUNITS(), GET_MODE_PRECISION(), wi::geu_p(), HONOR_NANS(), HONOR_SNANS(), HOST_BITS_PER_DOUBLE_INT, i, immed_wide_int_const(), is_a(), wi::leu_p(), wi::lrotate(), wi::lrshift(), wi::lshift(), wi::max_value(), wi::min_value(), wi::mod_trunc(), MODE_COMPOSITE_P, MODE_HAS_INFINITIES, wi::mul(), wi::mul_high(), wi::neg_p(), vector_builder< T, Shape, Derived >::new_binary_operation(), NULL_RTX, NUM_POLY_INT_COEFFS, wi::OVF_NONE, wi::OVF_OVERFLOW, wi::OVF_UNDERFLOW, poly_int_rtx_p(), r, real_arithmetic(), real_convert(), real_copysign(), real_equal(), real_from_target(), real_identical(), real_to_target(), REAL_VALUE_ISINF, REAL_VALUE_ISSIGNALING_NAN, REAL_VALUE_NEGATIVE, REAL_VALUE_TYPE, wi::rrotate(), rtvec_alloc(), RTVEC_ELT, rtx_to_tree_code(), SCALAR_FLOAT_MODE_P, shift, SHIFT_COUNT_TRUNCATED, SIGNED, simplify_binary_operation(), wi::smax(), wi::smin(), wi::sub(), poly_int< N, C >::to_constant(), wi::to_poly_wide(), wi::umax(), wi::umin(), wi::umod_trunc(), UNSIGNED, valid_for_const_vector_p(), VECTOR_MODE_P, and word_mode.
Referenced by find_shift_sequence(), simplify_context::simplify_binary_operation(), simplify_context::simplify_plus_minus(), and simplify_shift_const_1().
|
extern |
Check if the given comparison (done in the given MODE) is actually a tautology or a contradiction. If the mode is VOIDmode, the comparison is done in "infinite precision". If no simplification is possible, this function returns zero. Otherwise, it returns either const_true_rtx or const0_rtx.
References avoid_constant_pool_reference(), CMP_EQ, CMP_GT, CMP_GTU, CMP_LT, CMP_LTU, comparison_result(), CONST0_RTX, const0_rtx, CONST_DOUBLE_AS_FLOAT_P, CONST_DOUBLE_REAL_VALUE, CONST_INT_P, CONST_SCALAR_INT_P, const_true_rtx, CONST_VECTOR_P, d1, wi::eq_p(), gcc_assert, GET_CODE, GET_MODE, get_mode_bounds(), GET_MODE_CLASS, GET_MODE_MASK, GET_MODE_PRECISION(), HONOR_NANS(), HONOR_SNANS(), HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT_1U, HWI_COMPUTABLE_MODE_P(), INTEGRAL_MODE_P, INTVAL, is_a(), wi::lts_p(), wi::ltu_p(), nonzero_address_p(), nonzero_bits(), NULL_RTX, num_sign_bit_copies(), real_equal(), real_less(), REAL_VALUE_ISNAN, REAL_VALUE_TYPE, REG_P, rtx_equal_p(), SCALAR_FLOAT_MODE_P, side_effects_p(), signed_condition(), simplify_binary_operation(), simplify_const_relational_operation(), swap_commutative_operands_p(), swap_condition(), UINTVAL, and XEXP.
Referenced by simplify_const_relational_operation(), and simplify_context::simplify_relational_operation().
|
extern |
Try to compute the value of a unary operation CODE whose output mode is to be MODE with input operand OP whose mode was originally OP_MODE. Return zero if the value cannot be computed.
References wi::abs(), as_a(), wi::bit_not(), wi::bitreverse(), wi::bswap(), rtx_vector_builder::build(), wi::clrsb(), wi::clz(), CLZ_DEFINED_VALUE_AT_ZERO, const0_rtx, CONST_DOUBLE_AS_FLOAT_P, const_double_from_real_value(), CONST_DOUBLE_REAL_VALUE, CONST_POLY_INT_P, const_poly_int_value(), CONST_SCALAR_INT_P, CONST_VECTOR_DUPLICATE_P, CONST_VECTOR_ELT, CONST_VECTOR_NPATTERNS, CONST_VECTOR_NUNITS, count, wi::ctz(), CTZ_DEFINED_VALUE_AT_ZERO, vector_builder< T, Shape, Derived >::encoded_nelts(), exact_real_truncate(), wi::ffs(), wide_int_storage::from(), gcc_assert, gcc_unreachable, gen_const_vec_duplicate(), GET_CODE, GET_MODE, GET_MODE_CLASS, GET_MODE_INNER, GET_MODE_NUNITS(), GET_MODE_PRECISION(), HONOR_SIGN_DEPENDENT_ROUNDING(), HONOR_SNANS(), HOST_BITS_PER_DOUBLE_INT, i, immed_wide_int_const(), is_a(), is_int_mode(), known_eq, wi::max(), wi::max_value(), wi::min(), wi::min_value(), wi::ne_p(), wi::neg(), vector_builder< T, Shape, Derived >::new_unary_operation(), NULL, NULL_RTX, wi::only_sign_bit_p(), wi::parity(), wi::popcount(), real_arithmetic(), real_convert(), real_from_integer(), real_from_target(), real_less(), real_to_integer(), real_to_target(), real_value_abs(), REAL_VALUE_ISINF, REAL_VALUE_ISNAN, REAL_VALUE_ISSIGNALING_NAN, real_value_negate(), REAL_VALUE_NEGATIVE, real_value_truncate(), REAL_VALUE_TYPE, SCALAR_FLOAT_MODE_P, wi::shwi(), SIGNED, simplify_unary_operation(), UNSIGNED, valid_for_const_vector_p(), and VECTOR_MODE_P.
Referenced by simplify_context::simplify_unary_operation().
References simplify_context::simplify_gen_binary().
Referenced by addr_for_mem_ref(), anti_adjust_stack_and_probe(), apply_distributive_law(), base_to_reg(), break_out_memory_refs(), canon_reg_for_combine(), canon_rtx(), canonicalize_address(), combine_simplify_rtx(), combine_var_copies_in_loop_exit(), compute_argument_addresses(), compute_stack_clash_protection_loop_data(), distribute_and_simplify_rtx(), do_tablejump(), doloop_simplify_count(), emit_block_cmp_via_loop(), emit_block_move_via_loop(), emit_block_move_via_oriented_loop(), emit_push_insn(), expand_debug_expr(), expand_expr_addr_expr_1(), expand_expr_real_1(), expand_expr_real_2(), expand_field_assignment(), expand_shift_1(), extract_left_shift(), find_split_point(), fold_rtx(), force_int_to_mode(), gen_addr_rtx(), gen_const_vec_series(), get_addr(), get_biv_step_1(), get_iv_value(), if_then_else_cond(), implies_p(), instantiate_virtual_regs_in_insn(), iv_add(), iv_analyze_biv(), iv_mult(), iv_number_of_iterations(), iv_shift(), iv_subreg(), lra_eliminate_regs_1(), make_compound_operation_int(), memory_load_overlap(), noce_try_bitop(), offset_address(), probe_stack_range(), process_address_1(), reverse_op(), simplify_and_const_int(), simplify_and_const_int_1(), simplify_comparison(), simplify_if_then_else(), simplify_replace_fn_rtx(), simplify_rtx(), simplify_set(), simplify_shift_const(), simplify_shift_const_1(), simplify_while_replacing(), split_iv(), try_combine(), unroll_loop_runtime_iterations(), and use_narrower_mode().
|
inline |
References simplify_context::simplify_gen_relational().
Referenced by canon_reg_for_combine(), combine_simplify_rtx(), determine_max_iter(), emit_conditional_add(), emit_conditional_move(), expand_debug_expr(), if_then_else_cond(), iv_number_of_iterations(), prepare_float_lib_cmp(), reversed_comparison(), shorten_into_mode(), simplify_if_then_else(), and simplify_replace_fn_rtx().
|
inline |
References simplify_context::simplify_gen_subreg().
Referenced by adjust_mems(), convert_move(), cse_insn(), cselib_expand_value_rtx_1(), debug_lowpart_subreg(), emit_move_change_mode(), expand_debug_expr(), expand_debug_source_expr(), expand_expr_real_2(), expand_twoval_binop_libfunc(), ext_dce_try_optimize_insn(), find_reloads_toplev(), find_replacement(), find_shift_sequence(), force_operand(), force_subreg(), gen_highpart(), gen_highpart_mode(), if_then_else_cond(), instantiate_virtual_regs_in_insn(), loc_equivalence_change_p(), lra_eliminate_regs_1(), operand_subword(), read_complex_part(), resolve_simple_move(), simplify_gen_subreg_concatn(), simplify_replace_fn_rtx(), simplify_subreg_concatn(), store_bit_field_1(), store_bit_field_using_insv(), store_expr(), store_integral_bit_field(), vt_expand_loc_callback(), and write_complex_part().
References simplify_context::simplify_gen_unary().
Referenced by add_equal_note(), apply_distributive_law(), canon_reg_for_combine(), canonicalize_iv_subregs(), combine_simplify_rtx(), doloop_optimize(), doloop_simplify_count(), expand_assignment(), expand_binop(), expand_debug_expr(), expand_debug_source_expr(), expand_field_assignment(), expand_shift_1(), expand_unop(), extract_left_shift(), force_int_to_mode(), gen_lowpart_or_truncate(), get_biv_step_1(), get_iv_value(), if_then_else_cond(), insert_var_expansion_initialization(), iv_add(), iv_extend(), iv_neg(), iv_number_of_iterations(), known_cond(), make_compound_operation_int(), make_extraction(), resolve_shift_zext(), simplify_comparison(), simplify_if_then_else(), simplify_replace_fn_rtx(), simplify_set(), simplify_shift_const_1(), simplify_while_replacing(), and store_bit_field_using_insv().
References simplify_context::simplify_gen_vec_select().
Referenced by find_sets_in_insn().
|
extern |
If FN is NULL, replace all occurrences of OLD_RTX in X with copy_rtx (DATA) and simplify the result. If FN is non-NULL, call this callback on each X, if it returns non-NULL, replace X with its return value and simplify the result.
References copy_rtx(), GET_CODE, GET_MODE, GET_NUM_ELEM, GET_RTX_CLASS, GET_RTX_FORMAT, i, NULL, replace_equiv_address_nv(), RTVEC_ELT, RTX_BIN_ARITH, RTX_BITFIELD_OPS, RTX_COMM_ARITH, RTX_COMM_COMPARE, RTX_COMPARE, rtx_equal_p(), RTX_EXTRA, RTX_OBJ, RTX_TERNARY, RTX_UNARY, shallow_copy_rtvec(), shallow_copy_rtx(), simplify_gen_binary(), simplify_gen_relational(), simplify_gen_subreg(), simplify_gen_ternary(), simplify_gen_unary(), simplify_replace_fn_rtx(), split_const(), SUBREG_BYTE, SUBREG_REG, UNLIKELY, XEXP, and XVEC.
Referenced by adjust_cleared_regs(), adjust_mem_stores(), adjust_mem_uses(), adjust_mems(), combine_and_move_insns(), cse_process_note(), delete_trivially_dead_insns(), lra_constraints(), prepare_call_arguments(), propagate_for_debug(), simplify_replace_fn_rtx(), simplify_replace_rtx(), and update_equiv().
Replace all occurrences of OLD_RTX in X with NEW_RTX and try to simplify the resulting RTX. Return a new RTX which is as simplified as possible.
References simplify_replace_fn_rtx().
Referenced by bypass_block(), cprop_jump(), emit_input_reload_insns(), equiv_can_be_consumed_p(), fixup_debug_insns(), forward_propagate_and_simplify(), implies_p(), maybe_merge_cfa_adjust(), noce_convert_multiple_sets_1(), reload(), replace_in_expr(), replace_single_def_regs(), simplify_using_condition(), try_combine(), try_replace_in_use(), and try_replace_reg().
Simplify X, an rtx expression. Return the simplified expression or NULL if no simplifications were possible. This is the preferred entry point into the simplification routines; however, we still allow passes to call the more specific routines. Right now GCC has three (yes, three) major bodies of RTL simplification code that need to be unified. 1. fold_rtx in cse.cc. This code uses various CSE specific information to aid in RTL simplification. 2. simplify_rtx in combine.cc. Similar to fold_rtx, except that it uses combine specific information to aid in RTL simplification. 3. The routines in this file. Long term we want to only have one body of simplification code; to get to that state I recommend the following steps: 1. Pour over fold_rtx & simplify_rtx and move any simplifications which are not pass dependent state into these routines. 2. As code is moved by #1, change fold_rtx & simplify_rtx to use this routine whenever possible. 3. Allow for pass dependent state to be provided to these routines and add simplifications based on the pass dependent state. Remove code from cse.cc & combine.cc that becomes redundant/dead. It will take time, but ultimately the compiler will be easier to maintain and improve. It's totally silly that when we add a simplification that it needs to be added to 4 places (3 for RTL simplification and 1 for tree simplification.
References GET_CODE, GET_MODE, GET_RTX_CLASS, NULL, RTX_BIN_ARITH, RTX_BITFIELD_OPS, RTX_COMM_ARITH, RTX_COMM_COMPARE, RTX_COMPARE, rtx_equal_p(), RTX_EXTRA, RTX_OBJ, RTX_TERNARY, RTX_UNARY, simplify_binary_operation(), simplify_gen_binary(), simplify_relational_operation(), simplify_subreg(), simplify_ternary_operation(), simplify_unary_operation(), SUBREG_BYTE, SUBREG_REG, swap_commutative_operands_p(), and XEXP.
Referenced by combine_set_extension(), cselib_expand_value_rtx_1(), simplify_context::simplify_relational_operation_1(), simplify_set(), simplify_subtraction(), try_replace_reg(), and validate_simplify_insn().
|
inline |
References simplify_context::simplify_subreg().
Referenced by alter_subreg(), assemble_integer(), avoid_constant_pool_reference(), combine_simplify_rtx(), emit_move_change_mode(), emit_move_insn(), emit_note_insn_var_location(), equiv_constant(), extract_low_bits(), find_reloads_subreg_address(), find_shift_sequence(), kill_value(), known_cond(), lra_substitute_pseudo(), make_compound_operation_int(), move_plus_up(), prepare_call_arguments(), replace_rtx(), simplify_operand_subreg(), simplify_rtx(), simplify_while_replacing(), store_bit_field_using_insv(), subst(), and use_narrower_mode_test().
|
extern |
Return the number of a YMODE register to which (subreg:YMODE (reg:XMODE XREGNO) OFFSET) can be simplified. Return -1 if the subreg can't be simplified. XREGNO is a hard register number.
References frame_pointer_needed, GET_MODE_CLASS, HARD_REGISTER_NUM_P, lra_in_progress, subreg_info::offset, REG_CAN_CHANGE_MODE_P, reload_completed, subreg_info::representable_p, subreg_get_info(), and targetm.
Referenced by can_decompose_p(), curr_insn_transform(), find_reloads(), ira_build_conflicts(), lowpart_subreg_regno(), operands_match_p(), process_single_reg_class_operands(), set_noop_p(), simplifiable_subregs(), simplify_operand_subreg(), simplify_context::simplify_subreg(), and subst().
Given a MINUS expression, simplify it if both sides include the same symbol.
References r, and simplify_rtx().
Referenced by output_addr_const().
|
inline |
References simplify_context::simplify_ternary_operation().
Referenced by combine_simplify_rtx(), cselib_expand_value_rtx_1(), fold_rtx(), and simplify_rtx().
|
inline |
References simplify_context::simplify_unary_operation().
Referenced by combine_simplify_rtx(), convert_memory_address_addr_space_1(), convert_mode_scalar(), cselib_expand_value_rtx_1(), expand_copysign(), expand_copysign_absneg(), flip_storage_order(), fold_rtx(), known_cond(), lra_substitute_pseudo(), make_compound_operation(), make_extraction(), negate_rtx(), replace_rtx(), simplify_comparison(), simplify_const_unary_operation(), simplify_rtx(), simplify_while_replacing(), and subst().
Tries to use the fact that COND holds to simplify EXPR. ALTERED is the set of altered regs.
References altered_reg_used(), canon_condition(), COMPARISON_P, const0_rtx, const_true_rtx, CONSTANT_P, exp(), GET_CODE, implies_p(), REG_P, reversed_condition(), rtx_equal_p(), simplify_replace_rtx(), and XEXP.
Referenced by simplify_using_initial_values().
Handle the cheap and common cases inline for performance.
References GET_CODE, INSN_P, NULL_RTX, PATTERN(), SET, and single_set_2().
Referenced by add_equal_note(), add_insn_allocno_copies(), add_store_equivs(), adjust_for_new_dest(), adjust_insn(), adjust_stack_1(), allocate_basic_variable(), allocate_dynamic_stack_space(), analyze_insn_to_expand_var(), analyze_iv_to_split_insn(), assign_parm_setup_reg(), assign_spill_hard_regs(), bb_ok_for_noce_convert_multiple_sets(), bb_valid_for_noce_process_p(), bbs_ok_for_cmove_arith(), find_comparison_dom_walker::before_dom_children(), calculate_elim_costs_all_insns(), calculate_equiv_gains(), calculate_gen_cands(), calculate_needs_all_insns(), can_replace_by(), cant_combine_insn_p(), cheap_bb_rtx_cost_p(), check_cond_move_block(), check_secondary_memory_needed_p(), combine_and_move_insns(), combine_instructions(), combine_reaching_defs(), combine_reload_insn(), combine_set_extension(), cond_move_convert_if_block(), conforming_compare(), constprop_register(), contains_reloaded_insn_p(), copy_frame_info_to_split_insn(), copyprop_hardreg_forward_1(), cprop_jump(), create_cands(), create_new_invariant(), cse_cc_succs(), cse_condition_code_reg(), cse_extended_basic_block(), curr_insn_transform(), dead_debug_insert_temp(), decrease_live_ranges_number(), delete_address_reloads(), delete_address_reloads_1(), delete_jump(), delete_output_reload(), delete_trivially_dead_insns(), df_find_single_def_src(), distribute_notes(), do_remat(), dwarf2out_frame_debug(), eliminate_regs_in_insn(), eliminate_regs_in_insn(), elimination_costs_in_insn(), emit_libcall_block_1(), emit_move_insn(), emit_move_list(), emit_output_reload_insns(), emit_reload_insns(), equivalent_reg_at_start(), expand_var_during_unrolling(), find_and_remove_re(), find_args_size_adjust(), find_call_crossed_cheap_reg(), find_call_stack_args(), find_constant_src(), find_decomposable_shift_zext(), find_equiv_reg(), find_identical_invariants(), find_invariant_insn(), find_moveable_pseudos(), find_moveable_store(), find_reloads(), find_removable_extensions(), fix_reg_equiv_init(), force_reg(), forward_propagate_and_simplify(), gcse_emit_move_after(), get_biv_step_1(), get_inv_cost(), get_pressure_class_and_nregs(), if_test_bypass_p(), indirect_jump_optimize(), inherit_in_ebb(), inherit_reload_reg(), init_alias_analysis(), init_eliminable_invariants(), init_noce_multiple_sets_info(), insert_base_initialization(), insn_rhs_dead_pseudo_p(), insn_valid_noce_process_p(), instantiate_virtual_regs_in_insn(), internal_arg_pointer_based_exp_scan(), inv_can_prop_to_addr_use(), is_cond_copy_insn(), is_just_move(), iv_analyze_def(), keep_with_call_p(), lra_coalesce(), lra_constraints(), lra_final_code_change(), make_edges(), make_more_copies(), maybe_clear_subreg_promoted_p(), maybe_propagate_label_ref(), move2add_use_add2_insn(), move2add_use_add3_insn(), move_invariant_reg(), move_unallocated_pseudos(), noce_convert_multiple_sets_1(), noce_process_if_block(), noce_try_abs(), noce_try_cmove_arith(), non_conflicting_reg_copy_p(), onlyjump_p(), parse_add_or_inc(), pre_delete(), process_address_1(), process_bb_lives(), process_bb_node_for_hard_reg_moves(), process_invariant_for_inheritance(), purge_dead_tablejump_edges(), record_operand_costs(), record_promoted_value(), reload_combine_recognize_const_pattern(), reload_combine_recognize_pattern(), reload_cse_move2add(), reload_cse_simplify_operands(), remove_inheritance_pseudos(), replace_store_insn(), resolve_shift_zext(), resolve_simple_move(), reverse_equiv_p(), rtl_can_remove_branch_p(), scan_one_insn(), seq_cost(), setup_reg_equiv(), simple_move(), single_set_for_csa(), sp_based_mem_offset(), split_all_insns(), split_all_insns_noflow(), split_insn(), split_iv(), steal_delay_list_from_target(), store_data_bypass_p(), store_data_bypass_p_1(), suitable_set_for_replacement(), tablejump_casesi_pattern(), try_combine(), try_merge_compare(), try_redirect_by_replacing_jump(), try_replace_in_use(), try_replace_reg(), undo_optional_reloads(), union_defs(), update_ebb_live_info(), update_equiv_regs(), and will_delete_init_insn_p().
Functions in rtlanal.cc
Given an INSN, return a SET expression if this insn has only a single SET. It may also have CLOBBERs, USEs, or SET whose output will not be used, which we ignore.
References find_reg_note(), GET_CODE, i, NULL, NULL_RTX, set_of_data::pat, SET, SET_DEST, side_effects_p(), XVECEXP, and XVECLEN.
Referenced by single_set().
|
extern |
Split all insns in the function. If UPD_LIFE, update life info after.
References BB_END, BB_HEAD, bitmap_clear(), bitmap_set_bit, cfun, changed, checking_verify_flow_info(), cleanup_cfg(), default_rtl_profile(), delete_insn_and_edges(), find_many_sub_basic_blocks(), find_reg_note(), FOR_EACH_BB_REVERSE_FN, basic_block_def::index, INSN_P, last_basic_block_for_fn, NEXT_INSN(), NULL_RTX, reload_completed, rtl_profile_for_bb(), set_noop_p(), single_set(), and split_insn().
|
extern |
Same as split_all_insns, but do not expect CFG to be available. Used by machine dependent reorg passes.
References delete_insn_and_edges(), get_insns(), INSN_P, NEXT_INSN(), reload_completed, set_noop_p(), single_set(), and split_insn().
Split X into a base and a constant offset, storing them in *BASE_OUT and *OFFSET_OUT respectively.
References const0_rtx, CONST_INT_P, GET_CODE, and XEXP.
Referenced by insn_propagation::apply_to_rvalue_1(), and simplify_replace_fn_rtx().
Split up a CONST_DOUBLE or integer constant rtx into two rtx's for single words, storing in *FIRST the word that comes first in memory in the target and in *SECOND the other. TODO: This function needs to be rewritten to work on any size integer.
References BITS_PER_WORD, const0_rtx, CONST_DOUBLE_HIGH, CONST_DOUBLE_LOW, CONST_DOUBLE_P, CONST_DOUBLE_REAL_VALUE, CONST_INT_P, CONST_WIDE_INT_ELT, CONST_WIDE_INT_NUNITS, constm1_rtx, gcc_assert, GEN_INT, GET_CODE, GET_MODE, GET_MODE_CLASS, HOST_BITS_PER_LONG, HOST_BITS_PER_WIDE_INT, INTVAL, and REAL_VALUE_TO_TARGET_DOUBLE.
Referenced by emit_group_load_1().
In insn-recog.cc (generated by genrecog).
Referenced by combine_split_insns(), and try_split().
|
extern |
Begin emitting insns to a sequence. If this sequence will contain something that might cause the compiler to pop arguments to function calls (because those pops have previously been deferred; see INHIBIT_DEFER_POP for more details), use do_pending_stack_adjust before calling this function. That will ensure that the deferred pops are not accidentally emitted in the middle of this sequence.
References sequence_stack::first, free_sequence_stack, get_current_sequence(), get_insns(), get_last_insn(), ggc_alloc(), sequence_stack::last, sequence_stack::next, NULL, set_first_insn(), and set_last_insn().
Referenced by add_test(), asan_clear_shadow(), asan_emit_allocas_unpoison(), asan_emit_stack_protection(), assign_parm_setup_reg(), attempt_change(), check_and_process_move(), combine_reaching_defs(), combine_var_copies_in_loop_exit(), compare_and_jump_seq(), computation_cost(), compute_can_copy(), cond_move_process_if_block(), convert_mode_scalar(), curr_insn_transform(), do_remat(), doloop_modify(), dw2_build_landing_pads(), emit_common_heads_for_components(), emit_common_tails_for_components(), emit_delay_sequence(), emit_inc_dec_insn_before(), emit_initial_value_sets(), emit_move_list(), emit_move_multi_word(), emit_output_reload_insns(), emit_partition_copy(), expand_absneg_bit(), expand_asm_stmt(), expand_atomic_fetch_op(), expand_binop(), expand_builtin_apply_args(), expand_builtin_int_roundingfn(), expand_builtin_int_roundingfn_2(), expand_builtin_mathfn_3(), expand_builtin_mathfn_ternary(), expand_builtin_saveregs(), expand_builtin_strlen(), expand_call(), expand_clrsb_using_clz(), expand_cond_expr_using_cmove(), expand_copysign_bit(), expand_ctz(), expand_DIVMOD(), expand_doubleword_clz_ctz_ffs(), expand_doubleword_popcount(), expand_expr_divmod(), expand_expr_real_2(), expand_ffs(), expand_fix(), expand_fixed_convert(), expand_float(), expand_function_end(), expand_POPCOUNT(), expand_sdiv_pow2(), expand_twoval_binop_libfunc(), expand_unop(), expmed_mult_highpart_optab(), find_shift_sequence(), fix_crossing_unconditional_branches(), gen_call_used_regs_seq(), gen_clobber(), gen_cond_trap(), gen_move_insn(), gen_use(), get_arg_pointer_save_area(), get_uncond_jump_length(), hwasan_emit_untag_frame(), hwasan_frame_base(), inherit_in_ebb(), inherit_reload_reg(), init_set_costs(), initialize_uninitialized_regs(), inline_string_cmp(), insert_base_initialization(), insert_insn_on_edge(), insert_move_for_subreg(), insert_prologue_epilogue_for_components(), insert_value_copy_on_edge(), insert_var_expansion_initialization(), instantiate_virtual_regs_in_insn(), ira(), lra_process_new_insns(), make_epilogue_seq(), make_prologue_seq(), make_split_prologue_seq(), match_asm_constraints_1(), match_reload(), maybe_optimize_mod_cmp(), maybe_optimize_pow2p_mod_cmp(), noce_convert_multiple_sets(), noce_emit_cmove(), noce_emit_move_insn(), noce_emit_store_flag(), noce_process_if_block(), noce_try_abs(), noce_try_addcc(), noce_try_bitop(), noce_try_cmove(), noce_try_cmove_arith(), noce_try_cond_zero_arith(), noce_try_ifelse_collapse(), noce_try_inverse_constants(), noce_try_minmax(), noce_try_move(), noce_try_sign_mask(), noce_try_store_flag(), noce_try_store_flag_constants(), noce_try_store_flag_mask(), prepare_copy_insn(), prepare_float_lib_cmp(), prepend_insn_to_edge(), process_addr_reg(), process_address_1(), process_invariant_for_inheritance(), push_to_sequence(), push_to_sequence2(), push_topmost_sequence(), record_store(), remove_inheritance_pseudos(), replace_read(), resolve_shift_zext(), resolve_simple_move(), rtl_lv_add_condition_to_bb(), sjlj_emit_dispatch_table(), sjlj_emit_function_enter(), sjlj_emit_function_exit(), sjlj_mark_call_sites(), split_iv(), thread_prologue_and_epilogue_insns(), try_emit_cmove_seq(), and unroll_loop_runtime_iterations().
Strip outer address "mutations" from LOC and return a pointer to the inner value. If OUTER_CODE is nonnull, store the code of the innermost stripped expression there. "Mutations" either convert between modes or apply some kind of extension, truncation or alignment.
References CONST_INT_P, CONSTANT_P, GET_CODE, GET_RTX_CLASS, lsb_bitfield_op_p(), OBJECT_P, RTX_UNARY, subreg_lowpart_p(), SUBREG_REG, and XEXP.
Referenced by decompose_address(), decompose_automod_address(), decompose_normal_address(), get_base_term(), and get_index_term().
|
extern |
Express integer value X as some value Y plus a polynomial offset, where Y is either const0_rtx, X or something within X (as opposed to a new rtx). Return the Y and store the offset in *OFFSET_OUT.
References const0_rtx, GET_CODE, poly_int_rtx_p(), and XEXP.
Referenced by avoid_constant_pool_reference(), delegitimize_mem_from_attrs(), dwarf2out_frame_debug_def_cfa(), find_args_size_adjust(), find_temp_slot_from_address(), pair_fusion::find_trailing_add(), fixup_debug_uses_trailing_add(), pair_fusion_bb_info::fuse_pair(), indirect_operand(), pair_mem_strip_offset(), set_mem_attrs_for_spill(), store_one_arg(), strip_offset_and_add(), pair_fusion::try_promote_writeback(), vt_add_function_parameter(), and vt_canonicalize_addr().
|
inline |
If X is a PLUS of a base and a constant offset, add the constant to *OFFSET and return the base. Return X otherwise.
References GET_CODE, and strip_offset().
Referenced by based_loc_descr(), canon_address(), compute_frame_pointer_to_fb_displacement(), emit_note_insn_var_location(), and nonoverlapping_memrefs_p().
|
extern |
Fill in information about a subreg of a hard register. xregno - A regno of an inner hard subreg_reg (or what will become one). xmode - The mode of xregno. offset - The byte offset. ymode - The mode of a top level SUBREG (or what may become one). info - Pointer to structure to fill in. Rather than considering one particular inner register (and thus one particular "outer" register) in isolation, this function really uses XREGNO as a model for a sequence of isomorphic hard registers. Thus the function does not check whether adding INFO->offset to XREGNO gives a valid hard register; even if INFO->offset + XREGNO is out of range, there might be another register of the same type that is in range. Likewise it doesn't check whether targetm.hard_regno_mode_ok accepts the new register, since that can depend on things like whether the final register number is even or odd. Callers that want to check whether this particular subreg can be replaced by a simple (reg ...) should use simplify_subreg_regno.
References count, gcc_assert, gcc_checking_assert, gcc_unreachable, GET_MODE_INNER, GET_MODE_NUNITS(), GET_MODE_SIZE(), hard_regno_nregs(), HARD_REGNO_NREGS_HAS_PADDING, HARD_REGNO_NREGS_WITH_PADDING, known_eq, maybe_gt, subreg_info::nregs, subreg_info::offset, REG_WORDS_BIG_ENDIAN, subreg_info::representable_p, subreg_lowpart_offset(), subreg_size_lowpart_offset(), and poly_int< N, C >::to_constant().
Referenced by rtx_renumbered_equal_p(), simplify_subreg_regno(), subreg_nregs_with_regno(), subreg_offset_representable_p(), subreg_regno_offset(), and true_regnum().
|
inline |
Return the SUBREG_BYTE for an OUTERMODE highpart of an INNERMODE value.
References GET_MODE_SIZE(), and subreg_size_highpart_offset().
Referenced by expand_builtin_issignaling(), expand_expr_real_2(), force_highpart_subreg(), gen_highpart(), gen_highpart_mode(), and simplify_context::simplify_subreg().
|
inline |
Return the SUBREG_BYTE for an OUTERMODE lowpart of an INNERMODE value.
References GET_MODE_SIZE(), and subreg_size_lowpart_offset().
Referenced by insn_propagation::apply_to_rvalue_1(), assign_parm_find_stack_rtl(), assign_parm_setup_stack(), byte_lowpart_offset(), combine_simplify_rtx(), compute_reload_subreg_offset(), copy_value(), copyprop_hardreg_forward_1(), cse_insn(), debug_lowpart_subreg(), emit_group_store(), equiv_constant(), expand_builtin_issignaling(), extract_low_bits(), find_shift_sequence(), force_lowpart_subreg(), gen_lowpart_for_debug(), gen_lowpart_if_possible(), gen_lowpart_SUBREG(), get_stored_val(), simplify_context::lowpart_subreg(), lowpart_subreg_regno(), lra_substitute_pseudo(), move2add_valid_value_p(), move_plus_up(), process_single_reg_class_operands(), simplify_context::simplify_gen_vec_select(), simplify_context::simplify_subreg(), simplify_context::simplify_truncation(), subreg_get_info(), subreg_lowpart_p(), subreg_memory_offset(), use_narrower_mode_test(), and var_lowpart().
Return true iff X, assumed to be a SUBREG, refers to the least significant part of its containing reg. If X is not a SUBREG, always return true (it is its own low part!).
References GET_CODE, GET_MODE, known_eq, SUBREG_BYTE, subreg_lowpart_offset(), and SUBREG_REG.
Referenced by adjust_mems(), alter_subreg(), change_zero_ext(), dead_debug_insert_temp(), df_word_lr_mark_ref(), eliminate_regs_in_insn(), eliminate_regs_in_insn(), expand_compound_operation(), expand_field_assignment(), expand_shift_1(), ext_dce_process_uses(), force_to_mode(), forward_propagate_subreg(), get_biv_step_1(), get_last_value(), iv_analyze_op(), loc_descriptor(), make_compound_operation_int(), make_extraction(), make_field_assignment(), mark_pseudo_reg_dead(), mark_pseudo_reg_live(), match_plus_neg_pattern(), mem_loc_descriptor(), move_plus_up(), notreg_cost(), push_reload(), record_dead_and_set_regs_1(), record_jump_cond(), set_reg_attrs_for_decl_rtl(), set_reg_attrs_from_value(), set_rtl(), simple_reg_p(), simplify_context::simplify_binary_operation_1(), simplify_comparison(), simplify_if_then_else(), simplify_context::simplify_relational_operation_1(), simplify_set(), simplify_shift_const_1(), simplify_context::simplify_subreg(), simplify_context::simplify_ternary_operation(), simplify_context::simplify_truncation(), simplify_context::simplify_unary_operation_1(), strip_address_mutations(), and try_combine().
|
extern |
Given a subreg X, return the bit offset where the subreg begins (counting from the least significant bit of the reg).
References GET_MODE, SUBREG_BYTE, subreg_lsb_1(), and SUBREG_REG.
Referenced by expand_field_assignment(), ext_dce_process_sets(), and ext_dce_process_uses().
|
inline |
Given a subreg's OUTER_MODE, INNER_MODE, and SUBREG_BYTE, return the bit offset at which the subreg begins (counting from the least significant bit of the operand).
References GET_MODE_SIZE(), and subreg_size_lsb().
Referenced by simplify_context::simplify_subreg(), and subreg_lsb().
|
extern |
As above, but return the offset that existing subreg X would have if SUBREG_REG (X) were stored in memory. The only significant thing about the current SUBREG_REG is its mode.
References GET_MODE, SUBREG_BYTE, subreg_memory_offset(), and SUBREG_REG.
|
extern |
Return the offset of (subreg:OUTER_MODE (mem:INNER_MODE X) OFFSET) from address X. For paradoxical big-endian subregs this is a negative value, otherwise it's the same as OFFSET.
References gcc_assert, known_eq, paradoxical_subreg_p(), and subreg_lowpart_offset().
Referenced by simplify_context::simplify_binary_operation_1(), simplify_context::simplify_subreg(), store_bit_field_1(), subreg_memory_offset(), and undefined_operand_subword_p().
|
extern |
Return the number of registers that a subreg expression refers to.
References REGNO, subreg_nregs_with_regno(), and SUBREG_REG.
Referenced by add_stored_regs(), decompose(), df_ref_record(), mark_referenced_resources(), mark_set_regs(), mark_set_resources(), move2add_record_mode(), refers_to_regno_for_reload_p(), refers_to_regno_p(), reg_overlap_mentioned_for_reload_p(), reg_overlap_mentioned_p(), and update_live_status().
|
extern |
Return the number of registers that a subreg REG with REGNO expression refers to. This is a copy of the rtlanal.cc:subreg_nregs changed so that the regno can be passed in.
References GET_MODE, subreg_info::nregs, SUBREG_BYTE, subreg_get_info(), and SUBREG_REG.
Referenced by subreg_nregs().
|
inline |
Return the subreg byte offset for a subreg whose outer mode is OUTER_MODE, whose inner mode is INNER_MODE, and where there are LSB_SHIFT *bits* between the lsb of the outer value and the lsb of the inner value. This is the inverse of subreg_lsb_1 (which converts byte offsets to bit shifts).
References GET_MODE_SIZE(), and subreg_size_offset_from_lsb().
Referenced by find_shift_sequence(), and make_extraction().
|
extern |
This function returns true when the offset is representable via subreg_offset in the given regno. xregno - A regno of an inner hard subreg_reg (or what will become one). xmode - The mode of xregno. offset - The byte offset. ymode - The mode of a top level SUBREG (or what may become one). RETURN - Whether the offset is representable.
References subreg_info::offset, subreg_info::representable_p, and subreg_get_info().
Referenced by validate_subreg().
|
inline |
Return the promoted (inner) mode of SUBREG_PROMOTED_VAR_P subreg X.
References as_a(), gcc_checking_assert, GET_MODE, SUBREG_PROMOTED_VAR_P, and SUBREG_REG.
Referenced by convert_modes(), convert_move(), expand_assignment(), and store_expr().
|
extern |
Return the final regno that a subreg expression refers to.
References GET_MODE, REGNO, SUBREG_BYTE, SUBREG_REG, and subreg_regno_offset().
Referenced by alter_subreg(), choose_reload_regs(), find_reloads_address_1(), mark_referenced_resources(), mark_set_regs(), mark_set_resources(), move2add_note_store(), move2add_record_mode(), push_reload(), refers_to_regno_for_reload_p(), refers_to_regno_p(), reg_overlap_mentioned_p(), reload_inner_reg_of_subreg(), and update_live_status().
|
extern |
This function returns the regno offset of a subreg expression. xregno - A regno of an inner hard subreg_reg (or what will become one). xmode - The mode of xregno. offset - The byte offset. ymode - The mode of a top level SUBREG (or what may become one). RETURN - The regno offset which would be used.
References subreg_info::offset, and subreg_get_info().
Referenced by add_stored_regs(), choose_reload_regs(), constrain_operands(), df_ref_record(), find_dummy_reload(), find_reloads(), find_reloads_address_1(), get_hard_regno(), go_through_subreg(), maybe_mode_change(), move2add_valid_value_p(), operands_match_p(), push_reload(), reg_overlap_mentioned_for_reload_p(), reload_combine_note_store(), subreg_regno(), and var_lowpart().
|
extern |
Return the SUBREG_BYTE for a highpart subreg whose outer mode has OUTER_BYTES bytes and whose inner mode has INNER_BYTES bytes.
References gcc_assert, known_ge, and subreg_size_offset_from_lsb().
Referenced by subreg_highpart_offset().
|
extern |
Return the SUBREG_BYTE for a lowpart subreg whose outer mode has OUTER_BYTES bytes and whose inner mode has INNER_BYTES bytes.
References gcc_checking_assert, maybe_gt, and subreg_size_offset_from_lsb().
Referenced by alter_reg(), assign_mem_slot(), maybe_mode_change(), subreg_get_info(), and subreg_lowpart_offset().
|
extern |
Reinterpret a subreg as a bit extraction from an integer and return the position of the least significant bit of the extracted value. In other words, if the extraction were performed as a shift right and mask, return the number of bits to shift right. The outer value of the subreg has OUTER_BYTES bytes and starts at byte offset SUBREG_BYTE within an inner value of INNER_BYTES bytes.
References gcc_assert, gcc_checking_assert, known_eq, known_le, and maybe_gt.
Referenced by native_decode_rtx(), native_encode_rtx(), and subreg_lsb_1().
|
extern |
Return the subreg byte offset for a subreg whose outer value has OUTER_BYTES bytes, whose inner value has INNER_BYTES bytes, and where there are LSB_SHIFT *bits* between the lsb of the outer value and the lsb of the inner value. This is the inverse of the calculation performed by subreg_lsb_1 (which converts byte offsets to bit shifts).
References gcc_checking_assert, known_eq, and maybe_gt.
Referenced by native_decode_rtx(), subreg_offset_from_lsb(), subreg_size_highpart_offset(), and subreg_size_lowpart_offset().
|
inline |
Return the unpromoted (outer) mode of SUBREG_PROMOTED_VAR_P subreg X.
References as_a(), gcc_checking_assert, GET_MODE, and SUBREG_PROMOTED_VAR_P.
Referenced by expand_assignment(), and store_expr().
Return true iff it is necessary to swap operands of commutative operation in order to canonicalize expression.
References commutative_operand_precedence(), and y.
Referenced by insn_propagation::apply_to_rvalue_1(), canon_condition(), canonicalize_change_group(), do_compare_rtx_and_jump(), emit_cmp_and_jump_insns(), emit_conditional_add(), emit_conditional_move(), emit_store_flag_1(), emit_store_flag_force(), maybe_swap_commutative_operands(), simplify_context::simplify_associative_operation(), simplify_context::simplify_binary_operation(), simplify_comparison(), simplify_const_relational_operation(), simplify_context::simplify_gen_binary(), simplify_context::simplify_plus_minus(), simplify_context::simplify_relational_operation(), simplify_rtx(), simplify_context::simplify_ternary_operation(), and simplify_while_replacing().
Similar, but return the code when two operands of a comparison are swapped. This IS safe for IEEE floating-point.
References gcc_unreachable.
Referenced by canon_condition(), canonicalize_condition(), canonicalize_iv_subregs(), do_compare_rtx_and_jump(), do_store_flag(), emit_cmp_and_jump_insns(), emit_conditional_add(), emit_conditional_move(), emit_store_flag_1(), emit_store_flag_force(), if_then_else_cond(), iv_number_of_iterations(), known_cond(), noce_get_alt_condition(), noce_try_minmax(), outgoing_edges_match(), prepare_float_lib_cmp(), simplify_comparison(), simplify_const_relational_operation(), simplify_context::simplify_relational_operation(), and simplify_while_replacing().
For INSN known to satisfy tablejump_p, determine if it actually is a CASESI. Return the insn pattern if so, NULL_RTX otherwise.
References GET_CODE, NULL, NULL_RTX, pc_rtx, SET_DEST, SET_SRC, single_set(), and XEXP.
Referenced by create_trace_edges(), and patch_jump_insn().
|
extern |
If INSN is a tablejump return true and store the label (before jump table) to *LABELP and the jump table to *TABLEP. LABELP and TABLEP may be NULL.
References ANY_RETURN_P, as_a(), JUMP_LABEL, JUMP_P, JUMP_TABLE_DATA_P, next_insn(), NULL_RTX, and table.
Referenced by bb_has_well_behaved_predecessors(), can_fallthru(), cfg_layout_can_duplicate_bb_p(), cond_exec_find_if_block(), create_trace_edges(), dead_or_predicable(), default_invalid_within_doloop(), delete_related_insns(), find_bb_boundaries(), fix_crossing_unconditional_branches(), force_nonfallthru_and_redirect(), get_last_bb_insn(), label_is_jump_target_p(), make_edges(), merge_blocks_move_successor_nojumps(), outgoing_edges_match(), patch_jump_insn(), reorder_basic_blocks_simple(), rtl_can_remove_branch_p(), rtl_tidy_fallthru_edge(), try_crossjump_to_edge(), try_optimize_cfg(), and try_redirect_by_replacing_jump().
Return true if X contains a thread-local symbol.
References ALL, FOR_EACH_SUBRTX, GET_CODE, SYMBOL_REF_TLS_MODEL, and targetm.
True dependence: X is read after store in MEM takes place.
References NULL_RTX, and true_dependence_1().
Referenced by find_mem_conflicts(), load_kills_store(), memref_referenced_p(), mems_conflict_for_gcse_p(), and safe_from_p().
|
extern |
If X is a hard register or equivalent to one or a subregister of one, return the hard register number. If X is a pseudo register that was not assigned a hard register, return the pseudo register number. Otherwise, return -1. Any rtx is valid for X.
References GET_CODE, GET_MODE, lra_in_progress, subreg_info::offset, REG_P, reg_renumber, REGNO, subreg_info::representable_p, SUBREG_BYTE, subreg_get_info(), SUBREG_REG, and true_regnum().
Referenced by choose_reload_regs(), clear_reload_reg_in_use(), deallocate_reload_reg(), decompose(), find_equiv_reg(), find_reusable_reload(), reload_cse_simplify_operands(), reload_cse_simplify_set(), reload_reg_free_for_value_p(), set_reload_reg(), and true_regnum().
|
extern |
In explow.cc
Truncate and perhaps sign-extend C as appropriate for MODE.
References as_a(), gcc_assert, GET_MODE_PRECISION(), HOST_BITS_PER_WIDE_INT, SCALAR_INT_MODE_P, and STORE_FLAG_VALUE.
Referenced by adjust_address_1(), assign_stack_local_1(), avoid_expensive_constant(), const_int_operand(), cse_insn(), cselib_hash_plus_const_int(), cselib_hash_rtx(), do_SUBST(), eliminate_regs_in_insn(), eliminate_regs_in_insn(), expand_one_stack_var_at(), find_split_point(), gen_int_mode(), general_operand(), immediate_operand(), make_compound_operation_int(), maybe_legitimize_operand(), mem_loc_descriptor(), merge_outer_ops(), move2add_note_store(), noce_try_cmove(), noce_try_store_flag_constants(), reload_combine_recognize_pattern(), reload_cse_move2add(), simplify_context::simplify_binary_operation_1(), simplify_compare_const(), simplify_comparison(), simplify_shift_const_1(), simplify_context::simplify_truncation(), and trunc_int_for_mode().
|
extern |
Likewise for polynomial values, using the sign-extended representation for each individual coefficient.
References poly_int< N, C >::coeffs, i, NUM_POLY_INT_COEFFS, and trunc_int_for_mode().
Suppose that truncation from the machine mode of X to MODE is not a no-op. See if there is anything special about X so that we can assume it already contains a truncated value of MODE.
References GET_MODE, num_sign_bit_copies(), num_sign_bit_copies_in_rep, REG_P, and rtl_hooks::reg_truncated_to_mode.
Referenced by simplify_context::simplify_unary_operation_1().
In emit-rtl.cc
Try splitting insns that can be split for better scheduling. PAT is the pattern which might split. TRIAL is the insn providing PAT. LAST is nonzero if we should return the last insn of the sequence produced. If this routine succeeds in splitting, it returns the first or last replacement insn depending on the value of LAST. Otherwise, it returns TRIAL. If the insn to be returned can be split, it will be.
References add_reg_br_prob_note(), add_reg_note(), any_condjump_p(), AUTO_INC_DEC, CALL_INSN_FUNCTION_USAGE, CALL_P, copy_frame_info_to_split_insn(), copy_reg_eh_region_note_backward(), CROSSING_JUMP_P, delete_insn(), rtx_insn::deleted(), emit_insn_after_setloc(), find_auto_inc(), FIND_REG_INC_NOTE, find_reg_note(), fixup_args_size_notes(), profile_probability::from_reg_br_prob_note(), gcc_assert, get_args_size(), get_last_insn(), profile_probability::initialized_p(), INSN_LOCATION(), INSN_P, JUMP_P, last, mark_jump_label(), mark_label_nuses(), NEXT_INSN(), NONJUMP_INSN_P, NULL, NULL_RTX, PATTERN(), PREV_INSN(), REG_NOTE_KIND, REG_NOTES, reload_completed, rtx_equal_p(), RTX_FRAME_RELATED_P, SIBLING_CALL_P, split_branch_probability, split_insns(), try_split(), profile_probability::uninitialized(), unshare_all_rtl_in_chain(), XEXP, and XINT.
Referenced by fill_simple_delay_slots(), fill_slots_from_thread(), final_scan_insn_1(), split_insn(), thread_prologue_and_epilogue_insns(), try_merge_delay_insns(), and try_split().
|
extern |
References cfun, copy_rtx_if_shared(), DECL_ARGUMENTS, DECL_CHAIN, DECL_INCOMING_RTL, DECL_RTL, DECL_RTL_SET_P, get_insns(), SET_DECL_RTL, and unshare_all_rtl_1().
|
extern |
Go through all the RTL insn bodies and copy any invalid shared structure, again. This is a fairly expensive thing to do so it should be done sparingly.
References CALL_INSN_FUNCTION_USAGE, CALL_P, cfun, DECL_ARGUMENTS, DECL_CHAIN, DECL_INITIAL, DECL_RTL, FOR_EACH_VEC_SAFE_ELT, i, INSN_P, NEXT_INSN(), PATTERN(), REG_NOTES, reset_used_flags(), set_used_decls(), set_used_flags(), stack_slot_list, and unshare_all_rtl_1().
|
extern |
Go through all the RTL insn bodies and copy any invalid shared structure. Assumes the mark bits are cleared at entry.
References CALL_INSN_FUNCTION_USAGE, CALL_P, copy_rtx_if_shared(), INSN_P, NEXT_INSN(), PATTERN(), and REG_NOTES.
Referenced by add_test(), doloop_modify(), end_ifcvt_sequence(), noce_convert_multiple_sets(), noce_process_if_block(), try_split(), unroll_loop_runtime_iterations(), and unshare_all_rtl_1().
Given a comparison CODE, return the corresponding unsigned comparison. If CODE is an equality comparison or already an unsigned comparison, CODE is returned.
References gcc_unreachable.
Referenced by do_compare_rtx_and_jump(), emit_cmp_and_jump_insns(), emit_conditional_add(), emit_conditional_move(), emit_store_flag_1(), simplify_comparison(), and unsigned_condition_p().
Return true if integer comparison operator CODE interprets its operands as unsigned.
References unsigned_condition().
Referenced by canonicalize_comparison().
Return TRUE if OP is a register or subreg of a register that holds an unsigned quantity. Otherwise, return FALSE.
References GET_CODE, REG_EXPR, REG_P, SUBREG_PROMOTED_SIGN, TREE_TYPE, and TYPE_UNSIGNED.
If X is a vector constant with a duplicated element value, return that element value, otherwise return X.
References const_vec_duplicate_p(), CONST_VECTOR_ELT, and T.
Referenced by expand_mult(), expand_rotate_as_vec_perm(), simplify_context::simplify_binary_operation_1(), and simplify_rotate_op().
|
extern |
Update INFO after a change to the address it describes.
References decompose_address().
Referenced by equiv_address_substitution().
Update the already computed alignment information. LABEL_PAIRS is a vector made up of pairs of labels for which the alignment information of the first element will be copied from that of the second element.
References FOR_EACH_VEC_ELT, grow_label_align(), i, LABEL_TO_ALIGNMENT, max_label_num(), max_labelno, and NULL_RTX.
Referenced by dbr_schedule().
|
extern |
Test whether the most significant bit of mode MODE is clear in VAL. Returns false if the precision of MODE is too large to handle.
References GET_MODE_PRECISION(), HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT_1U, and is_int_mode().
Referenced by simplify_shift_const_1(), and simplify_context::simplify_unary_operation_1().
|
extern |
Test whether the most significant bit of mode MODE is set in VAL. Returns false if the precision of MODE is too large to handle.
References GET_MODE_PRECISION(), HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT_1U, and is_int_mode().
Referenced by canonicalize_condition(), emit_cstore(), emit_store_flag_1(), find_comparison_args(), nonzero_bits1(), sign_extend_short_imm(), and simplify_comparison().
|
extern |
Test whether VAL is equal to the most significant bit of mode MODE (after masking with the mode mask of MODE). Returns false if the precision of MODE is too large to handle.
References GET_MODE_MASK, GET_MODE_PRECISION(), HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT_1U, and is_int_mode().
Referenced by combine_simplify_rtx(), emit_store_flag(), emit_store_flag_1(), force_int_to_mode(), and simplify_context::simplify_binary_operation_1().
|
extern |
References valid_mode_changes.
Referenced by setup_regno_cost_classes_by_aclass(), and setup_regno_cost_classes_by_mode().
|
extern |
We want to create (subreg:OMODE (obj:IMODE) OFFSET). Return true if this construct would be valid, and false otherwise.
References COMPLEX_MODE_P, FLOAT_MODE_P, GET_MODE_ALIGNMENT, GET_MODE_INNER, GET_MODE_SIZE(), GET_MODE_UNIT_SIZE, HARD_REGISTER_P, known_eq, known_ge, lra_in_progress, maybe_ge, maybe_gt, MEM_ALIGN, MEM_P, REG_CAN_CHANGE_MODE_P, REG_P, REGMODE_NATURAL_SIZE, REGNO, subreg_offset_representable_p(), VECTOR_MODE_P, and word_mode.
Referenced by insn_propagation::apply_to_rvalue_1(), extract_low_bits(), gen_lowpart_if_possible(), gen_rtx_SUBREG(), get_stored_val(), make_extraction(), set_noop_p(), simplify_context::simplify_gen_subreg(), simplify_context::simplify_subreg(), store_bit_field_using_insv(), store_integral_bit_field(), use_narrower_mode_test(), and valid_multiword_target_p().
|
extern |
In var-tracking.cc
References variable_tracking_main_1().
Return true if X is a vector with a duplicated element value, either constant or nonconstant. Store the duplicated element in *ELT if so.
References const_vec_duplicate_p(), GET_CODE, GET_MODE, T, VECTOR_MODE_P, and XEXP.
Referenced by simplify_context::simplify_binary_operation_1(), simplify_context::simplify_binary_operation_series(), simplify_context::simplify_subreg(), and simplify_context::simplify_unary_operation_1().
Return true if X is a vector that contains a linear series of the form: { B, B + S, B + 2 * S, B + 3 * S, ... } where B and S are constant or nonconstant. Store B and S in *BASE_OUT and *STEP_OUT on sucess.
References const_vec_series_p(), GET_CODE, and XEXP.
Referenced by simplify_context::simplify_binary_operation_series(), and simplify_context::simplify_unary_operation_1().
|
extern |
Go through all the RTL insn bodies and check that there is no unexpected sharing in between the subexpressions.
References GET_CODE, get_insns(), i, INSN_P, NEXT_INSN(), PATTERN(), reset_all_used_flags(), timevar_pop(), timevar_push(), verify_insn_sharing(), XVECEXP, and XVECLEN.
Referenced by execute_function_todo().
Return true if X contains any volatile instructions. These are instructions which may cause unpredictable machine state instructions, and thus no instructions or register uses should be moved or combined across them. This includes only volatile asms and UNSPEC_VOLATILE instructions.
References CASE_CONST_ANY, GET_CODE, GET_RTX_FORMAT, GET_RTX_LENGTH, i, MEM_VOLATILE_P, RTX_CODE, volatile_insn_p(), XEXP, XVECEXP, and XVECLEN.
Referenced by can_combine_p(), can_move_insns_across(), dead_debug_insert_temp(), find_equiv_reg(), propagate_for_debug(), propagate_for_debug_subst(), reload_combine(), and volatile_insn_p().
Return true if X contains any volatile memory references UNSPEC_VOLATILE operations or volatile ASM_OPERANDS expressions.
References CASE_CONST_ANY, GET_CODE, GET_RTX_FORMAT, GET_RTX_LENGTH, i, MEM_VOLATILE_P, RTX_CODE, volatile_refs_p(), XEXP, XVECEXP, and XVECLEN.
Referenced by can_combine_p(), deletable_insn_p_1(), forward_propagate_into(), process_bb_lives(), scan_insn(), try_combine(), and volatile_refs_p().
Equate REG_BASE_VALUE (reg1) to REG_BASE_VALUE (reg2). Special API for var-tracking pass purposes.
References REG_BASE_VALUE, and REGNO.
Referenced by vt_init_cfa_base().
|
inline |
Likewise for subreg X.
References GET_MODE, SUBREG_REG, and wider_subreg_mode().
|
inline |
Given that a subreg has outer mode OUTERMODE and inner mode INNERMODE, return the mode that is big enough to hold both the outer and inner values. Prefer the outer mode in the event of a tie.
References partial_subreg_p().
Referenced by add_pseudo_to_slot(), add_regs_to_insn_regno_info(), alter_reg(), assign_mem_slot(), assign_stack_slot_num_and_sort_pseudos(), coalesced_pseudo_reg_slot_compare(), collect_non_operand_hard_regs(), invariant_p(), ira_sort_regnos_for_alter_reg(), process_alt_operands(), uses_hard_regs_p(), and wider_subreg_mode().
Return true if X is an operation that always operates on the full registers for WORD_REGISTER_OPERATIONS architectures.
References GET_CODE.
Referenced by nonzero_bits1(), num_sign_bit_copies1(), and record_dead_and_set_regs_1().
|
extern |
We make one copy of (const_int C) where C is in [- MAX_SAVED_CONST_INT, MAX_SAVED_CONST_INT] to save space during the compilation and simplify comparisons of integers.
Referenced by gen_rtx_CONST_INT(), and init_emit_once().
|
extern |
We record floating-point CONST_DOUBLEs in each floating-point mode for the values of 0, 1, and 2. For the integer entries and VOIDmode, we record a copy of const[012]_rtx and constm1_rtx. CONSTM1_RTX is set only for MODE_INT and MODE_VECTOR_INT modes.
Referenced by gen_const_vector(), and init_emit_once().
|
extern |
Referenced by block_has_only_trap(), combine_simplify_rtx(), comparison_result(), condition_dominates_p(), determine_max_iter(), eliminate_implied_condition(), expand_debug_expr(), fill_eager_delay_slots(), fill_simple_delay_slots(), fill_slots_from_thread(), fold_rtx(), gen_rtx_CONST_INT(), get_branch_condition(), if_then_else_cond(), implies_p(), init_emit_once(), iv_number_of_iterations(), known_cond(), merge_if_block(), prepare_float_lib_cmp(), relational_result(), simplify_context::simplify_binary_operation_1(), simplify_const_relational_operation(), simplify_if_then_else(), simplify_context::simplify_logical_relational_operation(), simplify_using_condition(), simplify_using_initial_values(), steal_delay_list_from_fallthrough(), and steal_delay_list_from_target().
|
extern |
If this is nonzero, we do not bother generating VOLATILE around volatile memory references, and we are willing to output indirect addresses. If cse is to follow, we reject indirect addresses so a useful potential cse is generated; if it is used only once, instruction combination will produce the same indirect address eventually.
Convert tree expression to rtl instructions, for GNU compiler. Copyright (C) 1988-2025 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/>.
Include expr.h after insn-config.h so we get HAVE_conditional_move.
If this is nonzero, we do not bother generating VOLATILE around volatile memory references, and we are willing to output indirect addresses. If cse is to follow, we reject indirect addresses so a useful potential cse is generated; if it is used only once, instruction combination will produce the same indirect address eventually.
Referenced by assemble_asm(), memory_address_addr_space(), noce_try_cmove_arith(), prepare_function_start(), rest_of_handle_cse(), rest_of_handle_cse2(), rest_of_handle_cse_after_global_opts(), and use_anchored_address().
|
extern |
Nonzero when we are expanding trees to RTL.
Referenced by commit_edge_insertions(), commit_one_edge_insertion(), expand_expr_real_1(), flush_mark_addressable_queue(), gimple_assign_rhs_to_tree(), mark_addressable_1(), patch_jump_insn(), and redirect_branch_edge().
|
extern |
Emit RTL for the GCC expander. Copyright (C) 1987-2025 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/>.
Middle-to-low level generation of rtx code and insns. This file contains support functions for creating rtl expressions and manipulating them in the doubly-linked chain of insns. The patterns of the insns are created by machine-dependent routines in insn-emit.cc, which is generated automatically from the machine description. These routines make the individual rtx's of the pattern with `gen_rtx_fmt_ee' and others in genrtl.[ch], which are automatically generated from rtl.def; what is machine dependent is the kind of rtx's they make and what arguments they use.
|
extern |
In ira.cc
All registers that can be eliminated.
Referenced by assign_spill_hard_regs(), build_insn_chain(), get_regno_pressure_class(), get_regno_pressure_class(), inherit_in_ebb(), invariant_p(), ira_setup_eliminable_regset(), make_hard_regno_dead(), make_hard_regno_live(), mark_hard_reg_live(), need_for_split_p(), process_bb_lives(), process_bb_node_lives(), and update_reg_eliminate().
|
extern |
Nonzero after thread_prologue_and_epilogue_insns has run.
Referenced by cond_exec_find_if_block(), dead_or_predicable(), df_get_entry_block_def_set(), df_get_exit_block_use_set(), get_initial_register_offset(), redirect_jump(), rest_of_clean_state(), skip_pass(), and thread_prologue_and_epilogue_insns().
location_t epilogue_location |
|
extern |
... but then it has to restore these.
Generic hooks for the RTL middle-end. Copyright (C) 2004-2025 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/>.
For speed, we will copy the RTX hooks struct member-by-member instead of doing indirect calls. For these reason, we initialize *two* struct rtl_hooks globals: rtl_hooks is the one that is used to actually call the hooks, while general_rtl_hooks is used to restore the hooks by passes that modify them.
Referenced by combine_instructions(), and cse_main().
|
extern |
Nonzero when we are generating CONCATs.
Referenced by assign_parm_setup_block(), avoid_likely_spilled_reg(), expand_asm_stmt(), expand_function_end(), gen_reg_rtx(), pop_function_context(), and prepare_function_start().
|
extern |
reginfo.cc
Declaration for the global register.
Referenced by clear_global_regs_cache(), do_reload(), and globalize_reg().
|
extern |
Marker used for denoting an INSN, which should never be accessed (i.e., this pointer should normally never be dereferenced), but is required to be distinct from NULL_RTX. Currently used by peephole2 pass.
Referenced by init_emit_once().
|
extern |
Set to true while in IRA.
|
extern |
Set to true while in LRA.
Referenced by change_address_1(), emit_move_insn_1(), gen_rtx_REG(), general_operand(), init_elim_table(), lra(), scratch_operand(), simplify_subreg_regno(), true_regnum(), and validate_subreg().
|
extern |
Names for NOTE insn's other than line numbers.
Names for kinds of NOTEs and REG_NOTEs.
|
extern |
Standard pieces of rtx, to be substituted directly into things.
Referenced by add_stack_var(), bypass_block(), combine_simplify_rtx(), computed_jump_p(), condjump_in_parallel_p(), condjump_label(), function_reader::consolidate_singletons(), convert_to_eh_region_ranges(), count_reg_usage(), cprop_jump(), cse_insn(), cselib_invalidate_mem(), cselib_record_sets(), decl_stack_index(), distribute_links(), distribute_notes(), doloop_condition_get(), dw2_asm_output_encoded_addr_rtx(), dwarf2out_flush_queued_reg_saves(), dwarf2out_frame_debug_cfa_offset(), dwarf2out_frame_debug_cfa_register(), emit_block_move_hints(), emit_library_call_value_1(), expand_builtin_memory_copy_args(), expand_call(), expand_stack_vars(), ext_dce_process_sets(), ext_dce_process_uses(), find_sets_in_insn(), get_branch_condition(), hide_operands(), init_emit_once(), initial_return_save(), internal_arg_pointer_based_exp(), internal_arg_pointer_based_exp_scan(), make_edges(), make_insn_raw(), mark_effect(), outgoing_edges_match(), prepare_call_arguments(), purge_dead_tablejump_edges(), record_jump_equiv(), redirect_exp_1(), reload_cse_regs_1(), set_label_offsets(), set_noop_p(), set_rtl(), simplify_if_then_else(), simplify_set(), tablejump_casesi_pattern(), thread_jump(), and try_combine().
|
extern |
In print-rtl.cc
Print RTL for GCC. Copyright (C) 1987-2025 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 file is compiled twice: once for the generator programs, once for the compiler.
These headers all define things which are not available in generator programs.
Disable warnings about quoting issues in the pp_xxx calls below that (intentionally) don't follow GCC diagnostic conventions.
String printed at beginning of each RTL when it is dumped. This string is set to ASM_COMMENT_START when the RTL is dumped in the assembly output file.
Referenced by final_scan_insn_1(), print_insn_with_notes(), print_pattern(), rtx_writer::print_rtl(), rtx_writer::print_rtl_single_with_indent(), print_rtl_with_bb(), rtx_writer::print_rtx(), rtx_writer::print_rtx_operand_code_0(), rtx_writer::print_rtx_operand_code_e(), rtx_writer::print_rtx_operand_codes_E_and_V(), and sel_sched_fix_param().
|
extern |
|
extern |
Names for REG_NOTE's in EXPR_LIST insn's.
|
extern |
Nonzero after end of reload pass. Set to 1 or 0 by reload1.cc.
Nonzero after end of reload pass. Set to 1 or 0 by toplev.cc. Controls the significance of (SUBREG (MEM)).
Referenced by active_insn_p(), asm_operand_ok(), assemble_asm(), can_combine_def_p(), can_move_insns_across(), can_replace_by(), cfg_layout_can_merge_blocks_p(), cfg_layout_finalize(), change_address_1(), check_asm_operands(), check_rtl(), cleanup_cfg(), compute_use_by_pseudos(), cond_exec_find_if_block(), cond_exec_process_insns(), cselib_invalidate_regno(), cselib_process_insn(), deletable_insn_p(), delete_trivially_dead_insns(), df_exit_block_uses_collect(), df_get_eh_block_artificial_uses(), df_get_entry_block_def_set(), df_get_exit_block_use_set(), df_get_regular_block_artificial_uses(), df_insn_delete(), df_lr_local_compute(), dump_reg_info(), emit_move_complex_parts(), emit_move_multi_word(), equal_different_set_p(), extract_constrain_insn(), extract_constrain_insn_cached(), find_cond_trap(), find_if_header(), fixup_fallthru_exit_predecessor(), flow_find_cross_jump(), gen_lowpart_general(), gen_rtx_REG(), general_operand(), pair_fusion::get_viable_bases(), hash_rtx(), indirect_operand(), init_alias_analysis(), insn_invalid_p(), insns_have_identical_cfa_notes(), lra(), memory_operand(), noce_emit_cmove(), noce_find_if_block(), old_insns_match_p(), operand_subword(), peep2_find_free_register(), prepare_operand(), pair_fusion::process_block(), record_store(), register_operand(), reload(), rest_of_clean_state(), rtl_can_merge_blocks(), rtl_for_decl_location(), scan_insn(), simplify_operand_subreg(), simplify_subreg_regno(), skip_pass(), split_all_insns(), split_all_insns_noflow(), split_insn(), thread_jump(), pair_fusion_bb_info::track_access(), try_crossjump_to_edge(), try_optimize_cfg(), try_redirect_by_replacing_jump(), try_split(), and verify_rtx_sharing().
|
extern |
Set to 1 while reload_as_needed is operating. Required by some machines to handle any generated moves differently.
Referenced by change_address_1(), constrain_operands(), emit_move_change_mode(), emit_move_complex_parts(), emit_move_multi_word(), gen_rtx_REG(), insn_invalid_p(), reload(), and verify_rtx_sharing().
|
extern |
|
extern |
Each pass can provide its own.
|
extern |
Indexed by rtx code, gives a character representing the "class" of that rtx code. See rtl.def for documentation on the defined classes.
|
extern |
Indexed by rtx code, gives the size of the rtx in bytes.
|
extern |
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.
|
extern |
|
extern |
|
extern |
|
extern |
const int SRP_POINTER = -1 |
Valid for subregs which are SUBREG_PROMOTED_VAR_P(). In that case this gives the necessary extensions: 0 - signed (SPR_SIGNED) 1 - normal unsigned (SPR_UNSIGNED) 2 - value is both sign and unsign extended for mode (SPR_SIGNED_AND_UNSIGNED). -1 - pointer unsigned, which most often can be handled like unsigned extension, except for generating instructions where we need to emit special code (ptr_extend insns) on some architectures (SPR_POINTER).
const int SRP_SIGNED = 0 |
Referenced by simplify_context::simplify_unary_operation_1().
const int SRP_SIGNED_AND_UNSIGNED = 2 |
const int SRP_UNSIGNED = 1 |
Referenced by simplify_context::simplify_unary_operation_1().
|
extern |
In toplev.cc
-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().