Go to the first, previous, next, last section, table of contents.


An Overview of SUIF

The SUIF compiler system is a flexible framework for advanced compiler research. The primary design goal for this compiler is that it be easy to use and build upon, without sacrificing its ability to compile real-world benchmark programs. Compared to other publicly-available compilers, SUIF may be somewhat inefficient and less robust, but it is much easier to modify and extend. This makes it an ideal platform for evaluating new compiler techniques.

The SUIF system is organized as a set of compiler passes built on top of a kernel that defines the intermediate format. The passes are implemented as separate programs that link with the kernel contained in the SUIF library. Each pass typically performs a single analysis or transformation and then writes the results out to a file. This is inefficient but flexible. SUIF files always use the same output format so that passes can be reordered simply by running the programs in a different order. New passes can be freely inserted at any point in a compilation.

The SUIF library provides an object-oriented implementation of the SUIF intermediate format. It is written in C++. The library defines classes to represent all the various elements of the intermediate format and to perform some common operations on them. It also contains the code to read and write the binary files that hold the SUIF code between passes of the compiler.

This document is a reference manual for the SUIF library. This first chapter provides an overview of the SUIF intermediate representation. Like many other complex data structures, this representation is roughly organized in a hierarchy. Objects near the top of the hierarchy contain the lower-level objects. The various elements of SUIF are described here starting from the top of the hierarchy and working down.


Go to the first, previous, next, last section, table of contents.