Results 1 
9 of
9
Data flow analysis in software reliability
 ACM Computing Surveys
, 1976
"... The ways that the methods of data flow analysis can be applied to improve software reliability are described. There is also a review of the basic terminology from graph theory and from data flow analysis in global program optimization. The notation of regular expressions is used to describe actions ..."
Abstract

Cited by 44 (0 self)
 Add to MetaCart
The ways that the methods of data flow analysis can be applied to improve software reliability are described. There is also a review of the basic terminology from graph theory and from data flow analysis in global program optimization. The notation of regular expressions is used to describe actions on data for sets of paths.
Structuring Decompiled Graphs
 In Proceedings of the International Conference on Compiler Construction
, 1996
"... . A structuring algorithm for arbitrary control flow graphs is presented. Graphs are structured into functional, semantical and structural equivalent graphs, without code replication or introduction of new variables. The algorithm makes use of a set of generic highlevel language structures that inc ..."
Abstract

Cited by 21 (6 self)
 Add to MetaCart
. A structuring algorithm for arbitrary control flow graphs is presented. Graphs are structured into functional, semantical and structural equivalent graphs, without code replication or introduction of new variables. The algorithm makes use of a set of generic highlevel language structures that includes different types of loops and conditionals. Gotos are used only when the graph cannot be structured with the structures in the generic set. This algorithm is adequate for the control flow analysis required when decompiling programs, given that a pure binary program does not contain information on the highlevel structures used by the initial highlevel language program (i.e. before compilation). The algorithm has been implemented as part of the dcc decompiler, an i80286 decompiler of DOS binary programs, and has proved successful in its aim of structuring decompiled graphs. 1 Introduction A decompiler is a software tool that reverses the compilation process by translating a pure binar...
Finding dominators in practice
 In Proceedings of the 12th Annual European Symposium on Algorithms, volume 3221 of Lecture Notes in Computer Science
, 2004
"... Abstract. The computation of dominators in a flowgraph has applications in program optimization, circuit testing, and other areas. Lengauer and Tarjan [17] proposed two versions of a fast algorithm for finding dominators and compared them experimentally with an iterative bit vector algorithm. They c ..."
Abstract

Cited by 7 (2 self)
 Add to MetaCart
Abstract. The computation of dominators in a flowgraph has applications in program optimization, circuit testing, and other areas. Lengauer and Tarjan [17] proposed two versions of a fast algorithm for finding dominators and compared them experimentally with an iterative bit vector algorithm. They concluded that both versions of their algorithm were much faster than the bitvector algorithm even on graphs of moderate size. Recently Cooper et al. [9] have proposed a new, simple, treebased iterative algorithm. Their experiments suggested that it was faster than the simple version of the LengauerTarjan algorithm on graphs representing computer program control flow. Motivated by the work of Cooper et al., we present an experimental study comparing their algorithm (and some variants) with careful implementations of both versions of the LengauerTarjan algorithm and with a new hybrid algorithm. Our results suggest that, although the performance of all the algorithms is similar, the most consistently fast are the simple LengauerTarjan algorithm and the hybrid algorithm, and their advantage increases as the graph gets bigger or more complicated. 1
Folklore Confirmed: Reducible Flow Graphs are Exponentially Larger
 Proc. of the 30 th ACM SIGPLANSIGACT Symposium on Principles of Programming Languages
, 2003
"... Many program analysis techniques used by compilers are applicable only to programs whose control flow graphs are reducible. Nodesplitting is a technique that can be used to convert any control flow graph to a reducible one. However, as has been observed for various nodesplitting algorithms, there ..."
Abstract

Cited by 5 (0 self)
 Add to MetaCart
Many program analysis techniques used by compilers are applicable only to programs whose control flow graphs are reducible. Nodesplitting is a technique that can be used to convert any control flow graph to a reducible one. However, as has been observed for various nodesplitting algorithms, there can be an exponential blowup in the size of the graph. We prove that exponential blowup is unavoidable. In particular, we show that any reducible graph that is equivalent to the complete graph on n nodes (or to related boundeddegree control flow graphs) must have at least 2 nodes. While this result is not a surprise, it may be relevant to the quest for finding methods of obfuscation for software protection.
Dominator Tree Verification and VertexDisjoint Paths
, 2005
"... We present a lineartime algorithm that given a flowgraph G = (V, A, r) and a tree T, checks whether T is the dominator tree of G. Also we prove that there exist two spanning trees of G, T1 and T2, such that for any vertex v the paths from r to v in T1 and T2 intersect only at the vertices that domi ..."
Abstract

Cited by 4 (3 self)
 Add to MetaCart
We present a lineartime algorithm that given a flowgraph G = (V, A, r) and a tree T, checks whether T is the dominator tree of G. Also we prove that there exist two spanning trees of G, T1 and T2, such that for any vertex v the paths from r to v in T1 and T2 intersect only at the vertices that dominate v. The proof is constructive and our algorithm can build the two spanning trees in linear time. Simpler versions of our two algorithms run in O(mα(m, n))time, where n is the number of vertices and m is the number of arcs in G. The existence of such two spanning trees implies that we can order the calculations of the iterative algorithm for finding dominators, proposed by Allen and Cocke [2], so that it builds the dominator tree in a single iteration.
SETL for Internet Data Processing
, 2000
"... hereby granted, provided that this notice and the reference ..."
Abstract

Cited by 3 (1 self)
 Add to MetaCart
hereby granted, provided that this notice and the reference
A Practical Interprocedural Dominance Algorithm
"... Existing algorithms for computing dominators are formulated for control flow graphs of single procedures. With the rise of computing power, and the viability of wholeprogram analyses and optimizations, there is a growing need to extend the dominator computation algorithms to contextsensitive inter ..."
Abstract

Cited by 2 (0 self)
 Add to MetaCart
Existing algorithms for computing dominators are formulated for control flow graphs of single procedures. With the rise of computing power, and the viability of wholeprogram analyses and optimizations, there is a growing need to extend the dominator computation algorithms to contextsensitive interprocedural dominators. Because the transitive reduction of the interprocedural dominator graph is not a tree, as in the intraprocedural case, it is not possible to extend existing algorithms directly. In this article, we propose a new algorithm for computing interprocedural dominators. Although the theoretical complexity of this new algorithm is as high as that of a straightforward iterative solution of the data flow equations, our experimental evaluation demonstrates that the algorithm is practically viable, even for programs consisting of several hundred thousands of basic blocks.
Calculating Graph Algorithms for Dominance and Shortest Path ⋆
"... Abstract. We calculate two iterative, polynomialtime graph algorithms from the literature: a dominance algorithm and an algorithm for the singlesource shortest path problem. Both algorithms are calculated directly from the definition of the properties by fixedpoint fusion of (1) a least fixed poi ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
Abstract. We calculate two iterative, polynomialtime graph algorithms from the literature: a dominance algorithm and an algorithm for the singlesource shortest path problem. Both algorithms are calculated directly from the definition of the properties by fixedpoint fusion of (1) a least fixed point expressing all finite paths through a directed graph and (2) Galois connections that capture dominance and path length. The approach illustrates that reasoning in the style of fixedpoint calculus extends gracefully to the domain of graph algorithms. We thereby bridge common practice from the school of program calculation with common practice from the school of static program analysis, and build a novel view on iterative graph algorithms as instances of abstract interpretation.
Calculating Graph Algorithms by Abstract Interpretation
"... We present a technique to calculate iterative, polynomialtime graph algorithms directly from the definition of the properties. We do this by fixedpoint fusion of (1) a least fixed point expressing all finite paths through a directed graph and (2) Galois connections that capture the properties of i ..."
Abstract
 Add to MetaCart
We present a technique to calculate iterative, polynomialtime graph algorithms directly from the definition of the properties. We do this by fixedpoint fusion of (1) a least fixed point expressing all finite paths through a directed graph and (2) Galois connections that capture the properties of interest. We demonstrate the technique by constructing three algorithms from the literature: a transitiveclosurealgorithm, adominancealgorithm andanalgorithm forthesinglesourceshortest path problem. Furthermore we show how the transitive closure algorithm can be understood as an abstraction of a fourth iterative allpairs shortest path algorithm. The approach illustrates that reasoning in the style of fixedpoint calculus extends gracefully to the domain of graph algorithms. We thereby bridge common practice from the school of program calculation with common practice from the school of static program analysis, where fixedpoint fusion is known as a complete abstraction, and build a novel view on iterative graph algorithms as instances of abstract interpretation.