53 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| .NH 2
 | |
| Immediate dominators
 | |
| .PP
 | |
| A basic block B dominates a block C if every path
 | |
| in the control flow graph from the procedure entry block
 | |
| to C goes through B.
 | |
| The immediate dominator of C is the closest dominator
 | |
| of C on any path from the entry block.
 | |
| See also
 | |
| .[~[
 | |
| aho compiler design
 | |
| .], section 13.1.]
 | |
| .PP
 | |
| There are a number of algorithms to compute
 | |
| the immediate dominator relation.
 | |
| .IP 1.
 | |
| Purdom and Moore give an algorithm that is
 | |
| easy to program and easy to describe (although the
 | |
| description they give is unreadable;
 | |
| it is given in a very messy Algol60 program full of gotos).
 | |
| .[
 | |
| predominators 
 | |
| .]
 | |
| .IP 2.
 | |
| Aho and Ullman present a bitvector algorithm, which is also
 | |
| easy to program and to understand.
 | |
| (See 
 | |
| .[~[
 | |
| aho compiler design
 | |
| .], section 13.1.]).
 | |
| .IP 3
 | |
| Lengauer and Tarjan introduce a fast algorithm that is
 | |
| hard to understand, yet remarkably easy to implement.
 | |
| .[
 | |
| lengauer dominators
 | |
| .]
 | |
| .LP
 | |
| The Purdom-Moore algorithm is very slow if the
 | |
| number of basic blocks in the flow graph is large.
 | |
| The Aho-Ullman algorithm in fact computes the
 | |
| dominator relation,
 | |
| from which the immediate dominator relation can be computed
 | |
| in time quadratic to the number of basic blocks, worst case.
 | |
| The storage requirement is also quadratic to the number
 | |
| of blocks.
 | |
| The running time of the third algorithm is proportional
 | |
| to:
 | |
| .DS
 | |
| (number of edges in the graph) * log(number of blocks).
 | |
| .DE
 | |
| We have chosen this algorithm because it is fast
 | |
| (as shown by experiments done by Lengauer and Tarjan),
 | |
| it is easy to program and requires little data space.
 |