LLVM (Low Level Virtual Machine) is a set of compiler tools. We use LLVM to create a front-end to the LLVM IR for any given programming language, and a back-end for any given instruction set architecture. The LLVM IR is language/architecture agnostic, and serves primarily as a way to optimise a common IR for all front/back-ends.

Prof Anderson says GCC and G++ are out of fashion in academia — HLS tools like LegUp are written in LLVM.

https://releases.llvm.org/2.6/docs/tutorial/JITTutorial2.html https://arongranberg.com/temp/llvm-diff/LangImpl07.html