Results 1 -
3 of
3
A Survey of Program Slicing Techniques
- JOURNAL OF PROGRAMMING LANGUAGES
, 1995
"... A program slice consists of the parts of a program that (potentially) affect the values computed at some point of interest, referred to as a slicing criterion. The task of computing program slices is called program slicing. The original definition of a program slice was presented by Weiser in 197 ..."
Abstract
-
Cited by 572 (10 self)
- Add to MetaCart
A program slice consists of the parts of a program that (potentially) affect the values computed at some point of interest, referred to as a slicing criterion. The task of computing program slices is called program slicing. The original definition of a program slice was presented by Weiser in 1979. Since then, various slightly different notions of program slices have been proposed, as well as a number of methods to compute them. An important distinction is that between a static and a dynamic slice. The former notion is computed without making assumptions regarding a program's input, whereas the latter relies on some specific test case. Procedures, arbitrary control flow, composite datatypes and pointers, and interprocess communication each require a specific solution. We classify static and dynamic slicing methods for each of these features, and compare their accuracy and efficiency. Moreover, the possibilities for combining solutions for different features are investigated....
Practical Fine-Grained Static Slicing of Optimized Code
, 1994
"... Program slicing is a technique for visualizing dependences and restricting attention to just the components of a program relevant to evaluation of certain expressions. Backward slicing reveals which other parts of the program the expressions' meaning depends on, while forward slicing determines whic ..."
Abstract
-
Cited by 28 (2 self)
- Add to MetaCart
Program slicing is a technique for visualizing dependences and restricting attention to just the components of a program relevant to evaluation of certain expressions. Backward slicing reveals which other parts of the program the expressions' meaning depends on, while forward slicing determines which parts of the program depend on their meaning. Slicing helps programmers understand program structure, which aids program understanding, maintenance, testing, and debugging; slicing can also assist parallelization, integration and comparison of program versions, and other tasks. This paper improves previous techniques for static slicing. Our algorithm is expression-oriented rather than based on statements and variables, resulting in smaller slices. A user can slice on any value computed by the program---including ones that are not, or cannot be, assigned to variables. The slicer accounts for function calls, pointers, and aggregate structures. It takes advantage of compiler analyses and tran...
Sequentializing Program Dependence Graphs for Irreducible Programs
, 1993
"... Compilers using a parallel intermediate program representation like the program dependence graph must sequentialize the code as part of code generation. We have taken the final steps needed to solve the problem of converting a program dependence graph representation into a control flow graph represe ..."
Abstract
-
Cited by 16 (1 self)
- Add to MetaCart
Compilers using a parallel intermediate program representation like the program dependence graph must sequentialize the code as part of code generation. We have taken the final steps needed to solve the problem of converting a program dependence graph representation into a control flow graph representation for irreducible programs. We have done this without increasing the computational complexity of the fastest previously published algorithm unable to handle irreducible programs. We introduce the concepts of loop entry nodes and loop closing edges, which are generalizations of loop headers and backedges. Using these nodes, we can perform the necessary preprocessing without fixpoint iteration. 1 Introduction This paper addresses the problem of converting a parallel program representation into a sequential program representation without unnecessarily duplicating program statements or adding computational overhead. The parallel program representation considered is the program dependence ...

