/llvm, Low Level Virtual Machine compiler infrastructure
4.0.0nb1, Package name:
llvm-4.0.0nb1, Maintainer: pkgsrc-users
Low Level Virtual Machine (LLVM) is:
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.
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.
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 & C++ front-end, a link-time optimization
framework with a growing set of global and interprocedural analyses and
transformations, static back-ends for the X86, X86-64, PowerPC 32/64, ARM,
Thumb, IA-64, Alpha and SPARC architectures, a back-end which emits portable C
code, and a Just-In-Time compiler for X86, X86-64, PowerPC 32/64 processors.
Required to run:
] Required to build:
] Package options
: llvm-target-aarch64, llvm-target-amdgpu, llvm-target-arm, llvm-target-bpf, llvm-target-hexagon, llvm-target-mips, llvm-target-msp430, llvm-target-nvptx, llvm-target-powerpc, llvm-target-sparc, llvm-target-systemz, llvm-target-x86, llvm-target-xcore
Master sites: SHA1:
Version history: (Expand)
- (2017-03-20) Updated to version: llvm-4.0.0nb1
- (2017-03-18) Updated to version: llvm-4.0.0
- (2017-01-05) Updated to version: llvm-3.9.1
- (2016-11-15) Updated to version: llvm-3.9.0
- (2016-07-26) Updated to version: llvm-3.8.1
- (2016-07-12) Updated to version: llvm-3.8.0nb2
CVS history: (Expand)
| 2017-04-20 14:56:47 by Jonathan Perkin | Files touched by this commit (1) |
Exclude some bogus symbols from the mapfile on SunOS. It may be that
this is appropriate for all platforms, in which case it can be changed
to be a patch instead.
| 2017-03-19 20:01:48 by Adam Ciarcinski | Files touched by this commit (6) |
Create and use shared library libLLVM; fix install_name for shared object on Darwin.
| 2017-03-17 23:38:18 by Adam Ciarcinski | Files touched by this commit (38) |
The minimum compiler version required for building LLVM has been raised to 4.8 \
for GCC and 2015 for Visual Studio.
The C API functions LLVMAddFunctionAttr, LLVMGetFunctionAttr, \
LLVMRemoveFunctionAttr, LLVMAddAttribute, LLVMRemoveAttribute, LLVMGetAttribute, \
LLVMAddInstrAttribute and LLVMRemoveInstrAttribute have been removed.
The C API enum LLVMAttribute has been deleted.
The definition and uses of LLVM_ATRIBUTE_UNUSED_RESULT in the LLVM source were \
replaced with LLVM_NODISCARD, which matches the C++17 [[nodiscard]] semantics \
rather than gcc’s __attribute__((warn_unused_result)).
The Timer related APIs now expect a Name and Description. When upgrading code \
the previously used names should become descriptions and a short name in the \
style of a programming language identifier should be added.
LLVM now handles invariant.group across different basic blocks, which makes it \
possible to devirtualize virtual calls inside loops.
The aggressive dead code elimination phase (“adce”) now removes branches \
which do not effect program behavior. Loops are retained by default since they \
may be infinite but these can also be removed with LLVM option \
-adce-remove-loops when the loop body otherwise has no live operations.
The llvm-cov tool can now export coverage data as json. Its html output mode has \
| 2017-01-16 22:56:35 by Brook Milligan | Files touched by this commit (2) |
Clean up definition of libtool on Darwin.
The previous commit ended up with two different specifications for libtool
on Darwin. One was the OS-specific version of CMAKE_ARGS introduced in the
previous commit; the other was inside a conditional to detect Darwin introduced \
in the commit prior. The former seems cleaner so it has been left.
| 2017-01-16 18:26:47 by Brook Milligan | Files touched by this commit (3) |
Use the system-specific libtool on Darwin.
This fixes bugs relating to unrecognized libtool options on Darwin.
| 2017-01-05 12:54:32 by Adam Ciarcinski | Files touched by this commit (16) | |
The LLVMContext gains a new runtime check (see LLVMContext::discardValueNames()) \
that can be set to discard Value names (other than GlobalValue). This is \
intended to be used in release builds by clients that are interested in saving \
CPU/memory as much as possible.
There is no longer a “global context” available in LLVM, except for the C API.
The autoconf build system has been removed in favor of CMake. LLVM 3.9 requires \
CMake 3.4.3 or later to build. For information about using CMake please see the \
documentation on Building LLVM with CMake. For information about the CMake \
language there is also a CMake Primer document available.
C API functions LLVMParseBitcode, LLVMParseBitcodeInContext, \
LLVMGetBitcodeModuleInContext and LLVMGetBitcodeModule having been removed. \
LLVMGetTargetMachineData has been removed (use LLVMGetDataLayout instead).
The C API function LLVMLinkModules has been removed.
The C API function LLVMAddTargetData has been removed.
The C API function LLVMGetDataLayout is deprecated in favor of LLVMGetDataLayoutStr.
The C API enum LLVMAttribute and associated API is deprecated in favor of the \
new LLVMAttributeRef API. The deprecated functions are LLVMAddFunctionAttr, \
LLVMAddTargetDependentFunctionAttr, LLVMRemoveFunctionAttr, LLVMGetFunctionAttr, \
LLVMAddAttribute, LLVMRemoveAttribute, LLVMGetAttribute, LLVMAddInstrAttribute, \
LLVMRemoveInstrAttribute and LLVMSetInstrParamAlignment.
TargetFrameLowering::eliminateCallFramePseudoInstr now returns an iterator to \
the next instruction instead of void. Targets that previously did MBB.erase(I); \
return; now probably want return MBB.erase(I);.
SelectionDAGISel::Select now returns void. Out-of-tree targets will need to be \
updated to replace the argument node and remove any dead nodes in cases where \
they currently return an SDNode * from this interface.
Added the MemorySSA analysis, which hopes to replace MemoryDependenceAnalysis. \
It should provide higher-quality results than MemDep, and be algorithmically \
faster than MemDep. Currently, GVNHoist (which is off by default) makes use of \
The minimum density for lowering switches with jump tables has been reduced from \
40% to 10% for functions which are not marked optsize (that is, compiled with \
| 2017-01-02 01:03:42 by Greg Troxel | Files touched by this commit (1) |
On i386, use -march=i586 for 64-bit CAS
This matches tnn's change to lang/libLLVM. No PKGREVISION; no change
on !i386 and on i386 this did not build before.
| 2016-12-18 00:28:35 by Joerg Sonnenberger | Files touched by this commit (4) |
Explicitly build LLVM projects with -std=c++11, it doesn't get detected
automatically in all cases.