|
GCC Middle and Back End API Reference
|

Data Fields | |
| struct btr_def_s * | next_this_bb |
| struct btr_def_s * | next_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 |
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). | basic_block btr_def_s::bb |
Referenced by btr_def_live_range(), and migrate_btr_def().
| 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 |
Referenced by btr_def_live_range(), and migrate_btr_def().
| 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 |
Referenced by btr_def_live_range(), and build_btr_def_use_webs().