Contruction of call multigraphs revisited

This paperpresentsan algorithm for constructingcall multigraphsfor procedurallanguageprograms. The call graph construction(CGC) problem is analogousto the problem of performing control flow analysis(CFA) of Scheme[Shi88, Shi91b]. As shownlater, this problemis also analogousto the problemof determiningtypes (TD) at specific programpoints for object-orientedlanguages[PS91, PR93, Suz81]. Our CGC algorithm may be easily adaptedto perform CFA and TD. The algorithm is significantsince the CGC, CFA, and TD problems areof fundamentalimportancefor efficient compilationof programsin procedural,functional,andobject-oriented languages,respectively. Pande& Ryder [PR93] haveshownthat the TD problemis NP-hardin the presenceof single-levelpointers. We showthat the CGC problemis analogousto the TD problem. The CGC problemtoo is, therefore,intractable. Any polynomialalgorithmfor it canonly give approximateresults.The algorithmpresentedmakesthe following contributions:

[1]  Barbara G. Ryder,et al.  Static Type Determination for C++ , 1994, C++ Conference.

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

[3]  Norihisa Suzuki,et al.  Inferring types in Smalltalk , 1981, POPL '81.

[4]  Lyal B. Harris November , 1890, The Hospital.

[5]  Thomas C. Spillman,et al.  Exposing Side-Effects in a PL/I Optimizing Compiler , 1971, IFIP Congress.

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

[7]  Barbara G. Ryder,et al.  Pointer-induced aliasing: a problem classification , 1991, POPL '91.

[8]  Olin Shivers,et al.  Control flow analysis in scheme , 1988, PLDI '88.

[9]  Jens Palsberg,et al.  Object-oriented type inference , 1991, OOPSLA '91.

[10]  Olin Shivers,et al.  The semantics of Scheme control-flow analysis , 1991, PEPM '91.

[11]  Arun Lakhotia Constructing call multigraphs using dependence graphs , 1993, POPL '93.

[12]  Karl J. Ottenstein,et al.  The program dependence graph in a software development environment , 1984, SDE 1.

[13]  Jong-Deok Choi,et al.  Automatic construction of sparse data flow evaluation graphs , 1991, POPL '91.

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

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

[16]  Jong-Deok Choi,et al.  Efficient flow-sensitive interprocedural computation of pointer-induced aliases and side effects , 1993, POPL '93.

[17]  Olin Shivers,et al.  Control-flow analysis of higher-order languages of taming lambda , 1991 .

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

[19]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

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