The update broke MesaLib, which blocks a vast number of packages. In
the interest of stability heading towards 2017Q4, revert it, leaving
the issue of how to handle updates to this package (how much testing
is required, keeping multiple versions, etc.) to after the branch.
5.0.0:
Non-comprehensive list of changes in this release
* LLVM’s WeakVH has been renamed to WeakTrackingVH and a new WeakVH has been introduced. The new WeakVH nulls itself out on deletion, but does not track values across RAUW.
* A new library named BinaryFormat has been created which holds a collection of code which previously lived in Support. This includes the file_magic structure and identify_magic functions, as well as all the structure and type definitions for DWARF, ELF, COFF, WASM, and MachO file formats.
* The tool llvm-pdbdump has been renamed llvm-pdbutil to better reflect its nature as a general purpose PDB manipulation / diagnostics tool that does more than just dumping contents.
* The BBVectorize pass has been removed. It was fully replaced and no longer used back in 2014 but we didn’t get around to removing it. Now it is gone. The SLP vectorizer is the suggested non-loop vectorization pass.
* A new tool opt-viewer.py has been added to visualize optimization remarks in HTML. The tool processes the YAML files produced by clang with the -fsave-optimization-record option.
* A new CMake macro LLVM_REVERSE_ITERATION has been added. If enabled, all supported unordered LLVM containers would be iterated in reverse order. This is useful for uncovering non-determinism caused by iteration of unordered containers. Currently, it supports reverse iteration of SmallPtrSet and DenseMap.
* A new tool llvm-dlltool has been added to create short import libraries from GNU style definition files. The tool utilizes the PE COFF SPEC Import Library Format and PE COFF Auxiliary Weak Externals Format to achieve compatibility with LLD and MSVC LINK.
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 also improved.
* Drop CppBackend. It is removed.
Changelog:
* GCC ABI Tag
* LLVM IR: new intrinsics etc.
* Change LLVM IPO model
* Support ThinLTO
* Improve the ARM targets, ARMv8.2-A support etc.
* Improve the MIPS targets
* Improve the PowerPC target, default optim O3 to O2
* Improve the X86 target, SKylake AVX-512 etc.
* Improve the AMDGPU, better support for Mesa 12
Decouple the package from lang/clang that so it can be maintained
and updated independently.
This switches the build framework from autoconf to cmake.
There are no significant changes to the AMDGPU target mentioned in
the release notes. Other changes are not relevant to mention here since
mesa is the only user of this package in pkgsrc proper.
Compacted version of upstream's release notes:
The LLVM C API LLVMGetTargetMachineData is deprecated
DataLayout is no longer optional
Comdats are now ortogonal to the linkage
On ELF now supports multiple sections with the same name and comdat
LLVM now lazily loads metadata in some cases
Creating archives with IR files with debug info is now 25X faster
llvm-ar(1) can create archives in the BSD format used by OS X
LLVM received a backend for the extended Berkely Packet Filter instruction set
The BPF target is now available by default
Switch-case lowering was rewritten to avoid generating unbalanced search trees
The debug info IR class hierarchy now inherits from Metadata
Argument-less TargetMachine::getSubtarget has been removed from the tree
* Support for AuroraUX has been removed.
* Added support for a native object file-based bitcode wrapper format.
* Added support for MSVC’s __vectorcall calling convention as x86_vectorcallcc.
* Prefix data rework
* Metadata is not a Value
* Alias syntax change
* The old JIT has been removed
* object::Binary doesn’t own the file buffer
* IR in object files is now supported
* The gold plugin has been rewritten