Replacing C back-end with LLVM =============================== This is an intensely challenging project, far more so than either the parser replacement or the C-to-x86_64 project; in recognition of that, if you completely succeed with this project (all test programs compile and run correctly), I will give you 10 additional extra credit points on your final grade. The requirement here is to replace the C back-end of the compiler with an LLVM 3.8 back-end. You don't have to change anything in the parser or the lexer, but you will have to: 0) Do a local install of LLVM of 4.0/4.0.1, or 5.0. 1) Rewrite the compiler/emit.c code so that it emits only LLVM. I would suggest directly emitting native LLVM intermediate representation since you would have to master less material. (But seeing as you are willing to take on this very challenging project, perhaps this appeals to you.) 2) Rewrite the runtime/* so that it is completely in LLVM. The most interesting issue is probably again memory allocation. 3) Change the test environment so that it compiles with your new code (in particular, you will no longer need a valgrind in the Makefile, and you will probably have to make other changes.).