Skip to content
LLVM
EntityQ223490· pop 32· linked from 322 articles

Also known as Low Level Virtual Machine, LLVM Project

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. 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. The name LLVM originally stood for Low Level Virtual Machine. However, the project has since expanded, and the name is no longer an acronym but an orphan initialism.

Key facts

Software.name
LLVM
Software.logo
LLVM logo.png
Software.logo caption
The LLVM logo, a stylized wyvern
Software.developer
LLVM Developer Group
Software.programming language
C++
Software.operating system
Cross-platform
Software.genre
Compiler
Software.license
Apache License 2.0 with LLVM Exceptions (v9.0.0 or later) Legacy license: UIUC (BSD-style)

via Wikipedia infobox

Source code

This repository contains the source code for LLVM, a toolkit for the construction of highly optimized compilers, optimizers, and run-time environments. The LLVM project has multiple components. The core of the project is itself called "LLVM". This contains all of the tools, libraries, and header files needed to process intermediate representations and convert them into object files. Tools include an assembler, disassembler, bitcode analyzer, and bitcode optimizer. C-like languages use the Clang frontend. This component compiles C, C++, Objective-C, and Objective-C++ code into LLVM bitcode -- and from there into object files, using LLVM. Other components include: the libc++ C++ standard library, the LLD linker, and more. Consult the Getting Started with LLVM page for information on building and running LLVM. Join the LLVM Discourse forums, Discord chat, LLVM Office Hours or Regular sync-ups. The LLVM project has adopted a code of conduct for participants to all modes of communication within the project.

Excerpt from the source-code README · 2,242 chars · not written by Vinony

Wikidata facts

Official website
llvm.org
Show 8 more facts
software version identifier
22.1.4
social media followers
15100
inception
2003-10-24
source code repository URL
github.com/llvm/llvm-project
Commons category
LLVM
official forum URL
discourse.llvm.org
IRC channel URL
irc://irc.oftc.net/llvm
official blog URL
blog.llvm.org
Sources (7)

via Wikidata · CC0

~15 min read

Article

16 sections
Contents
  • History
  • Features
  • Components
  • Frontends
  • Intermediate representation
  • Backends
  • Linker
  • C++ Standard Library
  • Polly
  • Debugger
  • C Standard Library
  • Derivatives
  • See also
  • References
  • Further reading
  • External links

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. 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. The name LLVM originally stood for Low Level Virtual Machine. However, the project has since expanded, and the name is no longer an acronym but an orphan initialism.

LLVM is written in C++ and is designed for compile-time, link-time, and runtime optimization. Originally implemented for C and C++, the language-agnostic design of LLVM has since spawned a wide variety of frontends: 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# for .NET, Common Lisp, Crystal, CUDA, D, Delphi, Dylan, Forth, Fortran, FreeBASIC, Free Pascal, Halide, Haskell, Idris, Jai (only for optimized release builds), Java bytecode, Julia, Kotlin, LabVIEW's G language, Objective-C, OpenCL, Odin, PicoLisp, PostgreSQL's SQL and PL/pgSQL, Ruby, Rust, Scala, Standard ML, Swift, Wolfram Language, Xojo, and Zig.

Gallery (2)

Connections

Categories