Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
Elimination algorithms for data flow analysis
ACM Computing Surveys (CSUR)
Global instruction scheduling for superscalar machines
PLDI '91 Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation
A Control-Flow Normalization Algorithm and its Complexity
IEEE Transactions on Software Engineering
An elimination algorithm for bidirectional data flow problems using edge placement
ACM Transactions on Programming Languages and Systems (TOPLAS)
A new framework for exhaustive and incremental data flow analysis using DJ graphs
PLDI '96 Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation
Identifying loops using DJ graphs
ACM Transactions on Programming Languages and Systems (TOPLAS)
A Fast and Usually Linear Algorithm for Global Flow Analysis
Journal of the ACM (JACM)
Fast Algorithms for Solving Path Problems
Journal of the ACM (JACM)
A program data flow analysis procedure
Communications of the ACM
Microprocessor Architectures: From VLIW to Tta
Microprocessor Architectures: From VLIW to Tta
Flow Analysis of Computer Programs
Flow Analysis of Computer Programs
Transport-Triggering versus Operation-Triggering
CC '94 Proceedings of the 5th International Conference on Compiler Construction
A balanced code placement framework
ACM Transactions on Programming Languages and Systems (TOPLAS)
Handling irreducible loops: optimized node splitting versus DJ-graphs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Handling Irreducible Loops: Optimized Node Splitting vs. DJ-Graphs
Euro-Par '01 Proceedings of the 7th International Euro-Par Conference Manchester on Parallel Processing
Using Hammock Graphs to Structure Programs
IEEE Transactions on Software Engineering
Time optimal software pipelining of loops with control flows
International Journal of Parallel Programming
FM '09 Proceedings of the 2nd World Congress on Formal Methods
Advanced symbolic analysis for compilers: new techniques and algorithms for symbolic program analysis and optimization
Formal Methods in System Design
A non-iterative data-flow algorithm for computing liveness sets in strict SSA programs
APLAS'11 Proceedings of the 9th Asian conference on Programming Languages and Systems
CGO '11 Proceedings of the 9th Annual IEEE/ACM International Symposium on Code Generation and Optimization
A study of irreducibility in C programs
Software—Practice & Experience
Optimized inlining of runtime monitors
NordSec'11 Proceedings of the 16th Nordic conference on Information Security Technology for Applications
Proceedings of Annual IEEE/ACM International Symposium on Code Generation and Optimization
Simple analysis of partial worst-case execution paths on general control flow graphs
Proceedings of the Eleventh ACM International Conference on Embedded Software
Recovering memory access patterns of executable programs
Science of Computer Programming
Hi-index | 0.00 |
Several compiler optimizations, such as data flow analysis, the exploitation of instruction-level parallelism (ILP), loop transformations, and memory disambiguation, require programs with reducible control flow graphs. However, not all programs satisfy this property. A new method for transforming irreducible control flow graphs to reducible control flow graphs, called Controlled Node Splitting (CNS), is presented. CNS duplicates nodes of the control flow graph to obtain reducible control flow graphs. CNS results in a minimum number of splits and a minimum number of duplicates. Since the computation time to find the optimal split sequence is large, a heuristic has been developed. The results of this heuristic are close to the optimum. Straightforward application of node splitting resulted in an average code size increase of 235% per procedure of our benchmark programs. CNS with the heuristic limits this increase to only 3%. The impact on the total code size of the complete programs is 13.6% for a straightforward application of node splitting. However, when CNS is used, with the heuristic the average growth in code size of a complete program dramatically reduces to 0.2%