GCC Middle and Back End API Reference
|
#include <tree-ssa-live.h>
Data Fields | |
var_map | map |
bitmap | global |
bitmap_head * | livein |
bitmap_head * | liveout |
int | num_blocks |
int * | work_stack |
int * | stack_top |
—————- live on entry/exit info ——————————
This structure is used to represent live range information on SSA based trees. A partition map must be provided, and based on the active partitions, live-on-entry information and live-on-exit information can be calculated. As well, partitions are marked as to whether they are global (live outside the basic block they are defined in).
The live-on-entry information is per block. It provide a bitmap for each block which has a bit set for each partition that is live on entry to that block.
The live-on-exit information is per block. It provides a bitmap for each block indicating which partitions are live on exit from the block.
For the purposes of this implementation, we treat the elements of a PHI as follows:
Uses in a PHI are considered LIVE-ON-EXIT to the block from which they originate. They are NOT considered live on entry to the block containing the PHI node.
The Def of a PHI node is not considered live on entry to the block. It is considered to be "define early" in the block. Picture it as each block having a stmt (or block-preheader) before the first real stmt in the block which defines all the variables that are defined by PHIs.
———————————————————————–
bitmap tree_live_info_d::global |
Bitmap indicating which partitions are global.
Referenced by register_ssa_partition().
bitmap_head* tree_live_info_d::livein |
Bitmaps of live on entry blocks for partition elements.
Referenced by register_ssa_partition().
bitmap_head* tree_live_info_d::liveout |
Bitmaps of what variables are live on exit for a basic blocks.
Referenced by dump_var_map(), loe_visit_block(), partition_is_global(), register_ssa_partition(), and set_var_live_on_entry().
var_map tree_live_info_d::map |
Var map this relates to.
Referenced by live_on_entry(), loe_visit_block(), register_ssa_partition(), and set_var_live_on_entry().
int tree_live_info_d::num_blocks |
Number of basic blocks when live on exit calculated.
Referenced by register_ssa_partition().
int* tree_live_info_d::stack_top |
Top of workstack.
int* tree_live_info_d::work_stack |
Vector used when creating live ranges as a visited stack.