Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] View of /sml/trunk/src/MLRISC/Doc/latex/annotations.tex
ViewVC logotype

View of /sml/trunk/src/MLRISC/Doc/latex/annotations.tex

Parent Directory Parent Directory | Revision Log Revision Log


Revision 651 - (download) (as text) (annotate)
Thu Jun 1 18:34:03 2000 UTC (19 years, 1 month ago) by monnier
File size: 1448 byte(s)
bring revisions from the vendor branch to the trunk
\section{Annotations}

\subsection{Overview}
A compiler front-end has to be propagate information to
the back-end.  An optimization phase may have to leave behind information
at various places of the IR so that other phases can reuse such information.
MLRISC uses the \newdef{annotations}
mechanism for these functions.  
Individual instructions, basic blocks, and flow graph edges, 
can be attached one or more annotations.  

The basic MLRISC system understands many annotations.  Some examples are:
\begin{description}
   \item[COMMENT] 
         these can be used to attach comments.  If attached to
         an instruction, the assemblers will output 
         them as part of their assembly output.
   \item[BRANCH\_PROB]
          these can be attached to a branch instruction to indicate
          the probability in which is it taken.
   \item[EXECUTION\_FREQ]
          these can be attached to a basic block to indicate 
          its expected execution frequency 
\end{description}

\subsection{Details}
The primitive annotations datatype is defined
to have this \mlrischref{library/annotations.sig}{signature}.
In addition, MLRISC predefined a few primitive annotations that are
recognized by the core system.  This signature is
\mlrischref{instructions/mlriscAnnotations.sig}{MLRISC\_ANNOTATIONS}.
More detailed documentation can be found in this 
\href{http://cm.bell-labs.com/cm/cs/what/smlnj/compiler-notes/annotations.ps}{paper}.

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0