Abstract

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.

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call

Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.