GCC Middle and Back End API Reference
|
Go to the source code of this file.
Data Structures | |
struct | incoming_args |
struct | rtl_data |
struct | address_reload_context |
Namespaces | |
namespace | rtl_ssa |
Macros | |
#define | return_label (crtl->x_return_label) |
#define | naked_return_label (crtl->x_naked_return_label) |
#define | stack_slot_list (crtl->x_stack_slot_list) |
#define | function_beg_insn (crtl->x_function_beg_insn) |
#define | parm_birth_insn (crtl->x_parm_birth_insn) |
#define | frame_offset (crtl->x_frame_offset) |
#define | stack_check_probe_note (crtl->x_stack_check_probe_note) |
#define | arg_pointer_save_area (crtl->x_arg_pointer_save_area) |
#define | used_temp_slots (crtl->x_used_temp_slots) |
#define | avail_temp_slots (crtl->x_avail_temp_slots) |
#define | temp_slot_level (crtl->x_temp_slot_level) |
#define | nonlocal_goto_handler_labels (crtl->x_nonlocal_goto_handler_labels) |
#define | frame_pointer_needed (crtl->frame_pointer_needed) |
#define | stack_realign_fp (crtl->stack_realign_needed && !crtl->need_drap) |
#define | stack_realign_drap (crtl->stack_realign_needed && crtl->need_drap) |
#define | crtl (&x_rtl) |
#define | adjust_address(MEMREF, MODE, OFFSET) |
#define | adjust_address_nv(MEMREF, MODE, OFFSET) |
#define | adjust_bitfield_address(MEMREF, MODE, OFFSET) |
#define | adjust_bitfield_address_size(MEMREF, MODE, OFFSET, SIZE) |
#define | adjust_bitfield_address_nv(MEMREF, MODE, OFFSET) |
#define | adjust_automodify_address(MEMREF, MODE, ADDR, OFFSET) |
#define | adjust_automodify_address_nv(MEMREF, MODE, ADDR, OFFSET) |
Typedefs | |
typedef class temp_slot * | temp_slot_p |
Variables | |
struct rtl_data | x_rtl |
#define adjust_address | ( | MEMREF, | |
MODE, | |||
OFFSET ) |
Return a memory reference like MEMREF, but with its mode changed to MODE and its address offset by OFFSET bytes.
Referenced by pieces_addr::adjust(), adjust_address_1(), alter_subreg(), asan_emit_stack_protection(), assign_parm_setup_block(), assign_parm_setup_stack(), copy_blkmode_from_reg(), emit_block_cmp_hints(), emit_block_move_hints(), emit_group_load_1(), emit_group_store(), emit_move_change_mode(), emit_move_insn(), emit_push_insn(), asan_redzone_buffer::emit_redzone_byte(), expand_assignment(), expand_builtin_apply(), expand_builtin_apply_args_1(), expand_builtin_issignaling(), expand_builtin_return(), expand_expr_real_1(), expand_expr_real_2(), asan_redzone_buffer::flush_redzone_payload(), gen_highpart(), gen_lowpart_general(), init_one_dwarf_reg_size(), init_return_column_size(), inline_string_cmp(), optimize_bitfield_assignment_op(), result_vector(), sjlj_emit_dispatch_table(), sjlj_emit_function_enter(), sjlj_mark_call_sites(), store_bit_field_1(), store_constructor(), store_constructor_field(), store_expr(), and store_field().
#define adjust_address_nv | ( | MEMREF, | |
MODE, | |||
OFFSET ) |
Likewise, but the reference is not required to be valid.
Referenced by alter_reg(), alter_subreg(), assign_mem_slot(), assign_parm_setup_reg(), assign_parms_unsplit_complex(), assign_stack_temp_for_type(), delegitimize_mem_from_attrs(), eliminate_regs_1(), emit_move_change_mode(), emit_note_insn_var_location(), expand_builtin_init_descriptor(), expand_debug_expr(), expand_expr_real_1(), expand_expr_real_2(), gen_lowpart_for_combine(), gen_lowpart_if_possible(), insert_restore(), insert_save(), make_decl_rtl(), make_extraction(), make_memloc(), maybe_emit_atomic_test_and_set(), operand_subword(), prepare_call_arguments(), read_complex_part(), replace_reg_with_saved_mem(), rtl_for_decl_location(), rtx_equal_for_field_assignment_p(), setup_save_areas(), simplify_compare_const(), simplify_shift_const_1(), simplify_context::simplify_subreg(), simplify_context::simplify_truncation(), simplify_while_replacing(), var_lowpart(), and write_complex_part().
#define adjust_automodify_address | ( | MEMREF, | |
MODE, | |||
ADDR, | |||
OFFSET ) |
Return a memory reference like MEMREF, but with its mode changed to MODE and its address changed to ADDR, which is assumed to be increased by OFFSET bytes from MEMREF.
Referenced by pieces_addr::adjust(), and asan_clear_shadow().
#define adjust_automodify_address_nv | ( | MEMREF, | |
MODE, | |||
ADDR, | |||
OFFSET ) |
Likewise, but the reference is not required to be valid.
Referenced by resolve_simple_move().
#define adjust_bitfield_address | ( | MEMREF, | |
MODE, | |||
OFFSET ) |
Return a memory reference like MEMREF, but with its mode changed to MODE and its address offset by OFFSET bytes. Assume that it's for a bitfield and conservatively drop the underlying object if we cannot be sure to stay within its bounds.
Referenced by extract_bit_field(), extract_bit_field_1(), narrow_bit_field_mem(), store_bit_field(), and store_bit_field_1().
#define adjust_bitfield_address_nv | ( | MEMREF, | |
MODE, | |||
OFFSET ) |
Likewise, but the reference is not required to be valid.
#define adjust_bitfield_address_size | ( | MEMREF, | |
MODE, | |||
OFFSET, | |||
SIZE ) |
As for adjust_bitfield_address, but specify that the width of BLKmode accesses is SIZE bytes.
Referenced by extract_bit_field_1(), narrow_bit_field_mem(), store_bit_field(), and store_bit_field_1().
#define arg_pointer_save_area (crtl->x_arg_pointer_save_area) |
Referenced by expand_function_end(), and get_arg_pointer_save_area().
#define avail_temp_slots (crtl->x_avail_temp_slots) |
Referenced by assign_stack_temp_for_type(), combine_temp_slots(), init_temp_slots(), and make_slot_available().
#define crtl (&x_rtl) |
Accessor to RTL datastructures. We keep them statically allocated now since we never keep multiple functions. For threaded compiler we might however want to do differently.
Referenced by add_action_record(), add_call_site(), add_frame_space(), allocate_dynamic_stack_space(), asan_emit_stack_protection(), asm_clobber_reg_is_valid(), assemble_end_function(), assemble_start_function(), assign_parm_adjust_stack_rtl(), assign_parm_find_entry_rtl(), assign_parm_find_stack_rtl(), assign_parms(), assign_stack_local_1(), based_loc_descr(), calculate_saved_nregs(), calculate_spill_cost(), can_implement_as_sibling_call_p(), cfg_layout_initialize(), check_mem_read_rtx(), check_new_reg_p(), pair_fusion_bb_info::cleanup_tombstones(), collect_fn_hard_reg_usage(), computation_cost(), compute_regs_asm_clobbered(), connect_traces(), constant_pool_empty_p(), convert_to_eh_region_ranges(), create_stack_guard(), cse_insn(), dbr_schedule(), debugger_reg_number(), default_rtl_profile(), deletable_insn_p(), df_epilogue_uses_p(), df_get_call_refs(), df_get_entry_block_def_set(), df_get_exit_block_use_set(), diddle_return_value(), do_reload(), dse_step1(), dw2_output_call_site_table(), dw2_size_of_call_site_table(), dw_loc_list(), dwarf2out_alloc_current_fde(), dwarf2out_do_cfi_startproc(), dwarf2out_switch_text_section(), emit_call_1(), emit_initial_value_sets(), emit_library_call_value_1(), emit_stack_restore(), ensure_regno(), emit_status::ensure_regno_capacity(), expand_asm_stmt(), expand_builtin_apply(), expand_builtin_apply_args(), expand_builtin_apply_args_1(), expand_builtin_eh_return(), expand_builtin_longjmp(), expand_builtin_next_arg(), expand_builtin_nonlocal_goto(), expand_builtin_return_addr(), expand_builtin_setjmp_receiver(), expand_builtin_unwind_init(), expand_call(), expand_eh_return(), expand_expr_real_1(), expand_function_end(), expand_function_start(), expand_one_stack_var_1(), expand_one_var(), expand_stack_alignment(), expand_stack_vars(), final_start_function_1(), find_empty_loc_ranges_at_text_label(), find_hard_regno_for_1(), find_partition_fixes(), find_reg(), fixup_debug_use(), fixup_debug_uses(), fixup_partitions(), force_const_mem(), free_after_compilation(), pair_fusion_bb_info::fuse_pair(), fwprop(), fwprop_done(), fwprop_init(), gen_call_used_regs_seq(), gen_reg_rtx(), get_arg_pointer_save_area(), get_current_sequence(), get_dynamic_stack_base(), get_dynamic_stack_size(), get_hard_reg_initial_reg(), get_hard_reg_initial_val(), get_initial_register_offset(), get_max_uid(), function_reader::handle_insn_uids(), has_hard_reg_initial_val(), improve_allocation(), init_emit(), init_expmed(), init_expr(), init_resource_info(), init_set_costs(), init_varasm_status(), initial_value_entry(), insert_section_boundary_note(), instantiate_new_reg(), internal_arg_pointer_based_exp(), ira(), ira_build_conflicts(), ira_setup_eliminable_regset(), leaf_function_p(), locate_and_pad_parm(), lra(), lra_spill(), make_prologue_seq(), mark_constant_pool(), maybe_add_nop_after_section_switch(), mem_loc_descriptor(), mem_might_overlap_already_clobbered_arg_p(), multiple_reg_loc_descriptor(), non_spilled_static_chain_regno_p(), notice_stack_pointer_modification_1(), outgoing_edges_match(), output_constant_pool(), output_function_exception_table(), output_one_function_exception_table(), pair_fusion::pair_fusion(), function_reader::parse_crtl(), function_reader::parse_function(), peep2_find_free_register(), prepare_function_start(), print_rtx_function(), profile_after_prologue(), read_rtl_function_body(), read_rtl_function_body_from_file_range(), recog_for_combine(), record_alignment_for_reg_var(), reg_single_def_p(), reload(), reload_combine_recognize_pattern(), reorder_basic_blocks(), reorg_loops(), reset_debug_use(), rest_of_clean_state(), rest_of_handle_check_leaf_regs(), rest_of_handle_df_initialize(), rest_of_handle_final(), round_push(), rtl_profile_for_bb(), rtl_profile_for_edge(), rtl_split_edge(), rtl_verify_edges(), rtx_addr_can_trap_p_1(), pair_fusion::run(), secname_for_decl(), set_nothrow_function_flags(), setup_save_areas(), shorten_branches(), sjlj_assign_call_site_values(), sjlj_build_landing_pads(), sjlj_emit_dispatch_table(), sjlj_emit_function_enter(), sjlj_emit_function_exit(), sjlj_emit_function_exit_after(), sjlj_mark_call_sites(), sjlj_output_call_site_table(), sjlj_size_of_call_site_table(), stack_protect_epilogue(), stack_protect_prologue(), store_one_arg(), target_reinit(), thread_jump(), thread_prologue_and_epilogue_insns(), try_fwprop_subst(), try_fwprop_subst_pattern(), pair_fusion::try_promote_writeback(), try_shrink_wrapping(), try_shrink_wrapping_separate(), try_validate_parallel(), update_eliminables(), update_equiv_regs_prescan(), update_stack_alignment_for_call(), use_shrink_wrapping_separate(), verify_hot_cold_block_grouping(), vt_add_function_parameter(), vt_init_cfa_base(), vt_initialize(), and pair_fusion::~pair_fusion().
#define frame_offset (crtl->x_frame_offset) |
#define frame_pointer_needed (crtl->frame_pointer_needed) |
Referenced by add_stores(), adjust_mems(), can_combine_def_p(), choose_reload_regs(), coalesced_pseudo_reg_slot_compare(), copy_value(), cselib_process_insn(), df_get_eh_block_artificial_uses(), df_get_entry_block_def_set(), df_get_exit_block_use_set(), df_get_regular_block_artificial_uses(), do_reload(), dump_stack_clash_frame_info(), dwarf2out_frame_debug_expr(), gen_rtx_REG(), init_alias_analysis(), init_elim_table(), init_elim_table(), init_elimination(), init_resource_info(), ira_setup_eliminable_regset(), lra_fp_pseudo_p(), lra_update_fp2sp_elimination(), make_prologue_seq(), mark_referenced_resources(), old_insns_match_p(), operand_to_remat(), peep2_find_free_register(), prepare_call_arguments(), prepare_function_start(), pseudo_reg_slot_compare(), reload(), reload_combine_recognize_pattern(), rename_chains(), setup_can_eliminate(), simplify_subreg_regno(), try_shrink_wrapping(), update_eliminables(), vt_init_cfa_base(), and vt_initialize().
#define function_beg_insn (crtl->x_function_beg_insn) |
Referenced by expand_function_start().
#define naked_return_label (crtl->x_naked_return_label) |
Referenced by expand_function_end(), and expand_naked_return().
#define nonlocal_goto_handler_labels (crtl->x_nonlocal_goto_handler_labels) |
#define parm_birth_insn (crtl->x_parm_birth_insn) |
#define return_label (crtl->x_return_label) |
Referenced by construct_exit_block(), expand_function_end(), expand_function_start(), and expand_null_return_1().
#define stack_check_probe_note (crtl->x_stack_check_probe_note) |
Referenced by expand_function_end(), and expand_function_start().
Referenced by expand_stack_alignment(), instantiate_new_reg(), mem_loc_descriptor(), and vt_initialize().
Referenced by init_elim_table(), and init_elim_table().
#define stack_slot_list (crtl->x_stack_slot_list) |
Referenced by assign_stack_local_1(), assign_stack_temp_for_type(), unshare_all_rtl_1(), and unshare_all_rtl_again().
#define temp_slot_level (crtl->x_temp_slot_level) |
Referenced by assign_stack_temp_for_type(), free_temp_slots(), init_temp_slots(), pop_temp_slots(), preserve_temp_slots(), and push_temp_slots().
#define used_temp_slots (crtl->x_used_temp_slots) |
Referenced by init_temp_slots(), max_slot_level(), and temp_slots_at_level().
typedef class temp_slot* temp_slot_p |
|
extern |
Return a memory reference like MEMREF, but with its mode changed to MODE and its address offset by OFFSET bytes. If VALIDATE is nonzero, the memory address is forced to be valid. If ADJUST_ADDRESS is zero, OFFSET is only used to update MEM_ATTRS and the caller is responsible for adjusting MEMREF base register. If ADJUST_OBJECT is zero, the underlying object associated with the memory reference is left unchanged and the caller is responsible for dealing with it. Otherwise, if the new memory reference is outside the underlying object, even partially, then the object is dropped. SIZE, if nonzero, is the size of an access in cases where MODE has no inherent size.
References adjust_address, change_address_1(), copy_rtx(), gcc_assert, get_address_mode(), GET_CODE, get_mem_attrs(), GET_MODE, GET_MODE_ALIGNMENT, known_eq, maybe_gt, memory_address_addr_space_p(), MIN, mode_mem_attrs, NULL_TREE, attrs::offset, offset, plus_constant(), set_mem_attrs(), mem_attrs::size, targetm, trunc_int_for_mode(), and XEXP.
Referenced by adjust_automodify_address_1(), store_expr(), and widen_memory_access().
|
extern |
Return a memory reference like MEMREF, but with its mode changed to MODE and its address changed to ADDR, which is assumed to be MEMREF offset by OFFSET bytes. If VALIDATE is nonzero, the memory address is forced to be valid.
References adjust_address_1(), change_address_1(), and offset.
|
extern |
Adjust REG in-place so that it has mode MODE. It is assumed that the new register is a (possibly paradoxical) lowpart of the old one.
References byte_lowpart_offset(), GET_MODE, PUT_MODE(), and update_reg_offset().
Referenced by subst_mode(), try_combine(), and undo_to_marker().
Return a memory reference like MEMREF, but with its mode changed to MODE and its address changed to ADDR. (VOIDmode means don't change the mode. NULL for ADDR means don't change the address.)
Like change_address_1 with VALIDATE nonzero, but we are not saying in what way we are changing MEMREF, so we only preserve the alias set.
References mem_attrs::align, attrs, change_address_1(), gen_rtx_MEM(), get_mem_attrs(), GET_MODE, mem_attrs_eq_p(), MEM_COPY_ATTRIBUTES, mode_mem_attrs, NULL_TREE, set_mem_attrs(), mem_attrs::size, mem_attrs::size_known_p, and XEXP.
Referenced by assign_parm_setup_block(), drop_writeback(), emit_block_cmp_via_loop(), emit_block_move_via_loop(), expand_assignment(), expand_builtin_init_trampoline(), expand_expr_real_1(), extract_writebacks(), store_expr(), and try_store_by_multiple_pieces().
|
extern |
Clear the offset recorded for MEM.
Clear the offset of MEM.
References attrs, get_mem_attrs(), and set_mem_attrs().
Referenced by expand_partial_load_optab_fn(), expand_partial_store_optab_fn(), get_memory_rtx(), merge_memattrs(), and try_store_by_multiple_pieces().
|
extern |
Clear the size recorded for MEM.
Clear the size of MEM.
References attrs, get_mem_attrs(), and set_mem_attrs().
Referenced by merge_memattrs().
Return a copy of INSN that can be used in a SEQUENCE delay slot, on that assumption that INSN itself remains in its original place.
References as_a(), copy_rtx(), cur_insn_uid, and INSN_UID().
Referenced by fill_simple_delay_slots(), fill_slots_from_thread(), and steal_delay_list_from_target().
Create a new copy of an rtx. This function differs from copy_rtx in that it handles SCRATCHes and ASM_OPERANDs properly. INSN doesn't really have to be a full INSN; it could be just the pattern.
References copy_asm_constraints_vector, copy_asm_operands_vector, copy_insn_1(), copy_insn_n_scratches, orig_asm_constraints_vector, and orig_asm_operands_vector.
Referenced by bypass_block(), compare_and_jump_seq(), do_remat(), eliminate_partially_redundant_load(), eliminate_regs_in_insn(), emit_copy_of_insn_after(), lra_process_new_insns(), and try_optimize_cfg().
Recursively create a new copy of an rtx for copy_insn. This function differs from copy_rtx in that it handles SCRATCHes and ASM_OPERANDs properly. Normally, this function is not used directly; use copy_insn as front end. However, you could first copy an insn pattern with copy_insn and then use this function afterwards to properly copy any REG_NOTEs containing SCRATCHes.
References ASM_OPERANDS_INPUT_CONSTRAINT_VEC, ASM_OPERANDS_INPUT_VEC, CASE_CONST_ANY, copy_asm_constraints_vector, copy_asm_operands_vector, copy_insn_1(), copy_insn_n_scratches, copy_insn_scratch_in, copy_insn_scratch_out, gcc_assert, gcc_unreachable, GET_CODE, GET_RTX_FORMAT, GET_RTX_LENGTH, HARD_REGISTER_NUM_P, i, INSN_P, NULL, orig_asm_constraints_vector, orig_asm_operands_vector, ORIGINAL_REGNO, REG_P, REGNO, rtvec_alloc(), RTX_CODE, RTX_FLAG, shallow_copy_rtx(), shared_const_p(), XEXP, XVEC, XVECEXP, and XVECLEN.
Referenced by copy_insn(), copy_insn_1(), duplicate_reg_note(), eliminate_regs_in_insn(), and gcse_emit_move_after().
Produce exact duplicate of insn INSN after AFTER. Care updating of libcall regions if present.
References CALL_INSN_FUNCTION_USAGE, copy_insn(), CROSSING_JUMP_P, duplicate_reg_note(), emit_call_insn_after(), emit_debug_insn_after(), emit_insn_after(), emit_jump_insn_after(), gcc_unreachable, GET_CODE, INSN_CODE, INSN_LOCATION(), mark_jump_label(), NONDEBUG_INSN_P, NULL_RTX, PATTERN(), REG_NOTE_KIND, REG_NOTES, RTL_CONST_CALL_P, RTL_LOOPING_CONST_OR_PURE_CALL_P, RTL_PURE_CALL_P, RTX_FRAME_RELATED_P, SIBLING_CALL_P, and XEXP.
Referenced by duplicate_insn_chain(), make_return_insns(), and relax_delay_slots().
Return a memory reference like MEM, but with the address reloaded into a pseudo register.
References address_reload_context::emit_autoinc(), force_reg(), GET_CODE, GET_MODE, GET_MODE_SIZE(), GET_RTX_CLASS, replace_equiv_address(), RTX_AUTOINC, mem_attrs::size, and XEXP.
|
extern |
Generate an empty ASM_INPUT, which is used to block attempts to schedule, and to block register equivalences to be seen across this insn.
References gen_rtx_ASM_INPUT, and MEM_VOLATILE_P.
Referenced by anti_adjust_stack_and_probe_stack_clash(), expand_builtin_longjmp(), expand_builtin_nonlocal_goto(), expand_builtin_setjmp_receiver(), expand_function_end(), make_prologue_seq(), and probe_stack_range().
Generate a vector constant of mode MODE in which every element has value ELT.
References rtx_vector_builder::build().
Referenced by builtin_memset_read_str(), expand_absneg_bit(), expand_vector_broadcast(), gen_const_vector(), gen_rtx_CONST_VECTOR(), gen_vec_duplicate(), relational_result(), and simplify_const_unary_operation().
Generate a vector constant of mode MODE in which element I has the value BASE + I * STEP.
References rtx_vector_builder::build(), gcc_assert, GET_MODE_INNER, i, simplify_gen_binary(), and valid_for_const_vector_p().
Referenced by gen_vec_series(), and simplify_context::simplify_binary_operation_1().
|
extern |
References as_a(), poly_int< N, C >::coeffs, poly_int< N, C >::from(), GEN_INT, GET_MODE_PRECISION(), immed_wide_int_const(), poly_int< N, C >::is_constant(), SIGNED, and trunc_int_for_mode().
Referenced by add_args_size_note(), addr_offset_valid_p(), align_dynamic_address(), allocate_dynamic_stack_space(), anti_adjust_stack_and_probe(), asan_clear_shadow(), asan_emit_stack_protection(), assemble_real(), assign_parm_setup_block(), assign_parms(), autoinc_split(), builtin_memset_read_str(), calculate_table_based_CRC(), canonicalize_address_mult(), canonicalize_condition(), cleanup_auto_inc_dec(), combine_set_extension(), combine_simplify_rtx(), convert_mode_scalar(), create_integer_operand(), cselib_hash_rtx(), default_memtag_untagged_pointer(), do_pending_stack_adjust(), do_tablejump(), dw2_asm_output_offset(), address_reload_context::emit_autoinc(), emit_call_1(), emit_library_call_value_1(), emit_move_complex(), emit_move_resolve_push(), emit_push_insn(), emit_store_flag(), emit_store_flag_int(), expand_atomic_test_and_set(), expand_binop(), expand_builtin_crc_table_based(), expand_builtin_memset_args(), expand_call(), expand_ctz(), expand_debug_expr(), expand_divmod(), expand_doubleword_clz_ctz_ffs(), expand_doubleword_mod(), expand_expr_real_1(), expand_expr_real_2(), expand_ffs(), expand_field_assignment(), expand_fix(), expand_HWASAN_CHOOSE_TAG(), expand_sdiv_pow2(), expand_SET_EDOM(), expand_shift_1(), expand_smod_pow2(), expand_stack_vars(), expand_unop(), expand_vector_ubsan_overflow(), expmed_mult_highpart(), extract_left_shift(), find_split_point(), asan_redzone_buffer::flush_redzone_payload(), for_each_inc_dec_find_inc_dec(), force_int_to_mode(), force_to_mode(), gen_common_operation_to_reflect(), gen_int_shift_amount(), get_call_args(), get_dynamic_stack_base(), get_mode_bounds(), get_stored_val(), hwasan_emit_prologue(), hwasan_truncate_to_tag_size(), if_then_else_cond(), immed_double_const(), immed_wide_int_const_1(), inc_for_reload(), pieces_addr::increment_address(), init_caller_save(), init_one_dwarf_reg_size(), init_reload(), init_return_column_size(), insert_const_anchor(), instantiate_virtual_regs_in_insn(), iv_number_of_iterations(), make_compound_operation_int(), make_extraction(), make_field_assignment(), maybe_legitimize_operand(), mem_loc_descriptor(), move2add_use_add2_insn(), move2add_use_add3_insn(), multiplier_allowed_in_address_p(), native_decode_vector_rtx(), noce_try_bitop(), noce_try_cmove(), noce_try_store_flag_constants(), optimize_bitfield_assignment_op(), output_constant_pool_2(), plus_constant(), probe_stack_range(), push_block(), reload_cse_move2add(), round_trampoline_addr(), simplify_and_const_int(), simplify_and_const_int_1(), simplify_context::simplify_binary_operation_1(), simplify_compare_const(), simplify_comparison(), simplify_if_then_else(), simplify_set(), simplify_shift_const_1(), simplify_context::simplify_ternary_operation(), simplify_context::simplify_unary_operation_1(), sjlj_mark_call_sites(), split_iv(), store_bit_field_using_insv(), store_constructor(), store_field(), store_one_arg(), try_store_by_multiple_pieces(), unroll_loop_constant_iterations(), unroll_loop_runtime_iterations(), update_reg_equal_equiv_notes(), validate_test_and_branch(), vec_perm_indices_to_rtx(), and widen_leading().
|
extern |
Return a constant shift amount for shifting a value of mode MODE by VALUE bits.
References gen_int_mode(), int_mode_for_size(), and opt_mode< T >::require().
Referenced by asan_emit_stack_protection(), change_zero_ext(), expand_binop(), expand_doubleword_mult(), expand_shift(), expand_shift_1(), expand_smod_pow2(), expand_superword_shift(), expand_unop(), expand_vec_perm_var(), find_shift_sequence(), find_split_point(), fold_rtx(), force_int_to_mode(), init_expmed_one_mode(), shift_amt_for_vec_perm_mask(), shift_cost(), shift_return_value(), simplify_context::simplify_binary_operation_1(), simplify_shift_const(), simplify_shift_const_1(), simplify_context::simplify_unary_operation_1(), and try_combine().
|
extern |
Create an rtvec and stores within it the RTXen passed in the arguments.
References rtvec_def::elem, i, NULL_RTVEC, and rtvec_alloc().
Referenced by combine_reg_notes(), convert_memory_address_addr_space_1(), emit_insn_if_valid_for_reload(), expand_asm_memory_blockage(), simplify_context::simplify_gen_vec_select(), try_combine(), and try_validate_parallel().
Return a vector rtx of mode MODE in which every element has value X. The result will be a constant if X is constant.
References gen_const_vec_duplicate(), and valid_for_const_vector_p().
Referenced by gen_vec_series(), simplify_context::simplify_binary_operation_1(), simplify_context::simplify_subreg(), and simplify_context::simplify_unary_operation_1().
Generate a vector of mode MODE in which element I has the value BASE + I * STEP. The result will be a constant if BASE and STEP are both constants.
References const0_rtx, gen_const_vec_series(), gen_vec_duplicate(), and valid_for_const_vector_p().
Referenced by simplify_context::simplify_binary_operation_series(), and simplify_context::simplify_unary_operation_1().
|
inline |
Return the current sequence.
References crtl.
Referenced by add_insn_after_nobb(), add_insn_before_nobb(), end_sequence(), get_insns(), get_last_insn(), get_last_insn_anywhere(), get_topmost_sequence(), in_sequence_p(), init_emit(), remove_insn(), set_first_insn(), set_last_insn(), and start_sequence().
|
inline |
Return the first insn of the current sequence or current function.
References sequence_stack::first, and get_current_sequence().
Referenced by add_cfis_to_fde(), add_insn(), add_store_equivs(), 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(), break_superblocks(), calculate_elim_costs_all_insns(), cfg_layout_delete_block(), cfg_layout_finalize(), cfg_layout_split_edge(), check_and_process_move(), check_sibcall_argument_overlap(), cleanup_barriers(), cleanup_cfg(), collect_fn_hard_reg_usage(), combine_and_move_insns(), combine_reaching_defs(), combine_var_copies_in_loop_exit(), compare_and_jump_seq(), computation_cost(), construct_init_block(), convert_mode_scalar(), convert_to_eh_region_ranges(), create_cands(), create_pseudo_cfg(), cse_main(), curr_insn_transform(), delete_vta_debug_insns(), do_reload(), do_remat(), doloop_modify(), dw2_build_landing_pads(), emit_common_heads_for_components(), emit_common_tails_for_components(), 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(), emit_pattern_before_setloc(), end_ifcvt_sequence(), entry_of_function(), execute_function_dump(), 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_debug_locations(), expand_DIVMOD(), expand_doubleword_clz_ctz_ffs(), expand_doubleword_divmod(), expand_doubleword_mod(), 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(), fill_slots_from_thread(), find_shift_sequence(), fix_crossing_unconditional_branches(), fixup_tail_calls(), free_bb_for_insn(), fwprop_done(), gen_call_used_regs_seq(), gen_clobber(), gen_cond_trap(), gen_move_insn(), gen_reload(), gen_use(), get_arg_pointer_save_area(), get_first_nonnote_insn(), get_some_local_dynamic_name(), function_reader::handle_insn_uids(), hwasan_emit_untag_frame(), hwasan_frame_base(), if_convert(), indirect_jump_optimize(), 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(), instantiate_virtual_regs_in_insn(), internal_arg_pointer_based_exp_scan(), ira(), leaf_function_p(), lra(), lra_dump_insns(), lra_process_new_insns(), make_epilogue_seq(), make_prologue_seq(), make_split_prologue_seq(), mark_constant_pool(), match_asm_constraints_1(), match_reload(), maybe_clear_subreg_promoted_p(), 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_inverse_constants(), function_reader::parse_function(), peephole2_optimize(), pop_topmost_sequence(), prepare_copy_insn(), prepare_float_lib_cmp(), prepend_insn_to_edge(), print_rtx_function(), process_addr_reg(), process_address_1(), process_invariant_for_inheritance(), record_effective_endpoints(), record_entry_value(), record_store(), reemit_insn_block_notes(), remove_inheritance_pseudos(), reorder_blocks(), reorder_insns_nobb(), reorg_loops(), replace_read(), reposition_prologue_and_epilogue_notes(), reset_all_used_flags(), reset_subreg_promoted_p(), resolve_shift_zext(), resolve_simple_move(), rest_of_clean_state(), rest_of_handle_combine(), rest_of_handle_cse(), rest_of_handle_cse2(), rest_of_handle_cse_after_global_opts(), rest_of_handle_delay_slots(), rest_of_handle_final(), rest_of_handle_gcse2(), rest_of_handle_shorten_branches(), rtl_lv_add_condition_to_bb(), rtl_verify_bb_layout(), rtl_verify_edges(), set_nothrow_function_flags(), shorten_branches(), sjlj_emit_dispatch_table(), sjlj_emit_function_enter(), sjlj_emit_function_exit(), sjlj_mark_call_sites(), spill_pseudos(), split_all_insns_noflow(), split_iv(), start_sequence(), thread_prologue_and_epilogue_insns(), try_crossjump_to_edge(), try_emit_cmove_seq(), unroll_loop_runtime_iterations(), unshare_all_rtl(), verify_insn_chain(), verify_rtl_sharing(), vt_add_function_parameter(), vt_init_cfa_base(), and vt_initialize().
|
inline |
Return the last insn emitted in current sequence or current function.
References get_current_sequence(), and sequence_stack::last.
Referenced by add_insn(), add_test(), adjust_stack_1(), allocate_dynamic_stack_space(), asan_clear_shadow(), assign_parm_setup_block(), assign_parm_setup_reg(), assign_parm_setup_stack(), assign_parms_unsplit_complex(), base_to_reg(), can_widen_mult_without_libcall(), cfg_layout_delete_block(), cfg_layout_duplicate_bb(), commit_one_edge_insertion(), compare_and_jump_seq(), compress_float_constant(), construct_exit_block(), construct_init_block(), convert_memory_address_addr_space_1(), create_basic_block_structure(), default_zero_call_used_regs(), delete_trivially_dead_insns(), duplicate_insn_chain(), emit_add3_insn(), address_reload_context::emit_autoinc(), emit_conditional_add(), emit_conditional_move(), emit_conditional_neg_or_complement(), emit_cstore(), emit_debug_insn(), emit_insn(), emit_insn_after_1(), emit_insn_if_valid_for_reload_1(), emit_library_call_value_1(), emit_move_complex(), emit_move_complex_parts(), emit_moves(), emit_store_flag(), emit_store_flag_int(), expand_abs_nojump(), expand_absneg_bit(), expand_addsub_overflow(), expand_asm_stmt(), expand_atomic_compare_and_swap(), expand_atomic_load(), expand_atomic_store(), expand_binop(), expand_builtin_apply(), expand_builtin_interclass_mathfn(), expand_builtin_issignaling(), expand_builtin_longjmp(), expand_builtin_nonlocal_goto(), expand_builtin_signbit(), expand_builtin_strlen(), expand_call(), expand_call_stmt(), expand_case(), expand_ccmp_expr(), expand_debug_locations(), expand_DIVMOD(), expand_divmod(), expand_doubleword_divmod(), expand_doubleword_mod(), expand_doubleword_shift(), expand_fix(), expand_function_end(), expand_function_start(), expand_gimple_basic_block(), expand_gimple_cond(), expand_gimple_stmt(), expand_gimple_tailcall(), expand_mul_overflow(), expand_mult_const(), expand_neg_overflow(), expand_one_cmpl_abs_nojump(), expand_parity(), expand_sfix_optab(), expand_sjlj_dispatch_table(), expand_stack_restore(), expand_twoval_binop(), expand_twoval_unop(), expand_unop(), expand_unop_direct(), expand_vec_perm_const(), extract_integral_bit_field(), find_end_label(), force_reg(), force_subreg(), gen_reload(), gen_reload_chain_without_interm_reg_p(), get_last_nonnote_insn(), inc_for_reload(), last_call_insn(), load_register_parameters(), lra(), lra_emit_add(), lra_process_new_insns(), make_epilogue_seq(), mark_transaction_restart_calls(), maybe_cleanup_end_of_block(), maybe_emit_sync_lock_test_and_set(), maybe_legitimize_operand_same_code(), maybe_legitimize_operands(), move_block_from_reg(), move_block_to_reg(), function_reader::parse_insn(), pop_topmost_sequence(), prepare_call_address(), prepare_cmp_insn(), prepare_function_start(), process_address_1(), record_effective_endpoints(), reload_combine(), reorder_insns_nobb(), rtl_lv_add_condition_to_bb(), rtl_split_block(), rtl_verify_bb_insn_chain(), shorten_branches(), stack_protect_epilogue(), start_sequence(), store_bit_field_using_insv(), store_integral_bit_field(), try_split(), verify_insn_chain(), widen_bswap(), and widen_leading().
|
inline |
Return a number larger than any instruction's uid in this function.
References crtl.
Referenced by add_store_equivs(), alloc_mem(), combine_instructions(), df_grow_insn_info(), final_1(), find_and_remove_re(), find_moveable_pseudos(), hoist_code(), inherit_in_ebb(), init_dce(), initiate_copies(), initiate_prefs(), ira(), lra(), lra_coalesce(), lra_constrain_insn(), lra_constraints(), lra_create_live_ranges_1(), lra_remat(), print_rtl_with_bb(), regrename_init(), reload(), remove_scratches(), rtl_verify_bb_insn_chain(), shorten_branches(), and skip_pass().
|
extern |
Return OFFSET if XEXP (MEM, 0) - OFFSET is known to be ALIGN bits aligned for 0 <= OFFSET < ALIGN / BITS_PER_UNIT, or -1 if not known.
References component_ref_field_offset(), DECL_ALIGN, DECL_FIELD_BIT_OFFSET, DECL_FIELD_CONTEXT, DECL_P, expr, gcc_assert, INDIRECT_REF_P, MEM_EXPR, MEM_OFFSET, MEM_OFFSET_KNOWN_P, MEM_P, NULL_TREE, offset, poly_int_tree_p(), TREE_CODE, tree_fits_uhwi_p(), TREE_OPERAND, tree_to_uhwi(), TREE_TYPE, and TYPE_ALIGN.
References attrs, build_decl(), current_function_decl, DECL_ARTIFICIAL, DECL_IGNORED_P, DECL_SOURCE_LOCATION, frame_pointer_rtx, gen_rtx_MEM(), get_identifier(), MEM_NOTRAP_P, mode_mem_attrs, new_alias_set(), SET_DECL_RTL, set_mem_attrs(), spill_slot_decl, TREE_USED, and void_type_node.
Referenced by ao_ref_from_mem(), nonoverlapping_memrefs_p(), set_mem_attrs_for_spill(), and vt_add_function_parameter().
|
inline |
Return the outermost sequence.
References get_current_sequence(), and sequence_stack::next.
Referenced by pop_topmost_sequence(), and push_topmost_sequence().
|
extern |
For use by the RTL function loader, when mingling with normal functions. Ensure that label_num is greater than the label num of X, to avoid duplicate labels in the generated assembler.
References CODE_LABEL_NUMBER, and label_num.
Referenced by function_reader::parse_insn().
Return whether two MEM_ATTRs are equal.
Return true if the given memory attributes are equal.
References mem_attrs::addrspace, mem_attrs::alias, mem_attrs::align, mem_attrs::expr, known_eq, NULL_TREE, mem_attrs::offset, mem_attrs::offset_known_p, operand_equal_p(), mem_attrs::size, and mem_attrs::size_known_p.
Referenced by change_address(), exp_equiv_p(), merge_memattrs(), rtx_interchangeable_p(), and set_mem_attrs().
|
extern |
Returns true if both MEM_EXPR can be considered equal and false otherwise.
References operand_equal_p(), and TREE_CODE.
Referenced by merge_memattrs().
Return true if memory model MODEL requires a pre-operation (release-style) barrier or a post-operation (acquire-style) barrier. While not universal, this function matches behavior of several targets.
References gcc_unreachable, MEMMODEL_ACQ_REL, MEMMODEL_ACQUIRE, MEMMODEL_BASE_MASK, MEMMODEL_CONSUME, MEMMODEL_RELAXED, MEMMODEL_RELEASE, and MEMMODEL_SEQ_CST.
Return a memory reference like MEMREF, but whose address is changed by adding OFFSET, an RTX, to it. POW2 is the highest power of two factor known to be in OFFSET (possibly 1).
References attrs, change_address_1(), force_reg(), get_address_mode(), GET_CODE, get_mem_attrs(), GET_MODE, memory_address_addr_space_p(), MIN, mode_mem_attrs, offset, pic_offset_table_rtx, set_mem_attrs(), simplify_gen_binary(), mem_attrs::size, mem_attrs::size_known_p, update_temp_slot_address(), and XEXP.
Referenced by expand_assignment(), expand_expr_real_1(), store_constructor(), and store_expr().
Return a memory reference like MEMREF, but with its address changed to ADDR. The caller is asserting that the actual piece of memory pointed to is the same, just the form of the address is being changed, such as by putting something into a register.
Return a memory reference like MEMREF, but with its address changed to ADDR. The caller is asserting that the actual piece of memory pointed to is the same, just the form of the address is being changed, such as by putting something into a register. INPLACE is true if any changes can be made directly to MEMREF or false if MEMREF must be treated as immutable.
References change_address_1(), update_temp_slot_address(), and XEXP.
Referenced by emit_move_resolve_push(), expand_expr_real_1(), expand_movstr(), force_reload_address(), instantiate_virtual_regs_in_insn(), maybe_legitimize_operand_same_code(), operand_subword(), try_apply_stack_adjustment(), try_store_by_multiple_pieces(), use_anchored_address(), and validize_mem().
Likewise, but the reference is not required to be valid.
References change_address_1().
Referenced by add_mem_for_addr(), adjust_mems(), attempt_change(), canon_rtx(), eliminate_regs_1(), emit_move_multi_word(), expand_debug_parm_decl(), pair_fusion_bb_info::fuse_pair(), lra_eliminate_regs_1(), make_memloc(), push_reload(), replace_expr_with_values(), simplify_replace_fn_rtx(), try_apply_stack_adjustment(), and vt_add_function_parameter().
Assign the RTX X to parameter declaration T. BY_REFERENCE_P is true if the ABI requires the parameter to be passed by reference.
References DECL_INCOMING_RTL, and set_reg_attrs_for_decl_rtl().
Referenced by assign_parms(), assign_parms_unsplit_complex(), and expand_function_start().
|
inline |
Specify a new insn as the first in the chain.
References sequence_stack::first, gcc_checking_assert, get_current_sequence(), and PREV_INSN().
Referenced by add_insn(), cfg_layout_delete_block(), delete_insns_since(), end_sequence(), fixup_reorder_chain(), init_emit(), function_reader::parse_insn(), push_to_sequence(), push_to_sequence2(), push_topmost_sequence(), reorder_insns_nobb(), set_new_first_and_last_insn(), start_sequence(), and unlink_insn_chain().
|
inline |
Specify a new insn as the last in the chain.
References gcc_checking_assert, get_current_sequence(), sequence_stack::last, and NEXT_INSN().
Referenced by add_insn(), cfg_layout_delete_block(), delete_insns_since(), emit_insn_after_1(), end_sequence(), fixup_reorder_chain(), init_emit(), function_reader::parse_insn(), push_to_sequence(), push_to_sequence2(), push_topmost_sequence(), reorder_insns_nobb(), set_new_first_and_last_insn(), start_sequence(), and unlink_insn_chain().
|
extern |
Set the address space of MEM to ADDRSPACE.
Set the address space of MEM to ADDRSPACE (target-defined).
References mem_attrs::addrspace, attrs, get_mem_attrs(), and set_mem_attrs().
Referenced by expand_debug_expr(), expand_expr_real_1(), get_builtin_sync_mem(), function_reader::handle_any_trailing_information(), noce_try_cmove_arith(), and produce_memory_decl_rtl().
|
extern |
Set the alias set of MEM to SET.
References alias_sets_conflict_p(), attrs, gcc_checking_assert, get_mem_attrs(), MEM_ALIAS_SET, and set_mem_attrs().
Referenced by asan_emit_stack_protection(), assign_stack_temp_for_type(), build_constant_desc(), compute_argument_addresses(), expand_builtin_longjmp(), expand_builtin_setjmp_setup(), expand_builtin_va_copy(), gen_frame_mem(), gen_tmp_stack_mem(), get_builtin_sync_mem(), get_memory_rtx(), function_reader::handle_any_trailing_information(), merge_memattrs(), noce_try_cmove_arith(), optimize_bitfield_assignment_op(), setup_save_areas(), store_constructor_field(), and store_field().
|
extern |
Set the alignment of MEM to ALIGN bits.
References mem_attrs::align, attrs, get_mem_attrs(), and set_mem_attrs().
Referenced by asan_emit_stack_protection(), assemble_trampoline_template(), assemble_variable(), assign_parm_find_stack_rtl(), assign_parm_setup_stack(), assign_stack_local_1(), assign_stack_temp_for_type(), attempt_change(), build_constant_desc(), compute_argument_addresses(), emit_push_insn(), expand_builtin_apply(), expand_builtin_init_descriptor(), expand_builtin_init_trampoline(), expand_builtin_memory_copy_args(), expand_builtin_memset_args(), expand_builtin_va_copy(), expand_expr_real_1(), expand_one_stack_var_at(), force_const_mem(), get_builtin_sync_mem(), get_memory_rtx(), function_reader::handle_any_trailing_information(), merge_memattrs(), noce_try_cmove_arith(), and try_store_by_multiple_pieces().
Given REF, a MEM, and T, either the type of X or the expression corresponding to REF, set the memory attributes. OBJECTP is nonzero if we are making a new object of this type.
References set_mem_attributes_minus_bitpos().
Referenced by assign_parm_find_stack_rtl(), assign_parm_setup_block(), assign_parm_setup_reg(), assign_parm_setup_stack(), assign_parms(), assign_parms_unsplit_complex(), compute_argument_addresses(), expand_builtin_init_trampoline(), expand_call(), expand_debug_expr(), expand_expr_real_1(), expand_expr_real_2(), expand_function_start(), get_memory_rtx(), initialize_argument_information(), layout_decl(), make_decl_rtl(), and set_rtl().
|
extern |
Similar, except that BITPOS has not yet been applied to REF, so if we alter MEM_OFFSET according to T then we should subtract BITPOS expecting that it'll be added back in later.
Given REF (a MEM) and T, either the type of X or the expression corresponding to REF, set the memory attributes. OBJECTP is nonzero if we are making a new object of this type. BITPOS is nonzero if there is an offset outstanding on T that will be applied later.
References mem_attrs::align, bits_to_bytes_round_down, build2(), build_int_cst(), cfun, component_uses_parent_alias_set_from(), CONSTANT_CLASS_P, CONVERT_EXPR_P, DECL_BIT_FIELD, DECL_EXTERNAL, DECL_P, DECL_RTL_IF_SET, DECL_SIZE_UNIT, error_mark_node, mem_attrs::expr, gcc_assert, get_alias_set(), get_base_address(), GET_MODE, get_object_alignment_1(), handled_component_p(), is_global_var(), MAX, MEM_ATTRS, MEM_KEEP_ALIAS_SET_P, MEM_NOTRAP_P, MEM_POINTER, MEM_READONLY_P, MEM_VOLATILE_P, MIN, mode_mem_attrs, NULL, NULL_TREE, attrs::offset, mem_attrs::offset, mem_attrs::offset_known_p, POINTER_TYPE_P, poly_int_tree_p(), reference_alias_ptr_type(), set_mem_attrs(), mem_attrs::size, mem_attrs::size_known_p, TREE_CODE, tree_could_trap_p(), TREE_OPERAND, TREE_READONLY, TREE_STATIC, TREE_THIS_VOLATILE, TREE_TYPE, type(), TYPE_ADDR_SPACE, TYPE_ALIGN, TYPE_P, TYPE_SIZE_UNIT, TYPE_VOLATILE, unshare_expr(), and VAR_P.
Referenced by expand_assignment(), and set_mem_attributes().
|
extern |
Set the attributes for MEM appropriate for a spill slot.
Given MEM, a result from assign_stack_local, fill in the memory attributes as appropriate for a register allocator spill slot. These slots are not aliasable by other memory. We arrange for them all to use a single MEM_EXPR, so that the aliasing code can work properly in the case of shared spill slots.
References ADDR_SPACE_GENERIC, attrs, DECL_RTL, get_mem_attrs(), get_spill_slot_decl(), MEM_ALIAS_SET, MEM_NOTRAP_P, attrs::offset, set_mem_attrs(), strip_offset(), and XEXP.
Referenced by alter_reg(), and assign_mem_slot().
Set the expr for MEM to EXPR.
References attrs, expr, get_mem_attrs(), and set_mem_attrs().
Referenced by fixup_expr::apply(), duplicate_insn_chain(), emit_call_1(), expand_debug_expr(), expand_expr_real_1(), expand_partial_load_optab_fn(), expand_partial_store_optab_fn(), merge_memattrs(), and optimize_bitfield_assignment_op().
|
extern |
Set the offset for MEM to OFFSET.
Set the offset of MEM to OFFSET.
References attrs, get_mem_attrs(), attrs::offset, offset, and set_mem_attrs().
Referenced by assign_parm_find_stack_rtl(), assign_parm_setup_stack(), and function_reader::handle_any_trailing_information().
|
extern |
Set the size for MEM to SIZE.
Set the size of MEM to SIZE.
References attrs, get_mem_attrs(), set_mem_attrs(), and mem_attrs::size.
Referenced by assemble_trampoline_template(), assign_parm_find_stack_rtl(), compute_argument_addresses(), emit_block_move_hints(), expand_builtin_init_trampoline(), expand_builtin_memcmp(), expand_expr_real_1(), function_reader::handle_any_trailing_information(), merge_memattrs(), and scan_insn().
Set the REG_ATTRS for registers in value X, given that X represents decl T.
References byte_lowpart_offset(), DECL_MODE, DECL_P, gcc_assert, GET_CODE, GET_MODE, GET_MODE_UNIT_SIZE, get_reg_attrs(), i, INTVAL, REG_ATTRS, REG_P, subreg_lowpart_p(), SUBREG_REG, TREE_TYPE, TYPE_MODE, XEXP, XVECEXP, XVECLEN, and y.
Referenced by fixup_expr::apply(), expand_asm_stmt(), expand_expr_real_gassign(), set_decl_incoming_rtl(), set_decl_rtl(), and set_rtl().
Set the register attributes for registers contained in PARM_RTX. Use needed values from memory attributes of MEM.
References GET_CODE, get_reg_attrs(), i, INTVAL, MEM_EXPR, REG_ATTRS, REG_P, set_reg_attrs_from_value(), XEXP, XVECEXP, and XVECLEN.
Referenced by assign_parm_find_stack_rtl().
Copy REG's attributes from X, if X has any attributes. If REG and X have different modes, REG is a (possibly paradoxical) lowpart of X.
References byte_lowpart_offset(), GET_CODE, GET_MODE, get_reg_attrs(), HARD_REGISTER_P, mark_reg_pointer(), MEM_EXPR, MEM_OFFSET, MEM_OFFSET_KNOWN_P, MEM_P, MEM_POINTER, offset, paradoxical_subreg_p(), REG_ATTRS, REG_P, REG_POINTER, REGNO, REGNO_POINTER_ALIGN, SUBREG_CHECK_PROMOTED_SIGN, subreg_lowpart_p(), SUBREG_PROMOTED_VAR_P, targetm, update_reg_offset(), and XEXP.
Referenced by gen_reg_rtx_and_attrs(), make_more_copies(), reg_scan_mark_refs(), and set_reg_attrs_for_parm().
Return true if X is a valid element for a CONST_VECTOR of the given mode.
References CONST_DOUBLE_AS_FLOAT_P, CONST_FIXED_P, CONST_POLY_INT_P, and CONST_SCALAR_INT_P.
Referenced by expand_vector_broadcast(), gen_const_vec_series(), gen_vec_duplicate(), gen_vec_series(), simplify_context::simplify_binary_operation_1(), simplify_const_binary_operation(), and simplify_const_unary_operation().
|
extern |
Return a memory reference like MEMREF, but with its mode widened to MODE and adjusted by OFFSET.
Return a memory reference like MEMREF, but with its mode widened to MODE and offset by OFFSET. This would be used by targets that e.g. cannot issue QImode memory operations and have to use SImode memory operations plus masking logic.
References adjust_address_1(), attrs, component_ref_field_offset(), DECL_FIELD_BIT_OFFSET, DECL_P, DECL_SIZE_UNIT, get_mem_attrs(), GET_MODE_SIZE(), known_ge, NULL_TREE, attrs::offset, offset, poly_int_tree_p(), set_mem_attrs(), mem_attrs::size, wi::to_poly_offset(), TREE_CODE, TREE_OPERAND, and tree_to_uhwi().
|
extern |
Datastructures maintained for currently processed function in RTL form.