2 Now we've seen the challenges encountered during the internship, what results
3 were actually achieved?
5 \subsection{LLVM improvements}
6 During the entire internship, both small and big improvements have been made to
7 the LLVM codebase. Most of these changes are directly useful for the MontiumC
8 compiler, some only indirectly. Examples of these improvements include better
9 support for struct types, better documentation of the testing framework and a
10 lot of small fixes and changes to make LLVM more flexible and extendable.
12 \subsection{MontiumC improvements}
13 Improvements made to the MontiumC language are mostly limited to making the
14 langauge better specified. Things which had limited support now either have full
15 support, or were removed from the language.
17 Usage of global variables, struct variables, arguments and returns values and
18 constant arguments is now possible in most cases, where it only was possible in
19 some specific cases before.
21 Additionally, there has been some experimenting with new MontiumC features, such
22 as C style memory access and loops. So far, these features have not received
23 enough work in both the frontend as the backend to be supported in the language
26 \subsection{Frontend improvements}
27 The MontiumC frontend has seen a lot of improvements.
29 Part of these improvements are to make the language more stable. This was mostly
30 done by completely reviewing the set of LLVM transformation passes and selecting
31 a subset that fits the MontiumC language. Addtionally, some transformation
32 passes were added, which also make the backend simpler (for example,
33 reducing variable lifetimes, global variable removal, function specialization).
35 Other improvements cause the frontend to become more usable as a program. These
36 include improved error handling, extra configurability through commandline
37 options and support for linking multiple files together.