Results 1  10
of
14
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 790 (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....
Interconvertibility of a Class of Set Constraints and ContextFreeLanguage Reachability
 TCS
, 1998
"... We show the interconvertibility of contextfreelanguage reachability problems and a class of setconstraint problems: given a contextfreelanguage reachability problem, we show how to construct a setconstraint problem whose answer gives a solution to the reachability problem; given a setconstra ..."
Abstract

Cited by 43 (2 self)
 Add to MetaCart
We show the interconvertibility of contextfreelanguage reachability problems and a class of setconstraint problems: given a contextfreelanguage reachability problem, we show how to construct a setconstraint problem whose answer gives a solution to the reachability problem; given a setconstraint problem, we show how to construct a contextfreelanguage reachability problem whose answer gives a solution to the setconstraint problem. The interconvertibility of these two formalisms offers an conceptual advantage akin to the advantage gained from the interconvertibility of finitestate automata and regular expressions in formal language theory, namely, a problem can be formulated in whichever formalism is most natural. It also offers some insight into the "O(n ) bottleneck" for different types of programanalysis problems and allows results previously obtained for contextfreelanguage reachability problems to be applied to setconstraint problems and vice versa.
Computing procedure summaries for interprocedural analysis
 In ESOP
, 2007
"... Abstract. We describe a new technique for computing procedure summaries for performing an interprocedural analysis on programs. Procedure summaries are computed by performing a backward analysis of procedures, but there are two key new features: (i) information is propagated using "generic&quo ..."
Abstract

Cited by 28 (4 self)
 Add to MetaCart
(Show Context)
Abstract. We describe a new technique for computing procedure summaries for performing an interprocedural analysis on programs. Procedure summaries are computed by performing a backward analysis of procedures, but there are two key new features: (i) information is propagated using "generic" assertions (rather than regular assertions that are used in intraprocedural analysis); and (ii) unification is used to simplify these generic assertions (thus generalizing our recent technique of using unification to simplify regular assertions in intraprocedural analysis
Undecidability of Contextsensitive Datadependence Analysis
 Transactions on Programming Languages and Systems
, 1999
"... Anumber of programanalysis problems can be tackled by transforming them into certain kinds of graphreachability problems in labeled directed graphs. The edge labels can be used to filter out paths that are not of interest: A path P from vertex s to vertex t only counts as a “valid connection ” bet ..."
Abstract

Cited by 18 (2 self)
 Add to MetaCart
(Show Context)
Anumber of programanalysis problems can be tackled by transforming them into certain kinds of graphreachability problems in labeled directed graphs. The edge labels can be used to filter out paths that are not of interest: A path P from vertex s to vertex t only counts as a “valid connection ” between s and t if the word spelled out by P is in a certain language. Often the languages used for such filtering purposes are languages of matching parentheses: • Insome cases, the matchedparenthesis condition is used to filter out paths with mismatched calls and returns. This leads to socalled “contextsensitive ” program analyses, such as contextsensitive interprocedural slicing and contextsensitive interprocedural dataflow analysis. • Inother cases, the matchedparenthesis condition is used to capture a graphtheoretic analog of McCarthy’s rules: “car(cons(x,y))=x ” and “cdr(cons(x,y))=y”. That is, in the code fragment c=cons(a,b); d=car(c); the fact that there is a “structuretransmitted data dependence ” from a to d, but not from b to d, iscaptured in a graph by using (i) avertex for each variable, (ii) an edge from vertex i to vertex j when i is used on the righthand side of an assignment to j, (iii) parentheses that match as the labels on the edges that run fromatocandctod, and (iv) parentheses that do not match as the labels on the edges that run frombtocandctod.
Logical interpretation: Static program analysis using theorem proving
 IN: CADE21. VOLUME 4603 OF LNAI., SPRINGERVERLAG
, 2007
"... This paper presents the foundations for using automated deduction technology in static program analysis. The central principle is the use of logical lattices – a class of lattices defined on logical formulas in a logical theory – in an abstract interpretation framework. Abstract interpretation over ..."
Abstract

Cited by 11 (0 self)
 Add to MetaCart
(Show Context)
This paper presents the foundations for using automated deduction technology in static program analysis. The central principle is the use of logical lattices – a class of lattices defined on logical formulas in a logical theory – in an abstract interpretation framework. Abstract interpretation over logical lattices, called logical interpretation, raises new challenges for theorem proving. We present an overview of some of the existing results in the field of logical interpretation and outline some requirements for building expressive and scalable logical interpreters.
Region Analysis: A Parallel Elimination Method for Data Flow Analysis
 IEEE Transactions on Software Engineering
, 1995
"... Parallel data flow analysis methods offer the promise of calculating detailed semantic information about a program at compiletime more efficiently than sequential techniques. Previous work on parallel elimination methods [1, 2] has been hampered by the lack of control over interval size; this can p ..."
Abstract

Cited by 9 (3 self)
 Add to MetaCart
(Show Context)
Parallel data flow analysis methods offer the promise of calculating detailed semantic information about a program at compiletime more efficiently than sequential techniques. Previous work on parallel elimination methods [1, 2] has been hampered by the lack of control over interval size; this can prohibit effective parallel execution of these methods. To overcome this problem, we have designed the region analysis method, a new elimination method for data flow analysis. Region analysis emphasizes flow graph partitioning to enable better load balancing in a more effective parallel algorithm. In this paper, we present the design of region analysis and the empirical results we have obtained that indicate (1) the prevalence of large intervals in flow graphs derived from real programs, and (2) the performance improvement of region analysis over parallel AllenCocke interval analysis. Our implementation analyzed programs from the Perfect Benchmarks [3] and netlib [4] running on a Sequent Sym...
Realizable paths and the NL vs L problem
 Electronic Colloquium on Computational Complexity (ECCC
"... A celebrated theorem of Savitch [Sav70] states that NSPACE(S) ⊆ DSPACE(S2). In particular, Savitch gave a deterministic algorithm to solve STCONNECTIVITY (an NLcomplete problem) using O(log2n) space, implying NL ⊆ DSPACE(log2n). While Savitch’s theorem itself has not been improved in the last fo ..."
Abstract

Cited by 2 (0 self)
 Add to MetaCart
A celebrated theorem of Savitch [Sav70] states that NSPACE(S) ⊆ DSPACE(S2). In particular, Savitch gave a deterministic algorithm to solve STCONNECTIVITY (an NLcomplete problem) using O(log2n) space, implying NL ⊆ DSPACE(log2n). While Savitch’s theorem itself has not been improved in the last four decades, studying the space complexity of several special cases of STCONNECTIVITY has provided new insights into the spacebounded complexity classes. In this paper, we introduce new kind of graph connectivity problems which we call graph realizability problems. All of our graph realizability problems are generalizations of UNDIRECTED STCONNECTIVITY. STREALIZABILITY, the most general graph realizability problem, is LogCFLcomplete. We define the corresponding complexity classes that lie between L and LogCFL and study their relationships. As special cases of our graph realizability problems we define two natural problems, BALANCED STCONNECTIVITY and POSITIVE BALANCED STCONNECTIVITY, that lie between L and NL. We present a deterministic O(lognloglogn) space algorithm for BALANCED STCONNECTIVITY. More generally we prove that SGSLogCFL, a generalization of BALANCED STCONNECTIVITY, is contained in DSPACE(lognloglogn). To achieve this goal we generalize several concepts (such as graph squaring and transitive closure) and algorithms (such as parallel algorithms) known in the context of
Practical Parallelization: Experience with a Complex Flow Analysis
, 1999
"... . Once the sole province of supercomputing centers, parallel computing systems are now becoming commonplace. Parallel systems are regularly used to boost the performance of, for example, multiuser systems and webservers. In general, exploiting parallelism to improve the performance of a sing ..."
Abstract

Cited by 2 (0 self)
 Add to MetaCart
(Show Context)
. Once the sole province of supercomputing centers, parallel computing systems are now becoming commonplace. Parallel systems are regularly used to boost the performance of, for example, multiuser systems and webservers. In general, exploiting parallelism to improve the performance of a single application remains a significant challenge. One approach to meeting this challenge is to leverage existing developer experience that has been codified in concurrent design patterns and associated programming frameworks. In this paper, we report on our experiences using a parallel programming framework to implement a parallel version of the FLAVERS program analysis system. We describe the effort required to modify an existing sequential implementation of FLAVERS, the improved performance of the resulting parallel FLAVERS, and the prospects for generalizing this approach to other program analyses. Keywords : program analysis, flow analysis, sharedmemory parallelism, programming ...
Retrospective: Interprocedural Slicing Using Dependence Graphs
, 2003
"... This paper made two main contributions: it defined system dependence graphs (SDGs), which extended program dependence graphs (PDGs) [31, 17] to incorporate collections of procedures (with procedure calls) rather than just monolithic programs. It then defined an interprocedural slicing algorithm that ..."
Abstract
 Add to MetaCart
This paper made two main contributions: it defined system dependence graphs (SDGs), which extended program dependence graphs (PDGs) [31, 17] to incorporate collections of procedures (with procedure calls) rather than just monolithic programs. It then defined an interprocedural slicing algorithm that identifies the components of the SDG that might affect the values of the variables defined at or used at a given program point