Procedure bodies are represented using a language-independent form of abstract syntax trees (ASTs). In high-SUIF code, the trees contain nodes corresponding to the high-level control structures in the source program. When the code is expanded to the low-SUIF form, these high-level constructs are replaced and the trees degenerate to lists of instructions.
SUIF is not restricted to handling programs with structured control flow. Even in high-SUIF code, low-level branch and jump instructions may be used to represent unstructured control flow. However, since most high-level transformations are only applied to structured code, the high-level AST nodes are only used for structured code. This makes it easy to identify and optimize regions of code with structured control flow.
The files `trees.h' and `trees.cc' contain the code for tree nodes and tree node lists.