Because it is a research compiler, SUIF is designed to be both flexible
and extensible. Annotations, which may contain arbitrary data
structures, are the primary means of providing this extensibility.
Objects that are derived from the suif_object
class have lists of
annotations associated with them. This includes most of the major SUIF
objects such as instructions, tree nodes, symbols, types, symbol tables,
and file set entries. New annotations can be declared by any program
and used to record whatever information is needed within that program.
They can also be written to the SUIF output files so that other programs
can use them. The annotation manager records the annotation names
and the format of the data associated with each kind of annotation.
immed
values.