Capitalize Clang.
[matthijs/projects/internship.git] / Report / Main / Context / LLVM.tex
index 0f913961572b01ff160a0a543fd5cd94a9c29cd7..0ba81fbd9bd9da60bcf49520df0a92efd4c5720f 100644 (file)
@@ -1,9 +1,10 @@
 \section{Low Level Virtual Machine}
+\label{LLVM}
 The Low Level Virtual Machine project (LLVM, \cite{LLVM}, \cite{Lattner:MSThesis02})
 is a framework for compiler construction. It provides its own intermediate
 representation, the LLVM IR. This is a simple language that can be used to
-expres any program in a static single assignment (SSA) form that is easy to
-reason with and transform.
+express any program in a static single assignment (SSA) form that is easy to
+reason with and apply transformations to.
 
 Additionally, LLVM provides a host of libraries to work with this IR. There is
 code for:
@@ -15,6 +16,11 @@ code for:
 \end{itemize}
 
 In addition, the LLVM project provides two frontends for generating LLVM IR:
-llvm-gcc, which uses gcc to compile a lot of languages with a LLVM backend (from
-the gcc point of view) and clang, which is a completely new project designed to
+llvm-gcc, which uses gcc to compile a lot of languages with an LLVM backend (from
+the gcc point of view) and Clang, which is a completely new project designed to
 parse and emit LLVM IR for all c-like languages (C, ObjC, C++).
+
+From the LLVM project, we use a number of parts. In section \ref{MontiumC}, we
+saw that Clang frontend is used directly in the Montium frontend. Also, a lot of
+transformations from the LLVM project are used. Lastly, a number of small
+library functions and components are used in the frontend.