The SUIF Programs and Passes Guide

The SUIF compiler infrastructure is designed to be modular so as to facilitate research in compilers. Users can easily create new passes or combine different passes together to build a complete compiler. The current SUIF system consists of a number of predefined standalone programs for generating and manipulating the SUIF representations. In particular, the user can use the suifdriver, one of the standalone programs, to run one or more compiler passes that translate a SUIF representation to another. The system currently includes a set of passes that are mostly simple transforms to dismantle high-level constructs and utilities for checking and cleaning up the representation.

Table of contents


Setup

Before executing any of these programs , the user MUST set up some environment variables. This can be done in the csh or tcsh shells with:
source $(NCIHOME)/suif_setup.csh
In sh or bash shells use:
. $(NCIHOME)/suif_setup.sh

Standalone Programs

These are a collection of self-contained programs found in the "bin" subdirectory.

SUIF Libraries

These are libraries found in the "solib" subdirectory. These libraries can be imported into the suifdriver. A module defined in a library can define a set of IR nodes, or it can define a set of passes. In the suifdriver is a SUIF environment (SuifEnv) to which the user can import new libraries and load new SUIF files. The commands, when invoked, typically apply to the current IR file that is loaded into the Suif environment.


Modules with Intermediate Representation Nodes


Modules with Compiler Passes