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
Introduction to algorithms
The value flow graph: a program representation for optimal program transformations
Proceedings of the third European symposium on programming on ESOP '90
Efficient code motion and an adaption to strength reduction
TAPSOFT '91 Proceedings of the international joint conference on theory and practice of software development on Advances in distributed computing (ADC) and colloquium on combining paradigms for software development (CCPSD): Vol. 2
Efficiently computing static single assignment form and the control dependence graph
ACM Transactions on Programming Languages and Systems (TOPLAS)
IMPACT: an architectural framework for multiple-instruction-issue processors
ISCA '91 Proceedings of the 18th annual international symposium on Computer architecture
How to analyze large programs efficiently and informatively
PLDI '92 Proceedings of the ACM SIGPLAN 1992 conference on Programming language design and implementation
PLDI '92 Proceedings of the ACM SIGPLAN 1992 conference on Programming language design and implementation
A variation of Knoop, Rüthing, and Steffen's Lazy Code Motion
ACM SIGPLAN Notices
Effective partial redundancy elimination
PLDI '94 Proceedings of the ACM SIGPLAN 1994 conference on Programming language design and implementation
Optimal code motion: theory and practice
ACM Transactions on Programming Languages and Systems (TOPLAS)
Global code motion/global value numbering
PLDI '95 Proceedings of the ACM SIGPLAN 1995 conference on Programming language design and implementation
Practical adaption of the global optimization algorithm of Morel and Renvoise
ACM Transactions on Programming Languages and Systems (TOPLAS)
Complete removal of redundant expressions
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
Register promotion by sparse partial redundancy elimination of loads and stores
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
Advanced compiler design and implementation
Advanced compiler design and implementation
Building an optimizing compiler
Building an optimizing compiler
ACM Transactions on Programming Languages and Systems (TOPLAS)
Experimental study of minimum cut algorithms
SODA '97 Proceedings of the eighth annual ACM-SIAM symposium on Discrete algorithms
Partial redundancy elimination in SSA form
ACM Transactions on Programming Languages and Systems (TOPLAS)
Proceedings of the 27th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Global optimization by suppression of partial redundancies
Communications of the ACM
Partial redundancy elimination for access path expressions
Software—Practice & Experience - Special issue on aliasing in object-oriented systems
Distribution Assignment Placement: Effective Optimization of Redistribution Costs
IEEE Transactions on Parallel and Distributed Systems
Compiler optimization of scalar value communication between speculative threads
Proceedings of the 10th international conference on Architectural support for programming languages and operating systems
SAS '96 Proceedings of the Third International Symposium on Static Analysis
Partial Redundancy Elimination on Predicated Code
SAS '00 Proceedings of the 7th International Symposium on Static Analysis
CC '98 Proceedings of the 7th International Conference on Compiler Construction
Optimal and efficient speculation-based partial redundancy elimination
Proceedings of the international symposium on Code generation and optimization: feedback-directed and runtime optimization
A compiler framework for speculative analysis and optimizations
PLDI '03 Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation
Path Profile Guided Partial Redundancy Elimination Using Speculation
ICCL '98 Proceedings of the 1998 International Conference on Computer Languages
Partial Redundancy Elimination Driven by a Cost-Benefit Analysis
ICCSSE '97 Proceedings of the 8th Israeli Conference on Computer-Based Systems and Software Engineering
A portable machine-independent global optimizer--design and measurements
A portable machine-independent global optimizer--design and measurements
Value-driven redundancy elimination
Value-driven redundancy elimination
Path-sensitive, value-flow optimizations of programs (program analysis)
Path-sensitive, value-flow optimizations of programs (program analysis)
Min-cut program decomposition for thread-level speculation
Proceedings of the ACM SIGPLAN 2004 conference on Programming language design and implementation
Optimizing for space and time usage with speculative partial redundancy elimination
Proceedings of the 2004 ACM SIGPLAN/SIGBED conference on Languages, compilers, and tools for embedded systems
Link-Time Path-Sensitive Memory Redundancy Elimination
HPCA '04 Proceedings of the 10th International Symposium on High Performance Computer Architecture
Optimal interprocedural program optimization: a new framework and its application
Optimal interprocedural program optimization: a new framework and its application
Fault-safe code motion for type-safe languages
Proceedings of the 6th annual IEEE/ACM international symposium on Code generation and optimization
An SSA-based algorithm for optimal speculative code motion under an execution profile
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
Fast profile-based partial redundancy elimination
JMLC'06 Proceedings of the 7th joint conference on Modular Programming Languages
The hot path SSA form: extending the static single assignment form for speculative optimizations
CC'10/ETAPS'10 Proceedings of the 19th joint European conference on Theory and Practice of Software, international conference on Compiler Construction
Minimizing code size via page selection optimization on partitioned memory architectures
Proceedings of the 2013 International Conference on Compilers, Architectures and Synthesis for Embedded Systems
Hi-index | 0.00 |
A lifetime optimal algorithm, called MC-PRE, is presented for the first time that performs speculative PRE based on edge profiles. In addition to being computationally optimal in the sense that the total number of dynamic computations for an expression in the transformed code is minimized, MC-PRE is also lifetime optimal since the lifetimes of introduced temporaries are also minimized. The key in achieving lifetime optimality lies not only in finding a unique minimum cut on a transformed graph of a given CFG, but also in performing a data-flow analysis directly on the CFG to avoid making unnecessary code insertions and deletions. The lifetime optimal results are rigorously proved. We evaluate our algorithm in GCC against three previously published PRE algorithms, namely, MC-PREcopt (Qiong and Xue's computationally optimal version of MC-PRE), LCM (Knoop, Rüthing, and Steffen's lifetime optimal algorithm for performing nonspeculative classic PRE), and CMP-PRE (Bodik, Gupta, and Soffa's PRE algorithm based on code-motion preventing (CMP) regions, which is speculative but not computationally optimal). We report and analyze our experimental results, obtained from both actual program execution and instrumentation, for all 22 C, C++ and FORTRAN 77 benchmarks from SPECcpu2000 on an Itanium 2 computer system. Our results show that MC-PRE (or MC-PREcopt) is capable of eliminating more partial redundancies than both LCM and CMP-PRE (especially in functions with complex control flow), and, in addition, MC-PRE inserts temporaries with shorter lifetimes than MC-PREcopt. Each of both benefits has contributed to the performance improvements in benchmark programs at the costs of only small compile-time and code-size increases in some benchmarks.