Interprocedural Static Single Assignment Form

In this paper we describe interprocedural static single assignment form (ISSA) with optimizations as implemented in the Bauhaus project. We explain our framework which uses an abstract program representation enabling us to use different pointer analyses ranging from fast but imprecise to slow but precise ones. Our implementation includes the computation of (may and must) side effects and optimizations like pruning definitions with simple linear-time algorithms. This paper also provides comprehensive test results and statistics for a large test suite.

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

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

[3]  Ken Kennedy,et al.  Interprocedural side-effect analysis in linear time , 1988, PLDI '88.

[4]  David W. Binkley,et al.  Interprocedural slicing using dependence graphs , 1988, SIGP.

[5]  Amer Diwan,et al.  SUIF Explorer: an interactive and interprocedural parallelizer , 1999, PPoPP '99.

[6]  Barbara G. Ryder,et al.  A schema for interprocedural modification side-effect analysis with pointer aliasing , 2001, TOPL.

[7]  Manuvir Das,et al.  Unification-based pointer analysis with directional assignments , 2000, PLDI '00.

[8]  Rainer Koschke,et al.  Static object trace extraction for programs with pointers , 2005, J. Syst. Softw..

[9]  Steffen Keul,et al.  Interprocedural static single assignment form in Bauhaus , 2007 .

[10]  Mark N. Wegman,et al.  Analysis of pointers and structures , 1990, SIGP.

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

[12]  Doris L. Carver,et al.  Object localization in procedural programs: a graph-based approach , 2000 .

[13]  Gregg Rothermel,et al.  Efficient construction of program dependence graphs , 1993, ISSTA '93.

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

[15]  Panos E. Livadas,et al.  System Dependence Graphs Based on Parse Trees and their Use in Software Maintenance , 1994, Inf. Sci..

[16]  Steven S. Muchnick,et al.  Advanced Compiler Design and Implementation , 1997 .

[17]  Andrew W. Appel,et al.  SSA is functional programming , 1998, SIGP.

[18]  Linda Torczon,et al.  An efficient representation for sparse sets , 1993, LOPL.

[19]  Jens Krinke,et al.  Advanced slicing of sequential and concurrent programs , 2003, 20th IEEE International Conference on Software Maintenance, 2004. Proceedings..

[20]  Richard A. Kelsey A correspondence between continuation passing style and static single assignment form , 1995 .

[21]  Erhard Plödereder,et al.  Bauhaus - A Tool Suite for Program Analysis and Reverse Engineering , 2006, Ada-Europe.

[22]  Timothy J. Harvey,et al.  Practical improvements to the construction and destruction of static single assignment form , 1998 .

[23]  Michael Hind,et al.  Pointer analysis: haven't we solved this problem yet? , 2001, PASTE '01.

[24]  Stefan Staiger,et al.  Reverse Engineering of Graphical User Interfaces Using Static Analyses , 2007, 14th Working Conference on Reverse Engineering (WCRE 2007).

[25]  Jeremy Singer,et al.  Static program analysis based on virtual register renaming , 2006 .

[26]  David W. Binkley,et al.  Program slicing , 2008, 2008 Frontiers of Software Maintenance.

[27]  Panos E. Livadas,et al.  System dependence graph construction for recursive programs , 1993, Proceedings of 1993 IEEE 17th International Computer Software and Applications Conference COMPSAC '93.

[28]  Phil Pfeiffer,et al.  Dependence analysis for pointer variables , 1989, PLDI '89.

[29]  Mark N. Wegman,et al.  Efficiently computing static single assignment form and the control dependence graph , 1991, TOPL.

[30]  Robert E. Tarjan,et al.  Depth-First Search and Linear Graph Algorithms , 1972, SIAM J. Comput..

[31]  Barbara G. Ryder,et al.  Comparing flow and context sensitivity on the modification-side-effects problem , 1998, ISSTA '98.

[32]  Gregg Rothermel,et al.  Syntax-Directed Construction of Program Dependence Graphs , 1996 .

[33]  Rainer Koschke,et al.  Atomic architectural component recovery for program understanding and evolution , 2002, International Conference on Software Maintenance, 2002. Proceedings..

[34]  Lars Ole Andersen,et al.  Program Analysis and Specialization for the C Programming Language , 2005 .