A Practical Interprocedural Data Flow Analysis Algorithm
A new interprocedural  data flow analysis algorithm
is presented and analyzed.  The algorithm 
associates with each procedure in a program information
about which variables may be modified, which 
may be used, and which are possibly preserved by a call
on the procedure, and all of its subcalls.  The 
algorithm is sufficiently powerful to be used on recursive
programs and to deal with the sharing of variables 
which arises through reference parameters.  The algorithm
is unique in that it can compute all of this 
information in a single pass, not requiring a prepass to
compute calling relationships or sharing patterns. 
 The algorithm is asymptotically optimal in time complexity.
 It has been implemented and is practical 
even on programs which are quite large.
CACM September, 1978
Barth, J.M.
