System-dependence-graph-based slicing of programs with arbitrary interprocedural control flow

Many algorithms for automating software engineering tasks require program slices. To be applicable to large software systems, these slices must be computed interprocedurally. Slicing techniques based on the system dependence graph (SDG) provide one approach for computing interprocedural slices, but these techniques are defined only for programs in which called procedures necessarily return to call sites. When applied to programs that contain arbitrary interprocedural control flow, existing SDG-based slicing techniques can compute incorrect slices; this limits their applicability. This paper presents an approach to constructing SDGs, and computing slices on SDGs, that accommodates programs with arbitrary interprocedural control flow. The main benefit of our approach is that it allows the use of the SDG-based slicing technique on a wide class of practical programs to which it did not previously apply.

[1]  David W. Binkley,et al.  Interprocedural slicing using dependence graphs , 1990, TOPL.

[2]  David Grove,et al.  Call graph construction in object-oriented languages , 1997, OOPSLA '97.

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

[4]  Barbara G. Ryder,et al.  Interprocedural modification side effect analysis with pointer aliasing , 1993, PLDI '93.

[5]  William G. Griswold,et al.  The design of whole-program analysis tools , 1996, Proceedings of IEEE 18th International Conference on Software Engineering.

[6]  Barbara G. Ryder,et al.  A safe approximate algorithm for interprocedural aliasing , 1992, PLDI '92.

[7]  RothermelGregg,et al.  Computation of interprocedural control dependence , 1998 .

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

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

[10]  Gregg Rothermel,et al.  Aristotle: A System for Research on and Development of Program-Analysis-Based Tools , 1997 .

[11]  Barbara G. Ryder,et al.  Complexity of Concrete Type-Inference in the Presence of Exceptions , 1998, ESOP.

[12]  Thomas Ball,et al.  Slicing Programs with Arbitrary Control-flow , 1993, AADEBUG.

[13]  FerranteJeanne,et al.  The program dependence graph and its use in optimization , 1987 .

[14]  Gregg Rothermel,et al.  Computation of interprocedural control dependence , 1998, ISSTA '98.

[15]  Gregg Rothermel,et al.  A safe, efficient regression test selection technique , 1997, TSEM.

[16]  Mary Jean Harrold,et al.  Reuse-driven interprocedural slicing , 1998, Proceedings of the 20th International Conference on Software Engineering.

[17]  Thomas W. Reps,et al.  Integrating noninterfering versions of programs , 1989, TOPL.

[18]  Joe D. Warren,et al.  The program dependence graph and its use in optimization , 1987, TOPL.

[19]  Saurabh Sinha,et al.  Analysis of programs with exception-handling constructs , 1998, Proceedings. International Conference on Software Maintenance (Cat. No. 98CB36272).