The Concept of a Supercompiler

240Citations
Citations of this article
34Readers
Mendeley users who have this article in their library.

Abstract

A supercompiler is a program transformer of a certain type. It traces the possible generalized histories of computation by the original program, and compiles an equivalent program, reducing in the process the redundancy that could be present in the original program. The nature of the redundancy that can be eliminated by supercompilation may be various, e.g., some variables might have predefined values (as in partial evaluation), or the structure of control transfer could be made more efficient (as in lazy evaluation), or it could simply be the fact that the same variable is used more than once. The general principles of supercompilation are described and compared with the usual approach to program transformation as a stepwise application of a number of equivalence rules. It is argued that the language Refal serves the needs of supercompilation best. Refal is formally defined and compared with Prolog and other languages. Examples are given of the operation of a Refal supercompiler implemented at CCNY on an IBM/370. © 1986, ACM. All rights reserved.

Cite

CITATION STYLE

APA

Turchin, V. F. (1986). The Concept of a Supercompiler. ACM Transactions on Programming Languages and Systems (TOPLAS), 8(3), 292–325. https://doi.org/10.1145/5956.5957

Register to see more suggestions

Mendeley helps you to discover research relevant for your work.

Already have an account?

Save time finding and organizing research with Mendeley

Sign up for free