|
Node Splitting
Transformation used for converting non-reducible flow graphs to reducible flow graphs. If there is a node n with k predecessors:
- Split n into k nodes generating nodes n1, n2, ..., nk
- The ith predecessor of n becomes the predecessors of ni
- All the successors of n become successors of all of the ni’s
Interval Analysis
- Divides flow graph into various regions
- Consolidate each region into a (abstract) node
- Resulting flow graph is an abstract flow graph
- Result of transformations produce control tree
- Root represents the original graph
- Leaf of control tree are basic blocks
- Internal nodes are abstract nodes
- Edges represent relationship between abstract nodes
Intervals
- Each interval has a header node that dominates all the nodes in the interval.
- Given a flow graph with initial node n0, the interval with header n is denoted by I(n) and is defined as:
- N is in I(n)
- If all the predecessors of a node m are in I(n) then m is in I(n)
- No other node is in I(n)
|