GCC Middle and Back End API Reference

Data Fields  
TBB *  dfs_parent 
TBB *  key 
TBB *  path_min 
TBB *  bucket 
TBB *  next_bucket 
TBB *  dom 
TBB *  set_chain 
unsigned int *  set_size 
TBB *  set_child 
TBB *  dfs_order 
basic_block *  dfs_to_bb 
unsigned int  dfsnum 
unsigned int  nodes 
bitmap  fake_exit_edge 
We work in a poormans object oriented fashion, and carry an instance of this structure through all our 'methods'. It holds various arrays reflecting the (sub)structure of the flowgraph. Most of them are of type TBB and are also indexed by TBB.
TBB* dom_info::bucket 
bucket[x] points to the first node of the set of nodes having x as key.
TBB* dom_info::dfs_order 
If b is the number of a basic block (BB>index), dfs_order[b] is the number of that node in DFS order counted from 1. This is an index into most of the other arrays in this structure.
TBB* dom_info::dfs_parent 
The parent of a node in the DFS tree.
Referenced by link_roots().
basic_block* dom_info::dfs_to_bb 
If x is the DFSindex of a node which corresponds with a basic block, dfs_to_bb[x] is that basic block. Note, that in our structure there are more nodes that basic blocks, so only dfs_to_bb[dfs_order[bb>index]]==bb is true for every basic block bb, but not the opposite.
Referenced by link_roots().
unsigned int dom_info::dfsnum 
This is the next free DFS number when creating the DFS tree.
TBB* dom_info::dom 
After the algorithm is done, dom[x] contains the immediate dominator of x.
bitmap dom_info::fake_exit_edge 
Blocks with bits set here have a fake edge to EXIT. These are used to turn a DFS forest into a proper tree.
Referenced by init_dom_info(), and link_roots().
TBB* dom_info::key 
For a node x key[x] is roughly the node nearest to the root from which exists a way to x only over nodes behind x. Such a node is also called semidominator.
Referenced by compress().
TBB* dom_info::next_bucket 
And next_bucket[x] points to the next node.
unsigned int dom_info::nodes 
The number of nodes in the DFS tree (==dfsnum1).
TBB* dom_info::path_min 
The value in path_min[x] is the node y on the path from x to the root of the tree x is in with the smallest key[y].
Referenced by compress().
TBB* dom_info::set_chain 
The following few fields implement the structures needed for disjoint sets.
set_chain[x] is the next node on the path from x to the representative of the set containing x. If set_chain[x]==0 then x is a root.
Referenced by compress().
TBB* dom_info::set_child 
set_child[x] is used for balancing the tree representing a set. It can be understood as the next sibling of x.
Referenced by compress().
unsigned int* dom_info::set_size 
set_size[x] is the number of elements in the set named by x.
Referenced by compress().