LLVM is written in C++ and is designed for compile-time, link-time, runtime, and 'idle-time' optimization. The name LLVM originally stood for Low Level Virtual Machine, though the project has expanded and the name is no longer officially an initialism.
LLVM is designed around a language-independent intermediate representation (IR) that serves as a portable, high-level assembly language that can be optimized with a variety of transformations over multiple passes. LLVM is a set of compiler and toolchain technologies that can be used to develop a frontend for any programming language and a backend for any instruction set architecture.
Apache License 2.0 with LLVM Exceptions (v9.0.0 or later)