Compile‐time copy elimination
- 1 November 1993
- journal article
- Published by Wiley in Software: Practice and Experience
- Vol. 23 (11) , 1175-1200
- https://doi.org/10.1002/spe.4380231102
Abstract
Single‐assignment and functional languages have value semantics that do not permit side‐effects. This lack of side‐effects makes automatic detection of parallelism and optimization for data locality in programs much easier. However, the same property poses a challenge in implementing these languages efficiently. This paper describes an optimizing compiler system that solves the key problem of aggregate copy elimination. The methods developed rely exclusively on compile‐time algorithms, including interprocedural analysis, that are applied to an intermediate data flow representation. By dividing the problem into update‐in‐place and build‐in‐place analysis, a small set of relatively simple techniques—edge substitution, graph pattern matching, substructure sharing and substructure targeting—was found to be very powerful. If combined properly and implemented carefully, the algorithms eliminate unnecessary copy operations to a very high degree. No run‐time overhead is imposed on the compiled programs.Keywords
This publication has 7 references indexed in Scilit:
- Retire Fortran?Communications of the ACM, 1992
- High-performance logic programming with the Aquarius Prolog compilerComputer, 1992
- Efficiently computing static single assignment form and the control dependence graphACM Transactions on Programming Languages and Systems, 1991
- A simple and efficient implmentation approach for single assignment languagesPublished by Association for Computing Machinery (ACM) ,1988
- Advanced compiler optimizations for supercomputersCommunications of the ACM, 1986
- The aggregate update problem in functional programming systemsPublished by Association for Computing Machinery (ACM) ,1985
- Can programming be liberated from the von Neumann style?Communications of the ACM, 1978