Communications of the ACM
Optimization of expressions in Fortran
Communications of the ACM
Communications of the ACM
Programming languages and their compilers: Preliminary notes
Programming languages and their compilers: Preliminary notes
The program dependence graph and its use in optimization
ACM Transactions on Programming Languages and Systems (TOPLAS)
Detecting equality of variables in programs
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Global value numbers and redundant computations
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Register allocation via hierarchical graph coloring
PLDI '91 Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation
Array privatization for parallel execution of loops
ICS '92 Proceedings of the 6th international conference on Supercomputing
Direct update of data flow representations for a meaning-preserving program restructuring tool
SIGSOFT '93 Proceedings of the 1st ACM SIGSOFT symposium on Foundations of software engineering
GIVE-N-TAKE—a balanced code placement framework
PLDI '94 Proceedings of the ACM SIGPLAN 1994 conference on Programming language design and implementation
An efficient approach to computing fixpoints for complex program analysis
ICS '94 Proceedings of the 8th international conference on Supercomputing
Extending microcode compaction for real architectures
MICRO 20 Proceedings of the 20th annual workshop on Microprogramming
Constant propagation with conditional branches
POPL '85 Proceedings of the 12th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Characterizations of Reducible Flow Graphs
Journal of the ACM (JACM)
Testing for the Church-Rosser Property
Journal of the ACM (JACM)
Global Data Flow Analysis and Iterative Algorithms
Journal of the ACM (JACM)
A Fast and Usually Linear Algorithm for Global Flow Analysis
Journal of the ACM (JACM)
Covering Points of a Digraph with Point-Disjoint Paths and Its Application to Code Optimization
Journal of the ACM (JACM)
On Live-Dead Analysis for Global Data Flow Problems
Journal of the ACM (JACM)
Fast Algorithms for Solving Path Problems
Journal of the ACM (JACM)
Vector Execution of Flow Graphs
Journal of the ACM (JACM)
An Automatic Technique for Selection of Data Representations in SETL Programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Global optimization by suppression of partial redundancies
Communications of the ACM
Proving the correctness of heuristically optimized code
Communications of the ACM
Certification of programs for secure information flow
Communications of the ACM
An algorithm for reduction of operator strength
Communications of the ACM
A program data flow analysis procedure
Communications of the ACM
A balanced code placement framework
ACM Transactions on Programming Languages and Systems (TOPLAS)
MPACT: microprocessor application to control-firmware translator
ACM SIGDA Newsletter
Finding bugs with a constraint solver
Proceedings of the 2000 ACM SIGSOFT international symposium on Software testing and analysis
Code motion of control structures in high-level languages
POPL '86 Proceedings of the 13th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
A unified approach to global program optimization
POPL '73 Proceedings of the 1st annual ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Analysis of a simple algorithm for global data flow problems
POPL '73 Proceedings of the 1st annual ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Applications of a graph grammar for program control flow analysis
POPL '77 Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Symbolic evaluation and the global value graph
POPL '77 Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Application of lattice algebra to loop optimization
POPL '75 Proceedings of the 2nd ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Node listings applied to data flow analysis
POPL '75 Proceedings of the 2nd ACM SIGACT-SIGPLAN symposium on Principles of programming languages
A fast and usually linear algorithm for global flow analysis
POPL '75 Proceedings of the 2nd ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Handling irreducible loops: optimized node splitting versus DJ-graphs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Prime subprogram parsing of a program
POPL '80 Proceedings of the 7th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Automatic data structure selection in SETL
POPL '79 Proceedings of the 6th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Folklore confirmed: reducible flow graphs are exponentially larger
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Handling Irreducible Loops: Optimized Node Splitting vs. DJ-Graphs
Euro-Par '01 Proceedings of the 7th International Euro-Par Conference Manchester on Parallel Processing
An interactive program advising system
SIGCSE '76 Proceedings of the ACM SIGCSE-SIGCUE technical symposium on Computer science and education
Finding the depth of a flow graph
STOC '76 Proceedings of the eighth annual ACM symposium on Theory of computing
Node listings for reducible flow graphs
STOC '75 Proceedings of seventh annual ACM symposium on Theory of computing
Testing flow graph reducibility
STOC '73 Proceedings of the fifth annual ACM symposium on Theory of computing
On finding lowest common ancestors in trees
STOC '73 Proceedings of the fifth annual ACM symposium on Theory of computing
Vector execution of flow graphs(Extended Abstract)
STOC '80 Proceedings of the twelfth annual ACM symposium on Theory of computing
Placement of microinstructions in a two-dimensional address space
MICRO 8 Proceedings of the 8th annual workshop on Microprogramming
STOC '72 Proceedings of the fourth annual ACM symposium on Theory of computing
Flow graph analysis using linear connected regions
ACM '76 Proceedings of the 1976 annual conference
A survey of compiler optimization techniques
ACM '73 Proceedings of the ACM annual conference
Current status of a portable LISP compiler
SIGPLAN '82 Proceedings of the 1982 SIGPLAN symposium on Compiler construction
Automatic and semiautomatic optimization of SETL
Proceedings of the ACM SIGPLAN symposium on Very high level languages
Extensible languages: A potential user's point of view
Proceedings of the international symposium on Extensible languages
Removal of invariant statements from nested-loops in a single effective compiler pass
Proceedings of the conference on Programming languages and compilers for parallel and vector machines
A system for reliable engineering software
Proceedings of the international conference on Reliable software
Semantic attributes and improvement of generated code
ACM '74 Proceedings of the 1974 annual conference - Volume 1
Compile time type determination in SETL
ACM '74 Proceedings of the 1974 annual conference - Volume 1
A model highlighting the security of operating systems
ACM '74 Proceedings of the 1974 annual conference - Volume 1
A methodology for machine language decompilation
ACM '74 Proceedings of the 1974 annual conference - Volume 1
POPL '76 Proceedings of the 3rd ACM SIGACT-SIGPLAN symposium on Principles on programming languages
Evaluation of Compiler-Assisted Software DSM Schemes for a Workstation Cluster
IWIA '99 Proceedings of the 1999 International Workshop on Innovative Architecture
Iterative-free program analysis
ICFP '03 Proceedings of the eighth ACM SIGPLAN international conference on Functional programming
Specifying program structure through sequence relationships
ACM SIGPLAN Notices
Declarative techniques for model-driven business process integration
IBM Systems Journal
Code coverage testing using hardware performance monitoring support
Proceedings of the sixth international symposium on Automated analysis-driven debugging
Identification of microprogrammable loops for problem oriented architecture synthesis
ACM SIGMICRO Newsletter
A practical interprocedural dominance algorithm
ACM Transactions on Programming Languages and Systems (TOPLAS)
Techniques of Program Execution with a Writable Control Memory
IEEE Transactions on Computers
Removing useless variables in cost analysis of Java bytecode
Proceedings of the 2008 ACM symposium on Applied computing
A Framework for CFG-Based Static Program Analysis of Ada Programs
Ada-Europe '08 Proceedings of the 13th Ada-Europe international conference on Reliable Software Technologies
Termination Analysis of Java Bytecode
FMOODS '08 Proceedings of the 10th IFIP WG 6.1 international conference on Formal Methods for Open Object-Based Distributed Systems
A Model-Based Framework for Statically and Dynamically Checking Component Interactions
MoDELS '08 Proceedings of the 11th international conference on Model Driven Engineering Languages and Systems
COSTA: Design and Implementation of a Cost and Termination Analyzer for Java Bytecode
Formal Methods for Components and Objects
Model-based test cases synthesis using UML interaction diagrams
ACM SIGSOFT Software Engineering Notes
Towards model structuring based on flow diagram decomposition
Proceedings of the 1st Workshop on Behaviour Modelling in Model-Driven Architecture
Identifying Inter-task Communication in Shared Memory Programming Models
IWOMP '09 Proceedings of the 5th International Workshop on OpenMP: Evolving OpenMP in an Age of Extreme Parallelism
IWMSE '09 Proceedings of the 2009 ICSE Workshop on Multicore Software Engineering
Extended Pawlak's Flow Graphs and Information Theory
Transactions on Computational Science V
Selecting Computer Architectures by Means of Control-Flow-Graph Mining
IDA '09 Proceedings of the 8th International Symposium on Intelligent Data Analysis: Advances in Intelligent Data Analysis VIII
Declarative Intraprocedural Flow Analysis of Java Source Code
Electronic Notes in Theoretical Computer Science (ENTCS)
Privacy-preserving genomic computation through program specialization
Proceedings of the 16th ACM conference on Computer and communications security
A hybrid analysis framework for detecting web application vulnerabilities
IWSESS '09 Proceedings of the 2009 ICSE Workshop on Software Engineering for Secure Systems
The history of language processor technology in IBM
IBM Journal of Research and Development
Static data-flow analysis of synchronous programs
MEMOCODE'09 Proceedings of the 7th IEEE/ACM international conference on Formal Methods and Models for Codesign
Frances: a tool for understanding code generation
Proceedings of the 41st ACM technical symposium on Computer science education
Optimal interprocedural program optimization: a new framework and its application
Optimal interprocedural program optimization: a new framework and its application
From source code to runtime behaviour: Software metrics help to select the computer architecture
Knowledge-Based Systems
An execution-level component composition model based on component testing information
CBSE'07 Proceedings of the 10th international conference on Component-based software engineering
Synthesis of test scenarios using UML activity diagrams
Software and Systems Modeling (SoSyM)
SMT-based optimization for synchronous programs
Proceedings of the 14th International Workshop on Software and Compilers for Embedded Systems
Combining specification-based and code-based coverage for model transformation chains
ICMT'11 Proceedings of the 4th international conference on Theory and practice of model transformations
Finding the right level of abstraction for minimizing operational expenditure
Proceedings of the fourth workshop on High performance computational finance
A signature scheme for distributed executions based on control flow analysis
SIIS'11 Proceedings of the 2011 international conference on Security and Intelligent Information Systems
Control-flow analysis of functional programs
ACM Computing Surveys (CSUR)
Phase-based tuning for better utilization of performance-asymmetric multicore processors
CGO '11 Proceedings of the 9th Annual IEEE/ACM International Symposium on Code Generation and Optimization
Identifying extract-method refactoring candidates automatically
Proceedings of the Fifth Workshop on Refactoring Tools
A study of irreducibility in C programs
Software—Practice & Experience
Automatic partitioning of database applications
Proceedings of the VLDB Endowment
Calculating graph algorithms for dominance and shortest path
MPC'12 Proceedings of the 11th international conference on Mathematics of Program Construction
Frances: A Tool for Understanding Computer Architecture and Assembly Language
ACM Transactions on Computing Education (TOCE)
Efficient patch-based auditing for web application vulnerabilities
OSDI'12 Proceedings of the 10th USENIX conference on Operating Systems Design and Implementation
A new algorithm for identifying loops in decompilation
SAS'07 Proceedings of the 14th international conference on Static Analysis
Intermediate representations in imperative compilers: A survey
ACM Computing Surveys (CSUR)
SEC'13 Proceedings of the 22nd USENIX conference on Security
Passive code in synchronous programs
ACM Transactions on Embedded Computing Systems (TECS) - Special Section ESFH'12, ESTIMedia'11 and Regular Papers
Formal verification of synchronous data-flow program transformations toward certified compilers
Frontiers of Computer Science: Selected Publications from Chinese Universities
WCET analysis with MRU cache: Challenging LRU for predictability
ACM Transactions on Embedded Computing Systems (TECS)
Hi-index | 0.08 |
Any static, global analysis of the expression and data relationships in a program requires a knowledge of the control flow of the program. Since one of the primary reasons for doing such a global analysis in a compiler is to produce optimized programs, control flow analysis has been embedded in many compilers and has been described in several papers. An early paper by Prosser [5] described the use of Boolean matrices (or, more particularly, connectivity matrices) in flow analysis. The use of “dominance” relationships in flow analysis was first introduced by Prosser and much expanded by Lowry and Medlock [6]. References [6,8,9] describe compilers which use various forms of control flow analysis for optimization. Some recent developments in the area are reported in [4] and in [7]. The underlying motivation in all the different types of control flow analysis is the need to codify the flow relationships in the program. The codification may be in connectivity matrices, in predecessor-successor tables, in dominance lists, etc. Whatever the form, the purpose is to facilitate determining what the flow relationships are; in other words to facilitate answering such questions as: is this an inner loop?, if an expression is removed from the loop where can it be correctly and profitably placed?, which variable definitions can affect this use? In this paper the basic control flow relationships are expressed in a directed graph. Various graph constructs are then found and shown to codify interesting global relationships.