GCC Middle and Back End API Reference
resource.h File 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)

Enumeration Type Documentation

The kinds of rtl mark_*_resources will consider  
Enumerator:
MARK_SRC_DEST 
MARK_SRC_DEST_CALL 

Function Documentation

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   
)
void mark_referenced_resources ( rtx  x,
struct resources res,
bool  include_delayed_effects 
)
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().

void mark_target_live_regs ( rtx  ,
rtx  ,
struct resources  
)