The program dependence graph and its use in optimization
ACM Transactions on Programming Languages and Systems (TOPLAS)
A Control-Flow Normalization Algorithm and its Complexity
IEEE Transactions on Software Engineering
Value dependence graphs: representation without taxation
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Nesting of reducible and irreducible loops
ACM Transactions on Programming Languages and Systems (TOPLAS)
Making graphs reducible with controlled node splitting
ACM Transactions on Programming Languages and Systems (TOPLAS)
Advanced compiler design and implementation
Advanced compiler design and implementation
Communications of the ACM
Communications of the ACM
Characterizations of Reducible Flow Graphs
Journal of the ACM (JACM)
Letters to the editor: go to statement considered harmful
Communications of the ACM
Flow Analysis of Computer Programs
Flow Analysis of Computer Programs
Handling irreducible loops: optimized node splitting versus DJ-graphs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Folklore confirmed: reducible flow graphs are exponentially larger
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Construction of Thinned Gated Single-Assignment Form
Proceedings of the 6th International Workshop on Languages and Compilers for Parallel Computing
What Assembly Language Programmers Get Up To: Control Flow Challenges in Reverse Compilation
CSMR '00 Proceedings of the Conference on Software Maintenance and Reengineering
Some properties of APL programs
APL '75 Proceedings of seventh international conference on APL
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
STOC '72 Proceedings of the fourth annual ACM symposium on Theory of computing
Proceedings of a symposium on Compiler optimization
Global common subexpression elimination
Proceedings of a symposium on Compiler optimization
Static profile and dynamic behavior of COBOL programs
ACM SIGPLAN Notices
Static profile of COBOL programs
ACM SIGPLAN Notices
LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation
Proceedings of the international symposium on Code generation and optimization: feedback-directed and runtime optimization
Approximation of the worst-case execution time using structural analysis
Proceedings of the 4th ACM international conference on Embedded software
Compilers: Principles, Techniques, and Tools (2nd Edition)
Compilers: Principles, Techniques, and Tools (2nd Edition)
An empirical study of Java bytecode programs
Software—Practice & Experience
Structural analysis: A new approach to flow analysis in optimizing compilers
Computer Languages
An empirical study of APL programs
Computer Languages
Hi-index | 0.00 |
Compilers use a variety of techniques to optimize and transform loops. However, many of these optimizations do not work when the loop is irreducible. Node splitting techniques transform irreducible loops into reducible loops, but many real-world compilers choose to leave them unoptimized. This article describes an empirical study of irreducibility in current versions of open-source software, and then compares them with older versions. We also study machine-generated C code from a number of software tools. We find that irreducibility is extremely rare, and is becoming less common with time. We conclude that leaving irreducible loops unoptimized is a perfectly feasible future-proof option due to the rarity of its occurrence in non-trivial software.