Module 14: Approaches to Control Flow Analysis
  Lecture 27: Algorithm and Interval
 


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)