An efficient augmented-context-free parsing algorithm
Computational Linguistics
Efficiently computing static single assignment form and the control dependence graph
ACM Transactions on Programming Languages and Systems (TOPLAS)
Compiling with continuations
PLDI '92 Proceedings of the ACM SIGPLAN 1992 conference on Programming language design and implementation
Let-floating: moving bindings to give faster programs
Proceedings of the first ACM SIGPLAN international conference on Functional programming
ACM SIGPLAN Notices
Advanced compiler design and implementation
Advanced compiler design and implementation
Static analysis for a software transformation tool
Static analysis for a software transformation tool
Building program optimizers with rewriting strategies
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
A transformation-based optimiser for Haskell
Science of Computer Programming - Special issue on the 6th European symposium on programming
Code Generation for a One-Register Machine
Journal of the ACM (JACM)
Global optimization by suppression of partial redundancies
Communications of the ACM
Computer
Incremental Development of a High Integrity Compiler: Experience from an Industrial Development
HASE '98 The 3rd IEEE International Symposium on High-Assurance Systems Engineering
Typed Combinators for Generic Traversal
PADL '02 Proceedings of the 4th International Symposium on Practical Aspects of Declarative Languages
Steering Clear of Triples: Deriving the Control Flow Graph Directly from the Abstract Syntax Tree in C Programs
Shrinking lambda expressions in linear time
Journal of Functional Programming
Compiler Optimization Correctness by Temporal Logic
Higher-Order and Symbolic Computation
The transient combinator, higher-order strategies, and the distributed data problem
Science of Computer Programming - Special issue on program transformation
Compilers: Principles, Techniques, and Tools (2nd Edition)
Compilers: Principles, Techniques, and Tools (2nd Edition)
Electronic Notes in Theoretical Computer Science (ENTCS)
Engineering A Compiler
Tom: piggybacking rewriting on java
RTA'07 Proceedings of the 18th international conference on Term rewriting and applications
The SSP: an example of high-assurance systems engineering
HASE'04 Proceedings of the Eighth IEEE international conference on High assurance systems engineering
Program transformation using HATS 1.84
GTTSE'05 Proceedings of the 2005 international conference on Generative and Transformational Techniques in Software Engineering
Hi-index | 0.00 |
Optimizing compilers often perform an operation known as common subexpression elimination to improve code efficiency. Typically this is accomplished either by pruning a directed acyclic graph to replace eliminated subexpressions by memory fetches of stored values or by using partial-redundancy elimination, a data-flow analysis method. In this paper a higher-order strategic method is presented that rewrites expression trees to eliminate common subexpressions using equivalences in the lambda calculus. This approach offers several advantages-it is intuitive, transformations can be defined and applied within a high-level rewrite system, and it uses transformations for which correctness preservation can be proven.