Pattern-Based Languages for Prototyping of Compiler Optimizers

  • Authors:
  • Charles D Farnum

  • Affiliations:
  • -

  • Venue:
  • Pattern-Based Languages for Prototyping of Compiler Optimizers
  • Year:
  • 1990

Quantified Score

Hi-index 0.00

Visualization

Abstract

Choosing an appropriate set of optimizations for a particular compiler is a black art; the literature abounds with unimplemented optimization algorithms. This dissertation describes the core tools used in Dora, an environment for exploring the design space of optimizing compilers. Dora uses a lambda-calculus based intermediate language schema to represent programs at both high and low levels. Operations that are appropriate to a particular language, machine, and/or code-level are defined as necessary for a particular compiler using a description language that allows the implementor to state the important properties of the operator with regard to optimization. "Machine independent" optimizations, such as moving code out of loops, are written to interrogate this information, enabling a single specification to be applicable to code at many levels for many source languages and target machines. The language schema and description languages provide the possibility of writing optimizations in a context-independent manner, but the environment must also give special support to ease this writing. Dora includes attribution and transformation languages based on pattern matching. The pattern language is grounded in the efficient ansomata-driven traditions, but with important extensions for natural handling of variability operators and repetitive vertical constructs such as left-associated addition trees. The attribute system uses the pattern-matching system so gains the descriptive advantages of an attribute grammar system easy access to local contest and a declarative functional specification, without inheriting the difficulties of a monolithic specification factored by an often irrelevant abstract syntax. The transformation language uses the pattern matching system for local context while relying on the attribute system for global analysis. Dora has been used to implement a functional prototype of Frederick Chow''s optimizer OPI. The example prototype demonstrates the support Dora provides for building actual optimizers. It also makes possible previously infeasible experiments, such as rendering the optimizations, adding OL bitvertar-based optimizations to the suite and applying OPI languages in the LISP tradition.