Search code examples
gccllvm

What exactly is LLVM?


I keep hearing about LLVM all the time. It's in Perl, then it's in Haskell, then someone uses it in some other language? What is it?

  • What exactly distinguishes it from GCC (perspectives = safety etc.)?

Solution

  • LLVM is a library that is used to construct, optimize and produce intermediate and/or binary machine code.

    LLVM can be used as a compiler framework, where you provide the "front-end" (parser and lexer) and the "back-end" (code that converts LLVM's representation to actual machine code).

    LLVM can also act as a JIT compiler – it has support for x86/x86_64 and PPC/PPC64 assembly generation with fast code optimizations aimed for compilation speed.

    Unfortunately disabled since 2013, there was the ability to play with LLVM's machine code generated from C or C++ code at the demo page.