| 
 
 
 
  |   | 
8.6.4 Natural Loops
We use dominators to find loops. Since loops contain a cycle, and a header dominates
 all the nodes in a loop,
 
  
 there must be a least one arc entering the header from a node in the loopFor this reason, we search for an arc whose head dominates its tail. This is called
 a back edge. Loops must have a back edge.
 
 
 The natural loop of the back edge is defined to be the smallest set of nodes that 
 includes the back edge and has no predecessors outside the set except for the predecessor
 of the header. Natural loops are the loops for which we find optimizations.
  
 
  
 Algorithm
 
 Finding the nodes in a natural loop
  
 
 FOR every node n, find all m such that n DOM m
 FOR every back edge t
  h, i.e., for every arc such that
 h DOM t, construct the natural loop: 
 
 Delete h and find all nodes which can lead to tThese nodes plus h form the natural loop of t
  h 
 
    
 
  |