An Empirical Study of Function Pointers Using SPEC Benchmarks

Since the C language imposes little restriction on the use of function pointers, the task of call graph construction for C programs is far more difficult than that found in Fortran programs. From the experience of implementing a call graph extractor in the IMPACT compiler, we found the call graph construction problem has evolved into an interprocedural pointer analysis problem. In this paper, we report several interesting function pointer usage patterns found in the SPECint92 and SPECint95 benchmarks. They can be considered as critical issues in the design of a complete call graph extractor.

[1]  Monica S. Lam,et al.  Efficient context-sensitive pointer analysis for C programs , 1995, PLDI '95.

[2]  Jay Hoeflinger,et al.  Interprocedural parallelization using memory classification analysis , 1998 .

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

[4]  David Callahan,et al.  The program summary graph and flow-sensitive interprocedual data flow analysis , 1988, PLDI '88.

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

[6]  M. Burke,et al.  Eecient Flow-sensitive Interprocedural Computation of Pointer-induced Aliases and Side Eeects , 1993 .

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

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

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

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

[11]  John Cocke,et al.  A program data flow analysis procedure , 1976, CACM.

[12]  David Notkin,et al.  An empirical study of static call graph extractors , 1998, TSEM.

[13]  Rajiv Gupta,et al.  Interprocedural conditional branch elimination , 1997, PLDI '97.

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

[15]  Laurie J. Hendren,et al.  Context-sensitive interprocedural points-to analysis in the presence of function pointers , 1994, PLDI '94.

[16]  Wen-mei W. Hwu,et al.  A Practical Interprocedural Pointer Analysis Framework , 1980 .

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

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

[19]  Thomas Way,et al.  Using Path Spectra to Direct Function Cloning , 1998 .

[20]  Susan Horwitz,et al.  Fast and accurate flow-insensitive points-to analysis , 1997, POPL '97.

[21]  Bjarne Steensgaard,et al.  Points-to analysis in almost linear time , 1996, POPL '96.

[22]  Wen-mei W. Hwu,et al.  IMPACT: an architectural framework for multiple-instruction-issue processors , 1991, [1991] Proceedings. The 18th Annual International Symposium on Computer Architecture.

[23]  Thomas W. Reps,et al.  Pointer analysis for programs with structures and casting , 1999, PLDI '99.