Precise Interprocedural Dataflow Analysis Via Graph Reachability

Thomas Reps, Susan Horwitz, and Mooly Sagiv
University of Wisconsin

The paper shows how a large class of interprocedural dataflow-analysis problems can be solved precisely in polynomial time by transforming them into a special kind of graph-reachability problem. The only restrictions are that the set of dataflow facts must be a finite set, and that the dataflow functions must distribute over the confluence operator (either union or intersection). This class of problems includes --- but is not limited to --- the classical separable problems (also known as "gen/kill" or "bit-vector" problems) --- e.g., reaching definitions, available expressions, and live variables. In addition, the class of problems that our techniques handle includes many non-separable problems, including truly-live variables, copy constant propagation, and possibly-uninitialized variables.

Results are reported from a preliminary experimental study of C programs (for the problem of finding possibly-uninitialized variables).

(Click here to access the paper: PostScript, PDF.)