\section{Regions}
\subsubsection{Overview}

The MLRISC system uses user defined type called
\newdef{regions} to propagate
aliasing information to the backend. This type is
abstract and no constraint is imposed on how it is implemented.
The advantage of this is that the client can optimize the representation
of the region information according to the semantics of the source language.
The downside of this freedom is that the client has to implement
various modules to extract information from the regions datatype
required by various optimization phases.

For clients that do not want to implement their own regions datatype,
there is now a new generic mechanism, called 
\newdef{MLRiscRegions}, built on top of
the regions concept, for propagating both:
\begin{itemize}
  \item Aliasing information, and
  \item Control dependence/anti-control dependence information
\end{itemize}
Both kinds of information are crucial for extracting parallelism
from the target code, and are used in all optimizations that perform code
motion, such as SSA optimizations and all scheduling optimizations. 

\subsubsection{MLRisc Regions}
