\section{Assignment}
During my internship, my assignment has been to improve the MontiumC compiler frontend. In
particular, instead of using the complete frontend supplied by the LLVM project
unmodified, a local version was to be created with a number of Montium-specific
changes and transformations.

The original assignment defined a few subtasks:
\begin{enumerate}
  \item Evaluating and selecting existing transformation passes.
  \item Adding new transformations for Montium specific problems.
  \item Providing debugging (context) information to the backend to improve
  backend error reporting.
\end{enumerate}

Of the above tasks, the first two tasks have been mostly completed, while the
last task has produced workable results but still requires some architectural
changes to LLVM to work fully (see section \ref{PreserveDebug}). Apart from
these tasks, a number of other tasks have presented themselves during the
internship. These are also discussed in the next section.
