./lang/llvm, Low Level Virtual Machine compiler infrastructure

[ CVSweb ] [ Homepage ] [ RSS ] [ Required by ] [ Add to tracker ]


Branch: CURRENT, Version: 10.0.0nb1, Package name: llvm-10.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 the 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 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:
[textproc/libxml2]

Required to build:
[pkgtools/cwrappers] [lang/gcc5] [lang/python37]

Package options: llvm-target-aarch64, llvm-target-amdgpu, llvm-target-arm, llvm-target-bpf, llvm-target-hexagon, llvm-target-lanai, llvm-target-mips, llvm-target-msp430, llvm-target-nvptx, llvm-target-powerpc, llvm-target-riscv, llvm-target-sparc, llvm-target-systemz, llvm-target-webassembly, llvm-target-x86, llvm-target-xcore, terminfo

Master sites:

SHA1: 85f2d89205fb190c61c8a98dad2a58e27a1540da
RMD160: 96cdffb5006b2aaa3b16640f69d1b435cd5eea93
Filesize: 34895.695 KB

Version history: (Expand)


CVS history: (Expand)


   2020-07-06 09:16:00 by Havard Eidnes | Files touched by this commit (1)
Log message:
If on powerpc, add -mlongcall to CFLAGS and CXXFLAGS, to avoid
"relocation truncated to fit: R_PPC_REL24" error.
   2020-07-01 16:46:37 by Adam Ciarcinski | Files touched by this commit (10)
Log message:
clang: build with static analizer (default and needed for clang-tools-extra); \ 
remove clang-static-analyzer
   2020-06-02 10:25:05 by Adam Ciarcinski | Files touched by this commit (1689)
Log message:
Revbump for icu
   2020-05-12 19:46:28 by Roland Illig | Files touched by this commit (1)
Log message:
lang/llvm: remove nonexistent file from SUBST_FILES

opt-remarks has probably been replaced by remarks-shlib, which has
already been added to the list.
   2020-05-08 16:10:10 by Roland Illig | Files touched by this commit (1)
Log message:
lang/llvm: remove nonexistent file from REPLACE_PYTHON
   2020-04-18 09:50:52 by Adam Ciarcinski | Files touched by this commit (1)
Log message:
llvm: pkglint suggestion
   2020-04-18 09:50:18 by Adam Ciarcinski | Files touched by this commit (6) | Package updated
Log message:
llvm: updated to 10.0.0

Non-comprehensive list of changes in this release

The ISD::FP_ROUND_INREG opcode and related code was removed from SelectionDAG.

Enabled MemorySSA as a loop dependency. Since r370957 (D58311 [MemorySSA & \ 
LoopPassManager] Enable MemorySSA as loop dependency. Update tests.), the \ 
MemorySSA analysis is being preserved and used by a series of loop passes. The \ 
most significant use is in LICM, where the instruction hoisting and sinking \ 
relies on aliasing information provided by MemorySSA vs previously creating an \ 
AliasSetTracker. The LICM step of promoting variables to scalars still relies on \ 
the creation of an AliasSetTracker, but its use is reduced to only be enabled \ 
for loops with a small number of overall memory instructions. This choice was \ 
motivated by experimental results showing compile and run time benefits or \ 
replacing the AliasSetTracker usage with MemorySSA without any performance \ 
penalties. The fact that MemorySSA is now preserved by and available in a series \ 
of loop passes, also opens up opportunities for its use in those respective \ 
passes.

The BasicBlockPass, BBPassManager and all their uses were deleted in this revision.

The LLVM_BUILD_LLVM_DYLIB and LLVM_LINK_LLVM_DYLIB CMake options are no longer \ 
available on Windows.

As per LLVM Language Reference Manual, getelementptr inbounds can not change the \ 
null status of a pointer, meaning it can not produce non-null pointer given null \ 
base pointer, and likewise given non-null base pointer it can not produce null \ 
pointer; if it does, the result is a poison value. Since r369789 (D66608 \ 
[InstCombine] icmp eq/ne (gep inbounds P, Idx..), null -> icmp eq/ne P, null) \ 
LLVM uses that for transformations. If the original source violates these \ 
requirements this may result in code being miscompiled. If you are using Clang \ 
front-end, Undefined Behaviour Sanitizer -fsanitize=pointer-overflow check will \ 
now catch such cases.

Windows Control Flow Guard: the -cfguard option now emits CFG checks on indirect \ 
function calls. The previous behavior is still available with the \ 
-cfguard-nochecks option. Note that this feature should always be used with \ 
optimizations enabled.

Callbacks have been added to CommandLine Options. These can be used to validate \ 
or selectively enable other options.

The function attributes no-frame-pointer-elim and no-frame-pointer-elim-non-leaf \ 
have been replaced by frame-pointer, which has 3 values: none, non-leaf, and \ 
all. The values mean what functions should retain frame pointers.

The inter-procedural analysis and optimization capabilities in the Attributor \ 
framework and pass have been substantially advanced (initial commit D59918, \ 
LLVM-Dev talk). In this release, 19 different attributes are inferred, including \ 
12 LLVM IR attributes and 7 “abstract” attributes, such as liveness. The \ 
Attributor is still under heavy development and disabled by default; to enable \ 
an early run pass -mllvm -attributor-disable=false to an invocation of clang.

New matrix math intrinsics have been added to LLVM (see LLVM Language Reference \ 
Manual), together with the LowerMatrixIntrinsics pass. The pass lowers matrix \ 
intrinsics to a set of efficient vector instructions. The lowering pass is off \ 
by default and can be enabled by passing -mllvm -enable-matrix to an invocation \ 
of clang.
   2020-03-22 19:01:22 by Roland Illig | Files touched by this commit (1)
Log message:
lang/llvm: fix typo in REPLACE_PYTHON filename