Graphs and algorithms
Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
Elimination algorithms for data flow analysis
ACM Computing Surveys (CSUR)
Incremental data-flow analysis algorithms
ACM Transactions on Programming Languages and Systems (TOPLAS)
Theory of finite and infinite graphs
Theory of finite and infinite graphs
An efficient hybrid algorithm for incremental data flow analysis
POPL '90 Proceedings of the 17th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Performing data flow analysis in parallel
Proceedings of the 1990 ACM/IEEE conference on Supercomputing
An Algorithm for Structuring Flowgraphs
Journal of the ACM (JACM)
Fast Algorithms for Solving Path Problems
Journal of the ACM (JACM)
Path-based depth-first search for strong and biconnected components
Information Processing Letters
Ten Years of Hoare's Logic: A Survey—Part I
ACM Transactions on Programming Languages and Systems (TOPLAS)
A program data flow analysis procedure
Communications of the ACM
Communications of the ACM
Flow diagrams, turing machines and languages with only two formation rules
Communications of the ACM
Handbook of Theoretical Computer Science
Handbook of Theoretical Computer Science
Graph Algorithms
Flow Analysis of Computer Programs
Flow Analysis of Computer Programs
Data Structures and Algorithms
Data Structures and Algorithms
The theory of parsing, translation, and compiling
The theory of parsing, translation, and compiling
Introduction to Algorithms
Recognizing Rooted Context-free Flowgraph Languages in Polynomial Time
Proceedings of the 4th International Workshop on Graph-Grammars and Their Application to Computer Science
Combinatorial Algorithms: Theory and Practice
Combinatorial Algorithms: Theory and Practice
The Rearranger - A New Assembler Utility
ASE '06 Proceedings of the 21st IEEE/ACM International Conference on Automated Software Engineering
Constructing the Call Graph of a Program
IEEE Transactions on Software Engineering
Using mathematics to improve ada compiled code, part 2: the proof
Proceedings of the 2007 ACM international conference on SIGAda annual international conference
Loop trees: a new theme in structured programming and discrete structures
Journal of Computing Sciences in Colleges
Removing backward go-to statements from Ada programs: possibilities and problems
Proceedings of the 2008 ACM annual international conference on SIGAda annual international conference
Hi-index | 0.00 |
Any directed graph, even a flow graph representing ''spaghetti code'', is shown here to have at least one loop tree, which is a structure of loops within loops in which no loops overlap. The nodes of the graph may be rearranged in such a way that, with respect to their new order, every edge proceeds in the forward direction except for the loopbacks. Here a loopback goes from somewhere in a loop L to the head of L. We refer to such a rearrangement as a generalized structured program, in which forward goto statements remain unrestricted. Like a min-heap or a max-heap, a loop tree has an array representation, without pointers; it may be constructed in time no worse than O(n^2) for any program written in this fashion. A scalable version of this construction uses a label graph, whose only nodes are the labels of the given program. A graph has a unique loop tree if and only if it is reducible.