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: 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.




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.)