GCC Middle and Back End API Reference
|
One of these records is created for each insn.
bool insn_info::cannot_delete |
Set true if the insn contains a store but the insn itself cannot be deleted. This is set if the insn is a parallel and there is more than one non dead output or if the insn is in some way volatile.
Referenced by dse_step3(), replace_read(), set_all_positions_unneeded(), and set_position_unneeded().
bool insn_info::contains_cselib_groups |
This is true if any of the sets within the store contains a cselib base. Such stores can only be deleted by the local algorithm.
Referenced by record_store().
regset insn_info::fixed_regs_live |
The live fixed registers. We assume only fixed registers can cause trouble by being clobbered from an expanded pattern; storing only the live fixed registers (rather than all registers) means less memory needs to be allocated / copied for the individual stores.
bool insn_info::frame_read |
This field is only used for the processing of const functions. These functions cannot read memory, but they can read the stack because that is where they may get their parms. We need to be this conservative because, like the store motion pass, we don't consider CALL_INSN_FUNCTION_USAGE when processing call insns. Moreover, we need to distinguish two cases:
rtx insn_info::insn |
The insn.
Referenced by dse_step3(), dse_transfer_function(), and scan_stores_spill().
struct insn_info* insn_info::next_local_store |
The linked list of insns that are in consideration for removal in the forwards pass through the basic block. This pointer may be trash as it is not cleared when a wild read occurs. The only time it is guaranteed to be correct is when the traversal starts at active_local_stores.
bool insn_info::non_frame_wild_read |
This is true only for CALL instructions which could potentially read any non-frame memory location. This field is used by the global algorithm.
struct insn_info* insn_info::prev_insn |
The prev insn in the basic block.
Referenced by get_bitmap_index(), and scan_stores_spill().
read_info_t insn_info::read_rec |
The linked list of mem uses in this insn. Only the reads from rtx bases are listed here. The reads to cselib bases are completely processed during the first scan and so are never created.
Referenced by scan_stores_spill().
bool insn_info::stack_pointer_based |
This field is only used for the processing of const functions. It is set if the insn may contain a stack pointer based store.
Referenced by record_store().
store_info_t insn_info::store_rec |
The list of mem sets or mem clobbers that are contained in this insn. If the insn is deletable, it contains only one mem set. But it could also contain clobbers. Insns that contain more than one mem set are not deletable, but each of those mems are here in order to provide info to delete other insns.
Referenced by check_mem_read_use(), dse_step3(), and scan_stores_spill().
bool insn_info::wild_read |
This field is only used by the global algorithm. It is set true if the insn contains any read of mem except for a (1). This is also set if the insn is a call or has a clobber mem. If the insn contains a wild read, the use_rec will be null.
Referenced by can_escape(), and get_bitmap_index().