Summary
Low Level Virtual Machine (LLVM) is: 1. A compilation strategy designed to enable effective program optimization across the entire lifetime of a program. LLVM supports effective optimization at compile time, link-time (particularly interprocedural), run-time and offline (i.e., after software is installed), while remaining transparent to developers and maintaining compatibility with existing build scripts. 2. A virtual instruction set - LLVM is a low-level object code representation that uses simple RISC-like instructions, but provides rich, language-independent, type information and dataflow (SSA) information about operands. This combination enables sophisticated transformations on object code, while remaining light-weight enough to be attached to the executable. This combination is key to allowing link-time, run-time, and offline transformations. 3. A compiler infrastructure - LLVM is also a collection of source code that implements the language and compilation strategy. The primary components of the LLVM infrastructure are a GCC-based C and C++ front-end, a link-time optimization framework with a growing set of global and interprocedural analyses and transformations, static back-ends for many popular (and some obscure) architectures, a back-end which emits portable C code, and a Just-In-Time compilers for several architectures. 4. LLVM does not imply things that you would expect from a high-level virtual machine. It does not require garbage collection or run-time code generation (In fact, LLVM makes a great static compiler!). Note that optional LLVM components can be used to build high-level virtual machines and other systems that need these services.
Versions
v20.0.0.9999 :: 20/20.0.0.9999 :: gentoo
- Modified
- License
- Apache-2.0-with-LLVM-exceptions UoI-NCSA BSD public-domain rc
- USE flags
- binutils-plugin debug debuginfod doc exegesis libedit libffi test xml z3 zstd
v20.0.0_pre20250125 :: 20/20.0.0_pre20250125 :: gentoo
- Modified
- License
- Apache-2.0-with-LLVM-exceptions UoI-NCSA BSD public-domain rc
- USE flags
- binutils-plugin debug debuginfod doc exegesis libedit libffi test xml z3 zstd
v20.0.0_pre20250122 :: 20/20.0.0_pre20250122 :: gentoo
- Modified
- License
- Apache-2.0-with-LLVM-exceptions UoI-NCSA BSD public-domain rc
- USE flags
- binutils-plugin debug debuginfod doc exegesis libedit libffi test xml z3 zstd
v20.0.0_pre20250118 :: 20/20.0.0_pre20250118 :: gentoo
- Modified
- License
- Apache-2.0-with-LLVM-exceptions UoI-NCSA BSD public-domain rc
- USE flags
- binutils-plugin debug debuginfod doc exegesis libedit libffi test xml z3 zstd
v20.0.0_pre20250111 :: 20/20.0.0_pre20250111 :: gentoo
- Modified
- License
- Apache-2.0-with-LLVM-exceptions UoI-NCSA BSD public-domain rc
- USE flags
- binutils-plugin debug debuginfod doc exegesis libedit libffi test xml z3 zstd
v19.1.7 :: 19/19.1 :: gentoo
- Modified
- License
- Apache-2.0-with-LLVM-exceptions UoI-NCSA BSD public-domain rc
- Keywords
- ~amd64 ~amd64-linux ~arm ~arm64 ~arm64-macos ~loong ~mips ~ppc ~ppc-macos ~ppc64 ~riscv ~sparc ~x64-macos ~x86
- USE flags
- binutils-plugin debug debuginfod doc exegesis libedit libffi test verify-sig xml z3 zstd
v19.1.6 :: 19/19.1 :: gentoo
- Modified
- License
- Apache-2.0-with-LLVM-exceptions UoI-NCSA BSD public-domain rc
- Keywords
- ~amd64 ~amd64-linux ~arm ~arm64 ~arm64-macos ~loong ~mips ~ppc ~ppc-macos ~ppc64 ~riscv ~sparc ~x64-macos ~x86
- USE flags
- binutils-plugin debug debuginfod doc exegesis libedit libffi test verify-sig xml z3 zstd
v19.1.4 :: 19/19.1 :: gentoo
- Modified
- License
- Apache-2.0-with-LLVM-exceptions UoI-NCSA BSD public-domain rc
- Keywords
- amd64 arm arm64 ppc ppc64 sparc x86 ~amd64-linux ~arm64-macos ~loong ~mips ~ppc-macos ~riscv ~x64-macos
- USE flags
- binutils-plugin debug debuginfod doc exegesis libedit libffi test verify-sig xml z3 zstd
v18.1.8-r6 :: 18/18.1 :: gentoo
- Modified
- License
- Apache-2.0-with-LLVM-exceptions UoI-NCSA BSD public-domain rc
- Keywords
- amd64 arm arm64 ppc ppc64 sparc x86 ~amd64-linux ~arm64-macos ~loong ~mips ~ppc-macos ~riscv ~x64-macos
- USE flags
- binutils-plugin debug debuginfod doc exegesis libedit libffi ncurses test verify-sig xml z3 zstd
v17.0.6-r3 :: 17/17 :: gentoo
- Modified
- License
- Apache-2.0-with-LLVM-exceptions UoI-NCSA BSD public-domain rc
- Keywords
- amd64 arm arm64 ppc ppc64 sparc x86 ~amd64-linux ~arm64-macos ~loong ~ppc-macos ~riscv ~x64-macos
- USE flags
- binutils-plugin debug debuginfod doc exegesis libedit libffi ncurses test verify-sig xar xml z3 zstd
v16.0.6-r5 :: 16/16 :: gentoo
- Modified
- License
- Apache-2.0-with-LLVM-exceptions UoI-NCSA BSD public-domain rc
- Keywords
- amd64 arm arm64 ppc ppc64 sparc x86 ~amd64-linux ~arm64-macos ~loong ~ppc-macos ~riscv ~x64-macos
- USE flags
- binutils-plugin debug doc exegesis libedit libffi ncurses test verify-sig xar xml z3 zstd
v15.0.7-r7 :: 15/15 :: gentoo
- Modified
- License
- Apache-2.0-with-LLVM-exceptions UoI-NCSA BSD public-domain rc
- Keywords
- amd64 arm arm64 ppc ppc64 sparc x86 ~amd64-linux ~ppc-macos ~riscv ~x64-macos
- USE flags
- binutils-plugin debug doc exegesis libedit libffi ncurses test verify-sig xar xml z3 zstd
USE flags
General
- binutils-plugin
- Build the binutils plugin
- debug
- Enable extra debug codepaths, like asserts and extra output. If you want to get meaningful backtraces see https://wiki.gentoo.org/wiki/Project:Quality_Assurance/Backtraces
- debug
- Enable extra debug codepaths, like asserts and extra output. If you want to get meaningful backtraces see https://wiki.gentoo.org/wiki/Project:Quality_Assurance/Backtraces
- debuginfod
- Install llvm-debuginfod (requires net-misc/curl and dev-cpp/cpp-httplib)
- doc
- Build and install the HTML documentation and regenerate the man pages
- exegesis
- Enable performance counter support for llvm-exegesis tool that can be used to measure host machine instruction characteristics
- libedit
- Use the libedit library (replacement for readline)
- libffi
- Enable support for Foreign Function Interface library
- ncurses
- Support querying terminal properties using ncurses' terminfo
- test
- Enable dependencies and/or preparations necessary to run tests (usually controlled by FEATURES=test but can be toggled independently)
- verify-sig
- Verify upstream signatures on distfiles
- xar
- Support dumping LLVM bitcode sections in Mach-O files (uses app-arch/xar)
- xml
- Add support for XML files
- z3
- Enable support for sci-mathematics/z3 constraint solver
- zstd
- Enable support for ZSTD compression
abi_mips
- n32
- 64-bit (32-bit pointer) libraries
- n64
- 64-bit libraries
- o32
- 32-bit libraries
abi_s390
- 32
- 32-bit (s390) libraries
- 64
- 64-bit (s390x) libraries
abi_x86
- 32
- 32-bit (x86) libraries
- 64
- 64-bit (amd64) libraries
- x32
- x32 ABI libraries
llvm_targets
- AArch64
- AArch64 CPU target (arm64 in Gentoo)
- AMDGPU
- AMDGPU target (supports R600 and GCN GPUs)
- ARC
- ARC (Argonaut RISC Core) embedded CPU target [EXPERIMENTAL]
- ARM
- ARM CPU target
- AVR
- 8-bit Atmel AVR microcontroller target
- BPF
- Berkeley Packet Filter target
- CSKY
- C-SKY CPU target [EXPERIMENTAL]
- DirectX
- DirectX target [EXPERIMENTAL]
- Hexagon
- Qualcomm Hexagon DSP target
- Lanai
- Lanai CPU target
- LoongArch
- LoongArch CPU support [EXPERIMENTAL]
- M68k
- Motorola 68000 target [EXPERIMENTAL]
- MSP430
- MSP430 CPU target (experimental)
- Mips
- MIPS CPU target (includes MIPS64)
- NVPTX
- NVIDIA PTX (GPU) target (32-bit and 64-bit)
- PowerPC
- PowerPC CPU target (PPC32 and PPC64)
- RISCV
- RISC-V CPU target
- SPIRV
- Support SPIR-V language target for graphics and parallel computing
- Sparc
- Sparc CPU target
- SystemZ
- SystemZ (s390x) CPU target
- VE
- NEC SX-Aurora TSUBASA vector engine target
- WebAssembly
- WebAssembly backend
- X86
- X86 CPU target (includes amd64)
- XCore
- XCore CPU target
- Xtensa
- Tensilica Xtensa (ESP32) CPU target [EXPERIMENTAL]
Dependencies
app-arch / xar : An easily extensible archive format
app-arch / zstd : zstd fast compression library
dev-cpp / cpp-httplib : C++ HTTP/HTTPS server and client library
dev-libs / libedit : BSD replacement for libreadline
dev-libs / libffi : Portable, high level programming interface to various calling conventions
dev-libs / libpfm : Hardware-based performance monitoring interface for Linux
dev-libs / libxml2 : XML C parser and toolkit
net-misc / curl : A Client that groks URLs
sci-mathematics / z3 : An efficient theorem prover
sys-libs / binutils-libs : Core binutils libraries (libbfd, libopcodes, libiberty) for external packages
Runtime Dependencies
app-arch / xar : An easily extensible archive format
app-arch / zstd : zstd fast compression library
dev-cpp / cpp-httplib : C++ HTTP/HTTPS server and client library
dev-libs / libedit : BSD replacement for libreadline
dev-libs / libffi : Portable, high level programming interface to various calling conventions
dev-libs / libpfm : Hardware-based performance monitoring interface for Linux
dev-libs / libxml2 : XML C parser and toolkit
llvm-core / llvm : Low Level Virtual Machine
net-misc / curl : A Client that groks URLs
sci-mathematics / z3 : An efficient theorem prover
Depending packages
app-antivirus / clamav : Clam Anti-Virus Scanner
app-forensics / aflplusplus : Fork of AFL, the popular compile-time instrumentation fuzzer
app-text / doxygen : Documentation system for most programming languages
dev-db / postgresql : PostgreSQL RDBMS
dev-debug / bpftrace : High-level tracing language for eBPF
dev-debug / sysdig : A system exploration and troubleshooting tool
dev-lang / crystal : The Crystal Programming Language
dev-lang / ghc : The Glasgow Haskell Compiler
dev-lang / rust : Systems programming language from Mozilla
dev-lang / zig : A robust, optimal, and maintainable programming language
dev-libs / intel-vc-intrinsics : A set of new intrinsics on top of core LLVM IR instructions
dev-libs / opencl-clang : OpenCL-oriented thin wrapper library around clang
dev-libs / pocl : Portable Computing Language (an implementation of OpenCL)
dev-libs / roct-thunk-interface : Radeon Open Compute Thunk Interface
dev-lisp / c2ffi : Clang-based FFI wrapper generator for Common Lisp
dev-ml / llvm : OCaml bindings for LLVM
dev-ml / llvm : OCaml bindings for LLVM
dev-python / clang : Python bindings for llvm-core/clang
dev-python / pyside6 : Python bindings for the Qt framework
dev-python / pyside6-tools : PySide development tools (pyside6-lupdate with support for Python)
dev-python / shiboken6 : Python binding generator for C++ libraries
dev-qt / qt-creator : Lightweight IDE for C++/QML development centering around Qt
dev-qt / qttools : Qt Tools Collection
dev-util / bcc : Tools for BPF-based Linux IO analysis, networking, monitoring, and more
dev-util / bpftool : Tool for inspection and simple manipulation of eBPF programs and maps
dev-util / ccls : C/C++/ObjC language server
dev-util / clang-extract : Tool to extract code content from source files
dev-util / clazy : Compiler plugin which allows clang to understand Qt semantics
dev-util / cvise : Super-parallel Python port of the C-Reduce
dev-util / diffoscope : Will try to get to the bottom of what makes files or directories different
dev-util / hipcc : Radeon Open Compute hipcc
dev-util / hipify-clang : A set of tools to translate CUDA source code into portable HIP C++
dev-util / include-what-you-use : Find unused include directives in C/C++ programs
dev-util / intel-graphics-compiler : LLVM-based OpenCL compiler for OpenCL targetting Intel Gen graphics hardware
dev-util / intel_clc : intel_clc tool used for building OpenCL C to SPIR-V
dev-util / perf : Userland tools for Linux Performance Counters
dev-util / spirv-llvm-translator : Bi-directional translator between SPIR-V and LLVM IR
games-board / jja : swiss army knife for chess file formats
games-emulation / dolphin : Gamecube and Wii game emulator
llvm-core / clang : C language family frontend for LLVM
llvm-core / lld : The LLVM linker (link editor)
llvm-core / lldb : The LLVM debugger
llvm-core / llvm : Low Level Virtual Machine
llvm-core / llvm-common : Common files shared between multiple slots of LLVM
llvm-core / llvm-toolchain-symlinks : Symlinks to use LLVM on binutils-free system
llvm-core / llvmgold : LLVMgold plugin symlink for autoloading
llvm-core / llvmgold : LLVMgold plugin symlink for autoloading
llvm-core / mlir : Multi-Level Intermediate Representation (library only)
llvm-core / polly : Polyhedral optimizations for LLVM
llvm-runtimes / compiler-rt : Compiler runtime library for clang (built-in part)
llvm-runtimes / compiler-rt-sanitizers : Compiler runtime libraries for clang (sanitizers & xray)
llvm-runtimes / libcxx : New implementation of the C++ standard library, targeting C++11
llvm-runtimes / libcxxabi : Low level support for a standard C++ library
llvm-runtimes / libunwind : C++ runtime stack unwinder from LLVM
llvm-runtimes / offload : OpenMP offloading support
llvm-runtimes / openmp : OpenMP runtime library for LLVM/clang compiler
media-gfx / openvdb : Library for the efficient manipulation of volumetric data
media-libs / mesa : OpenGL-like graphic library for Linux
media-libs / oidn : Intel® Open Image Denoise library
media-libs / osl : Advanced shading language for production GI renderers
net-im / toxic : A curses-based client for Tox
sci-electronics / ghdl : Open-source analyzer, compiler, and simulator for VHDL 2008/93/87
sci-electronics / nvc : NVC is a VHDL compiler and simulator
sci-libs / symengine : Fast symbolic manipulation library, written in C++
Bugs
- 502318
- llvm-core/llvm: pass --with-c-include-dirs on prefix
- 617776
- llvm-core/llvm does not install ${CHOST}-prefixed tools
- 651658
- dev-util/kdevelop:5 and media-libs/mesa-17*[llvm] link with different slots of llvm-core/llvm, resulting in a runtime symbol conflict and crash
- 662720
- llvm-core/llvm: llvm-config being a binary breaks cross compilation of dependent packages
- 684872
- llvm-runtimes/compiler-rt-8.0.0: configure fails with llvm-core/llvm[-gold]
- 690962
- llvm-core/llvm-8.0.1[+xml +libffi +ncurses +abi_x86_{64,32} llvm_targets_{amdGPU,bpf,nvpx,x86}] : ninja -v -j6 -l0 failed
- 695646
- media-libs/mesa-19.2.0_rc4 - libraries from llvm-core/llvm will be removed even if drivers in /usr/lib64/dri linking against them still exist
- 732920
- llvm-core/llvm-10.0.0: 62 test failures on sparc
- 736856
- llvm-core/llvm-10.0.1: Can't be built for Celeron N4100 (Gemini Lake)
- 738890
- llvm-core/llvm: llvm-objdump does not recognize '-g' option (was: dev-util/ccache-3.7.11 fails tests)
- 763018
- llvm-core/llvm-11.0.0: Host compiler appears to require libatomic, but cannot find it (macOS Big Sur, Clang bootstrap)
- 773556
- llvm-core/llvm-11.0.1 fails tests when compiled with clang
- 779592
- llvm-core/llvm-11.1.0 fails tests
- 838979
- llvm-core/llvm-14.0.1 - /.../Signals.inc: error: backtrace was not declared in this scope
- 853070
- llvm-core/llvm-14.0.5 - Could not import extension sphinx.builders.linkcheck (exception: No module named six)
- 880855
- llvm-core/llvm-15.0.3: Segfault in llvm-tblgen building for x86_32 target on amd64
- 885795
- llvm-core/llvm: build failure on PPC with >= sys-devel/gcc-11(?) with -fsanitize=undefined (Error: operand out of range)
- 900160
- llvm-core/llvm: add MLIR support
- 904269
- llvm-core/llvm-15.0.7 does not build on i686
- 906751
- llvm-core/llvm-16.0.4 fails to build with crash
- 908433
- llvm-core/llvm-15.0.7-r3 emerge can race with dev-db/unixODBC-2.3.11
- 909180
- llvm-core/llvm-16.0.[56] fails loongarch tests
- 914531
- llvm-core/lld-17: crashes when building llvm-core/llvm-16.0.6
- 914642
- llvm-core/llvm-16.0.6 - [clang] clang++: error: clang frontend command failed with exit code 139 (use -v to see invocation)
- 918869
- llvm-core/llvm-16.0.6 - [clang] clang++: error: clang frontend command failed with exit code 139 (use -v to see invocation)
- 919687
- llvm-core/llvm-14.0.6-r4 - LLVM_ENABLE_Z3_SOLVER cannot be enabled
- 920550
- llvm-core/llvm-17.0.6 fails tests on sparc
- 922519
- llvm-core/llvm-15.0.7-r3 error: type ‘SubtargetFeatureBits’ violates the C++ One Definition Rule [-Werror=odr]
- 923889
- llvm-core/llvm-15.0.7-r3 fails to compile: ld.lld: error: version script assignment of LLVM_15 to symbol LLVMCreateDisasm failed: symbol not defined
- 924509
- llvm-core/llvm-17.0.6 fails to compile: ld: final link failed: memory exhausted
- 931656
- llvm-core/llvm-18.1.5 Fails to emerge Using lld Under WSL 2
- 931996
- llvm-core/llvm-18.1.5-r1 - clang -cc1as: fatal error: error in backend: ZMM registers are not supported without EVEX512
- 936545
- llvm-core/llvm-17.0.6 test fail if LLVM_TARGETS : SPIRV
- 937395
- llvm-core/llvm-16.0.6 - [icu-75.1] [gcc-15] /.../Allocator.h: error: class llvm::SmallVector<void , 4> has no member named begin
- 937779
- llvm-core/llvm-15.0.7-r3 - [icu-75.1] [gcc-15] /.../raw_ostream.h: error: const class llvm::SmallVectorImpl<char> has no member named data
- 939504
- llvm-core/llvm-15.0.7-r6 fails to compile: SmallVector.h:88:69: error: uint64_t was not declared in this scope
- 939738
- llvm-core/llvm: 18.1.8-r1 fails to build on amd64-musl under WSL 2
- 939746
- llvm-core/llvm-18.1.8-r1 fails to build on arm64 llvm musl profile
- 940654
- llvm-core/llvm-19.1.1 fails to compile on ppc64le with sys-devel/gcc[ieee-long-double]: error: invalid conversion from ‘_Float128 (*)(_Float128) noexcept’ to ‘long double (*)(long double)’
- 940676
- llvm-core/llvm: Multiple backports required for ppc64
- 944152
- =llvm-core/llvm-19.1.4: failed to compile
Change logs
- Repository mirror & CI · gentoo
Merge updates from master - Michał Górny · gentoo
llvm-core/llvm: Add 20.0.0_pre20250125 snapshot
Signed-off-by: Michał Górny <mgorny@gentoo.org> - Repository mirror & CI · gentoo
Merge updates from master - Michał Górny · gentoo
llvm-core/llvm: Add 20.0.0_pre20250122 snapshot
Signed-off-by: Michał Górny <mgorny@gentoo.org> - Repository mirror & CI · gentoo
Merge updates from master - Michał Górny · gentoo
llvm-core/llvm: Add 20.0.0_pre20250118 snapshot
Signed-off-by: Michał Górny <mgorny@gentoo.org> - Repository mirror & CI · gentoo
Merge updates from master - Michał Górny · gentoo
llvm-core/llvm: Remove old
Signed-off-by: Michał Górny <mgorny@gentoo.org> - Repository mirror & CI · gentoo
Merge updates from master - Michał Górny · gentoo
llvm-core/llvm: Add 19.1.7
Signed-off-by: Michał Górny <mgorny@gentoo.org> - Repository mirror & CI · gentoo
Merge updates from master - Michał Górny · gentoo
llvm-core/llvm: Add 20.0.0_pre20250111 snapshot
Signed-off-by: Michał Górny <mgorny@gentoo.org> - Repository mirror & CI · gentoo
Merge updates from master - Michał Górny · gentoo
llvm-core/llvm: Add 20.0.0_pre20250104 snapshot
Signed-off-by: Michał Górny <mgorny@gentoo.org> - Repository mirror & CI · gentoo
Merge updates from master - Michał Górny · gentoo
llvm-core/llvm: Remove old
Signed-off-by: Michał Górny <mgorny@gentoo.org> - Repository mirror & CI · gentoo
Merge updates from master - Michał Górny · gentoo
llvm-core/llvm: Add 20.0.0_pre20241227 snapshot
Signed-off-by: Michał Górny <mgorny@gentoo.org> - Repository mirror & CI · gentoo
Merge updates from master - Repository mirror & CI · gentoo
Merge updates from master - Michał Górny · gentoo
llvm-core/llvm: Add 20.0.0_pre20241221 snapshot
Signed-off-by: Michał Górny <mgorny@gentoo.org> - Michał Górny · gentoo
llvm-core/llvm: Install LLVMCodeGenTypes for mlir-tblgen
Signed-off-by: Michał Górny <mgorny@gentoo.org> - Repository mirror & CI · gentoo
Merge updates from master - Michał Górny · gentoo
llvm-core/llvm: Add 19.1.6
Signed-off-by: Michał Górny <mgorny@gentoo.org> - Repository mirror & CI · gentoo
Merge updates from master - Michał Górny · gentoo
llvm-core/llvm: Add 20.0.0_pre20241215 snapshot
Signed-off-by: Michał Górny <mgorny@gentoo.org> - Repository mirror & CI · gentoo
Merge updates from master - Michał Górny · gentoo
Rename dev-ml/{llvm-ocaml → llvm}
Signed-off-by: Michał Górny <mgorny@gentoo.org> - Michał Górny · gentoo
Move {sys-devel → llvm-core}/llvm
Signed-off-by: Michał Górny <mgorny@gentoo.org>