|
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 poor-mans 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 DFS-index 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 (==dfsnum-1).
| 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().