We use cookies to ensure that we give you the best experience on our website. By continuing to browse this repository, you give consent for essential cookies to be used. You can read more about our Privacy and Cookie Policy.

Some notes on interprocedural program slicing.

Abstract

Weiser's algorithm for computing interprocedural slices has a
serious drawback: it generates spurious criteria which are not
feasible in the control flow of the program. When these extraneous
criteria are used the slice becomes imprecise in that it has
statements that are not relevant to the computation. Horwitz, Reps
and Binkley solved this problem by devising the System Dependence
Graph with an associated algorithm that produced more precise
interprocedural slices. We take a ``step backward'' and show how to
generate exactly the interprocedural slicing criteria needed, using
the program's call graph or a stack. This technique can also be used
on a family of program dependence graphs that represent all procedures
in a program and are not interconnected by a system dependence graph. Then
we show how to use the Horwitz, Reps and Binkley interprocedural
slicing algorithm to generate criteria and show that the criteria so
generated are equal to those generated by the call-graph/stack
technique. Thus we present alternative, equivalent ways to generate
precise slicing criteria across procedure boundaries. And finally we
show that under certain circumstances, Weiser's technique for slicing
across procedures is a bit ``too strong,'' for it always generates
sufficient criteria to obtain the entire program as a slice on any
criteria.