LLVM | llvm
CompilerbackendformultipleprogramminglanguagesLLVMisasetofcompilerandtoolchaintechnologies[4]thatcanbeusedtodevelopafrontendforanyprogramminglanguageandabackendforanyinstructionsetarchitecture.LLVMisdesignedaroundalanguage-independentintermediaterepresentation(IR)thatservesasaportable,high-levelassemblylanguagethatcanbeoptimizedwithavarietyoftransformationsovermultiplepasses.[5]LLVMiswritteninC++andisdesignedforcompile-time,link-time,run-time,and"idle-time"optimization.Originallyimplementedf...
Compiler backend for multiple programming languages
LLVM is a set of compiler and toolchain technologies[4] that can be used to develop a front end for any programming language and a back end for any instruction set architecture. 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.[5]
LLVM is written in C++ and is designed for compile-time, link-time, run-time, and "idle-time" optimization. Originally implemented for C and C++, the language-agnostic design of LLVM has since spawned a wide variety of front ends: languages with compilers that use LLVM (or which do not directly use LLVM but can generate compiled programs as LLVM IR) include ActionScript, Ada, C#,[6][7][8]Common Lisp, PicoLisp, Crystal, CUDA, D, Delphi, Dylan, Forth,[9]Fortran, Free Basic, Free Pascal, Graphical G,[10]Halide, Haskell, Java bytecode,...