phase coupling and constant generation in an optimizing microcode compiler
The designer of an optimizing compiler must concern himself with the order in which optimization phases are performed; a pair of phases may be interdependent in the sense that each phase could benefit from information produced by the other. In a compiler for a horizontal target architecture, one such phase-ordering problem occurs between code-generation and compaction . Presented here is an overview of a research effort at Carnegie-Mellon University which has examined solutions to this problem. One aspect of the code generation problem-that of generating constants intelligently-is discussed in detail. A technique, called constant-unfolding , is described that can be used to produce code sequences that generate constants in unusual ways during execution; such code sequences can lead to more compact code when the literal field of the microinstruction is a bottleneck.
couples generation optimality compilation design optimizing compiler order informal architecture code compact research aspect code generation sequence