Go to the previous, next section.

Other Data

SUIF is designed to be extended with new kinds of analyses and optimizations. These future extensions will generally require that additional information be attached to SUIF objects and propagated between passes. For example, one pass may analyze the SUIF code and produce information about data dependences. That information must be saved in the SUIF files so that it can be used by other passes. Because many different kinds of information may need to be stored, the SUIF library cannot predefine specific fields for future extensions. Instead, it provides annotations which allow user-defined data structures to be attached to most SUIF objects. See section Annotations. This is the primary mechanism for making SUIF easily extensible.

Several different kinds of annotations are available. They all include a name field that identifies the kind of data in the annotation. Besides the name, each annotation has some sort of data. A structured annotation contains data in a user-defined data structure, whereas a flat annotation consists of a list of immediate values. The names of structured and flat annotations are registered with the annotation manager. See section Annotation Manager. The manager records information about each kind of annotation, such as whether they are flat or structured and whether they should be written to the output files.

Annotations can also be used without registering them with the manager. To be able to write annotations to output files, SUIF must be able to represent them as lists of immediate values (1). Because unregistered annotations are not written to the output files, they may contain arbitrary data structures. Obviously, they can only be used internally within one pass.

Go to the previous, next section.