Formal callability and its relevance and application to interprocedural data-flow analysis

Formal callability is the problem of determining for every formal procedure call of a program the set of procedures it may call at run-time. This information is the key for constructing the procedure call graph of a program, a common prerequisite of static analyses of programs with procedures. Moreover, under specific side-conditions it reduces in interprocedural data-flow analysis the analysis of programs with formal procedure calls to the analyses of programs without formal calls by treating formal calls as higher-order branch statements. The author demonstrates that formal callability yields as a by-product the solution of the well-known formal reachability problem. This directly implies that formal callability is in general not decidable. However, the author shows that formal callability is decidable for programs, where formal procedure parameters do not occur in procedures, which are local to the procedure of their declaration (usually known as programs without global (formal) procedure parameters), but within a time bound which is exponential in the program size. Thus, the author complements the new decidability result by introducing in addition a safe approximation of formal callability called potential passability, which can efficiently be computed. Moreover, for programs of mode depth 2 (i.e., formal procedures do not have procedures as parameters) without global procedure parameters, formal callability and potential passability coincide.

[1]  Dieter Armbruster Entscheidbarkeit und Bestimmung der Rekursivität von Prozeduren in Pascal-ähnlichen Programmen , 1985 .

[2]  Anders Bondorf,et al.  Automatic Autoprojection of Higher Order Recursive Equations , 1990, Sci. Comput. Program..

[3]  A. E. Ayers,et al.  Efficient Closure Analysis with Reachability , 1992, WSA.

[4]  Dieter Armbruster Polynomial Recursion Analysis in Pascal Like Programs , 1991, TACS.

[5]  Ken Kennedy,et al.  Constructing the Procedure Call Multigraph , 1990, IEEE Trans. Software Eng..

[6]  Jens Palsberg,et al.  Object-oriented type systems , 1994, Wiley professional computing.

[8]  James R. Larus,et al.  Detecting conflicts between structure accesses , 1988, PLDI '88.

[9]  B. J. Mailloux,et al.  Revised Report on the Algorithmic Language ALGOL 68 , 1976, SIGP.

[10]  John F. Wakerly,et al.  The programming language PASCAL , 1979, Microprocessors and microsystems.

[11]  Andrew A. Chien,et al.  Precise concrete type inference for object-oriented languages , 1994, OOPSLA 1994.

[12]  John McCarthy,et al.  Recursive functions of symbolic expressions and their computation by machine, Part I , 1959, Commun. ACM.

[13]  Jens Knoop Optimal Interprocedural Program Optimization: A New Framework and Its Application , 1999 .

[14]  Peter Kandzia,et al.  On the Most Recent Property of Algol-Like Programs , 1974, ICALP.

[15]  C. A. R. Hoare,et al.  An Axiomatic Definition of the Programming Language PASCAL , 1973, Acta Informatica.

[16]  Hans Langmaack,et al.  The Formal Termination Problem for Programs with Finite ALGOL 68-Modes , 1979, Inf. Process. Lett..

[17]  Ken Kennedy,et al.  Fast interprocedual alias analysis , 1989, POPL '89.

[18]  Keith D. Cooper,et al.  Analyzing aliases of reference formal parameters , 1985, POPL.

[19]  John Banning,et al.  : An Efficient , 2022 .

[20]  William E. Weihl,et al.  Interprocedural data flow analysis in the presence of pointers, procedure variables, and label variables , 1980, POPL '80.

[21]  Ken Kennedy,et al.  Efficient call graph analysis , 1992, LOPL.

[22]  Barbara G. Ryder,et al.  Constructing the Call Graph of a Program , 1979, IEEE Transactions on Software Engineering.

[23]  Kenneth G. Walter Recursion analysis for compiler optimization , 1976, CACM.

[24]  Dieter Armbruster A Polynomial Determination of the Most-Recent Property in Pascal-Like Programs , 1988, Theor. Comput. Sci..