Data flow analysis of applicative programs [chapter]

Micha Sharir
1981 Lecture Notes in Computer Science  
A precise and efficient data-flow analysis algorithm, for analysis of programs involving procedures with call-by-value parameter passing, is presented and analyzed. It is adapted to handle analysis of applicative programs written in a subset of LISP, but is equally suited to analyze programs written in many other languages, such as ADA, APL and SETL. I. Introduction. The bulk of data-flow analysis theory deals with intraprocedural analysis, i.e. it analyzes each procedure in the program to be
more » ... alyzed in separation from the other procedures, and so concerns itself with data-flow materialized during execution of the static environment initiated at entry to the procedure under consideration. Interprocedural data-flow is usually either completely ignored in such an approach (by making worst-case assumptions concerning the effect of procedure calls on the data-flow), or else overestimated using a variety of Techniques (See, e.g., [Bar], [Ban]). Moreover, most of these interprocedural techniques concern Themselves with "summary" data-flow propagation from inner procedures To outer ones, but not the other way around. Additional problems caused by procedure variables and by the possible 'aliasing' of variables caused by call-byreference transfer of parameters, make it difficult to obtain sharp interprocedural flow information (See Rosen [Ro I] for such an attempt, although his approach deals only with ~su~mary" data-flow analysis.) A recent study of Myers [My] overcomes all these difficulties, but the algorithm presented there is not very efficient, especially because the problem (in the presence of aliasing) is shown To be NPcomplete. See also Jones [Jo] for a formal general approach to analysis of h-expressions. In This paper we will follow the recent interprocedural analysis teohnique proposed
doi:10.1007/3-540-10843-2_9 fatcat:2hrd32ezizhspafwd2wkw7cwbi