Score: A Compiler Intermediate Representation
The intermediate representation (IR) is a core component of a compiler
and strongly reflects the compiler's software architecture. Our IR is
called Score and is specifically designed to support heterogeneity and
thus meets the following four requirements:
- it permits arbitrary orderings of transformations,
- it represents diverse architectural features,
- it encourages reuse of transformations and IR nodes for diverse architectures, and
- it facilitates extension to cover new architectural features.
To achieve these goals, Score permits the arbitrary ordering of
transformations by using a new bi-level representation for important
program constructs. The bi-level representation preserves both a
high- and low-level view of the program, and hence does not constrain
the ordering of transformations. Score also facilitates extension and
encourages reuse by explicitly representing node properties. This
software engineering technique separates the description of
transformations from the identification of IR nodes over which they
operate. Consequently, the application of a transformation to
different nodes does not impact the transformation itself. Finally,
Score accommodates diverse architectural features by including a broad
range of nodes and relying on extension to handle additional
architectural features.
Participants
Papers
Acknowledgements
This work is supported by grants from
Digital Equipment, NSF grant EIA-9726401, and an NSF Infrastructure
grant CDA-9502639. Kathryn S. McKinley is supported by an NSF CAREER
Award CCR-9624209. Any opinions, findings, and conclusions or
recommendations expressed in this material are those of the author(s)
and do not necessarily reflect the views of the sponsors.
Return to ALI home page.
(Last changed: May 26, 1998.)