GCC Middle and Back End API Reference
btr_def_s Struct Reference
Collaboration diagram for btr_def_s:

Data Fields

struct btr_def_snext_this_bb
struct btr_def_snext_this_group
basic_block bb
int luid
rtx insn
int btr
int cost
btr_def_group group
btr_user uses
char has_ambiguous_use
char other_btr_uses_before_def
char other_btr_uses_after_use
char own_end
bitmap live_range

Detailed Description

   btr_def structs appear on three lists:
     1. A list of all btr_def structures (head is
        ALL_BTR_DEFS, linked by the NEXT field).
     2. A list of branch reg definitions per basic block (head is
        BB_BTR_DEFS[i], linked by the NEXT_THIS_BB field).
     3. A list of all branch reg definitions belonging to the same
        group (head is in a BTR_DEF_GROUP struct, linked by
        NEXT_THIS_GROUP field).  

Field Documentation

basic_block btr_def_s::bb
int btr_def_s::btr

Referenced by btr_def_live_range(), and compute_out().

int btr_def_s::cost
btr_def_group btr_def_s::group
     For a branch register setting insn that has a constant
     source (i.e. a label), group links together all the
     insns with the same source.  For other branch register
     setting insns, group is NULL.  
char btr_def_s::has_ambiguous_use
     If this def has a reaching use which is not a simple use
     in a branch instruction, then has_ambiguous_use will be true,
     and we will not attempt to migrate this definition.  

Referenced by btr_def_live_range().

rtx btr_def_s::insn

Referenced by btr_def_live_range().

bitmap btr_def_s::live_range
int btr_def_s::luid
struct btr_def_s* btr_def_s::next_this_bb
struct btr_def_s* btr_def_s::next_this_group
char btr_def_s::other_btr_uses_after_use
char btr_def_s::other_btr_uses_before_def
     live_range is an approximation to the true live range for this
     def/use web, because it records the set of blocks that contain
     the live range.  There could be other live ranges for the same
     branch register in that set of blocks, either in the block
     containing the def (before the def), or in a block containing
     a use (after the use).  If there are such other live ranges, then
     other_btr_uses_before_def or other_btr_uses_after_use must be set true
     as appropriate.  
char btr_def_s::own_end
     We set own_end when we have moved a definition into a dominator.
     Thus, when a later combination removes this definition again, we know
     to clear out trs_live_at_end again.  
btr_user btr_def_s::uses

The documentation for this struct was generated from the following file: