GCC Middle and Back End API Reference
|
Go to the source code of this file.
Data Structures | |
struct | resources |
Enumerations | |
enum | mark_resource_type { MARK_SRC_DEST = 0, MARK_SRC_DEST_CALL = 1 } |
Functions | |
void | mark_target_live_regs (rtx, rtx, struct resources *) |
void | mark_set_resources (rtx, struct resources *, int, enum mark_resource_type) |
void | mark_referenced_resources (rtx, struct resources *, bool) |
void | clear_hashed_info_for_insn (rtx) |
void | incr_ticks_for_insn (rtx) |
void | mark_end_of_function_resources (rtx, bool) |
void | init_resource_info (rtx) |
void | free_resource_info (void) |
enum mark_resource_type |
void clear_hashed_info_for_insn | ( | rtx | ) |
void free_resource_info | ( | void | ) |
Free up the resources allocated to mark_target_live_regs (). This should be invoked after the last call to mark_target_live_regs ().
References bb_ticks, free(), and target_info::next.
Referenced by dbr_schedule().
void incr_ticks_for_insn | ( | rtx | ) |
void init_resource_info | ( | rtx | ) |
void mark_end_of_function_resources | ( | rtx | , |
bool | |||
) |
Given X, some rtl, and RES, a pointer to a `struct resource', mark which resources are referenced by the insn. If INCLUDE_DELAYED_EFFECTS is TRUE, resources used by the called routine will be included for CALL_INSNs.
References add_to_hard_reg_set(), resources::cc, find_reg_note(), global_regs, mark_referenced_resources(), resources::memory, resources::regs, rtx_equal_p(), SET, subreg_nregs(), subreg_regno(), and resources::volatil.
Referenced by fill_simple_delay_slots(), fill_slots_from_thread(), find_dead_or_set_registers(), init_resource_info(), insn_references_resource_p(), mark_end_of_function_resources(), mark_referenced_resources(), mark_target_live_regs(), redundant_insn(), and try_merge_delay_insns().
void mark_set_resources | ( | rtx | x, |
struct resources * | res, | ||
int | in_dest, | ||
enum mark_resource_type | mark_type | ||
) |
Given X, a part of an insn, and a pointer to a `struct resource', RES, indicate which resources are modified by the insn. If MARK_TYPE is MARK_SRC_DEST_CALL, also mark resources potentially set by the called routine. If IN_DEST is nonzero, it means we are inside a SET. Otherwise, objects are being referenced instead of set. We never mark the insn as modifying the condition code unless it explicitly SETs CC0 even though this is not totally correct. The reason for this is that we require a SET of CC0 to immediately precede the reference to CC0. So if some other insn sets CC0 as a side-effect, we know it cannot affect our computation and thus may be placed in a delay slot.
References add_to_hard_reg_set(), resources::cc, find_reg_note(), mark_set_resources(), MARK_SRC_DEST, MARK_SRC_DEST_CALL, resources::memory, resources::regs, SET, subreg_nregs(), subreg_regno(), and resources::volatil.
Referenced by fill_simple_delay_slots(), fill_slots_from_thread(), find_dead_or_set_registers(), init_resource_info(), insn_sets_resource_p(), mark_set_resources(), mark_target_live_regs(), redundant_insn(), steal_delay_list_from_target(), and try_merge_delay_insns().