For those who haven't explored LLVM, it's an incredibly powerful technology and rather approachable for getting started with.<p>A few of my favorite LLVM discoveries:<p>- If you want to build Clang (LLVM C/C++ Compiler), it's really simple to pull down and build with little external development tooling (only a compiler and CMake). Shown here [0].<p>- You can pull LLVM/Clang master and use that for a "bleeding-edge" toolchain with a high degree of stability. [0].<p>- Clang is used to compile Chromium and Firefox on all platforms. Both have seen great performance gains from Clang's link time optimization. [1] [2]<p>- Klee is built on LLVM infrastructure and is used for automatic generation of test cases. [3] See some of their papers for how powerful their results are.<p>- Clang can now produce ABI compatible binaries with MSVC and has support for the Visual Studio debugger. [4]<p>- Lots of interesting research projects leveraging LLVM [5]<p>[0] <a href="https://www.youtube.com/watch?v=uZI_Qla4pNA" rel="nofollow">https://www.youtube.com/watch?v=uZI_Qla4pNA</a><p>[1] <a href="http://blog.llvm.org/2018/03/clang-is-now-used-to-build-chrome-for.html" rel="nofollow">http://blog.llvm.org/2018/03/clang-is-now-used-to-build-chro...</a><p>[2] <a href="https://glandium.org/blog/?p=3888" rel="nofollow">https://glandium.org/blog/?p=3888</a><p>[3] <a href="https://klee.github.io" rel="nofollow">https://klee.github.io</a><p>[4] <a href="http://blog.llvm.org/2017/08/llvm-on-windows-now-supports-pdb-debug.html" rel="nofollow">http://blog.llvm.org/2017/08/llvm-on-windows-now-supports-pd...</a><p>[5] <a href="https://scholar.google.com/scholar?as_ylo=2017&q=LLVM&hl=en&as_sdt=0,33" rel="nofollow">https://scholar.google.com/scholar?as_ylo=2017&q=LLVM&hl=en&...</a>
LLVM is a great project. I'm writing a programming language based on it.<p>It is so much easier because: (1) it's easier than writing machine code translation and (2) it's also easier than translating your code to C which would be purely textual.<p>Nevertheless, it's difficult to learn for people coming from high-level languages, even for me, who knows C to some degree.<p>The documentation around IR is scarce.<p>Then, I've stumbled upon a trick where I can just write C code and compile to LLVM IR with Clang. With this trick, I can answer many questions on my own (e.g. how to implement if-else, how to call printf, how to make a dynamic-sized array.)