========================
LLVM 6.0.0 Release Notes
========================

.. contents::
    :local:

Introduction
============

This document contains the release notes for the LLVM Compiler Infrastructure,
release 6.0.0.  Here we describe the status of LLVM, including major improvements
from the previous release, improvements in various subprojects of LLVM, and
some of the current users of the code.  All LLVM releases may be downloaded
from the `LLVM releases web site <http://llvm.org/releases/>`_.

For more information about LLVM, including information about the latest
release, please check out the `main LLVM web site <http://llvm.org/>`_.  If you
have questions or comments, the `LLVM Developer's Mailing List
<http://lists.llvm.org/mailman/listinfo/llvm-dev>`_ is a good place to send
them.

Non-comprehensive list of changes in this release
=================================================

* Support for `retpolines <https://support.google.com/faqs/answer/7625886>`_
  was added to help mitigate "branch target injection" (variant #2) of the
  "Spectre" speculative side channels described by `Project Zero
  <https://googleprojectzero.blogspot.com/2018/01/reading-privileged-memory-with-side.html>`_
  and the `Spectre paper <https://spectreattack.com/spectre.pdf>`_.

* The ``Redirects`` argument of ``llvm::sys::ExecuteAndWait`` and
  ``llvm::sys::ExecuteNoWait`` was changed to an ``ArrayRef`` of optional
  ``StringRef``'s to make it safer and more convenient to use.

* The backend name was added to the Target Registry to allow run-time
  information to be fed back into TableGen. Out-of-tree targets will need to add
  the name used in the `def X : Target` definition to the call to
  `RegisterTarget`.

* The ``Debugify`` pass was added to ``opt`` to facilitate testing of debug
  info preservation. This pass attaches synthetic ``DILocations`` and
  ``DIVariables`` to the instructions in a ``Module``. The ``CheckDebugify``
  pass determines how much of the metadata is lost.

* Significantly improved quality of CodeView debug info for Windows.

* Preliminary support for Sanitizers and sibling features on X86(_64) NetBSD
  (ASan, UBsan, TSan, MSan, SafeStack, libFuzzer).


   Improvements to ThinLTO (-flto=thin)
   ------------------------------------
   * Integration with profile data (PGO). When available, profile data 
     enables more accurate function importing decisions, as well as 
     cross-module indirect call promotion.
   * Significant build-time and binary-size improvements when compiling with 
     debug info (-g).

Changes to the LLVM IR
----------------------

* The fast-math-flags (FMF) have been updated. Previously, the 'fast' flag
  indicated that floating-point reassociation was allowed and all other flags
  were set too. The 'fast' flag still exists, but there is a new flag called
  'reassoc' to indicate specifically that reassociation is allowed. A new bit
  called 'afn' was also added to selectively allow approximations for common
  mathlib functions like square-root. The new flags provide more flexibility
  to enable/disable specific floating-point optimizations. Making the
  optimizer respond appropriately to these flags is an ongoing effort.


Changes to the AArch64 Target
-----------------------------

* Enabled the new GlobalISel instruction selection framework by default at ``-O0``.


Changes to the ARM Target
-------------------------

* Support for enabling SjLj exception handling on platforms where it
  isn't the default.


Changes to the Hexagon Target
-----------------------------

* The Hexagon backend now supports V65 ISA.

* The ``-mhvx`` option now takes an optional value that specifies the ISA
  version of the HVX coprocessor.  The available values are v60, v62 and v65.
  By default, the value is set to be the same as the CPU version.

* The compiler option ``-mhvx-double`` is deprecated and will be removed in
  the next release of the compiler. Programmers should use the ``-mhvx-length``
  option to specify the desired vector length: ``-mhvx-length=64b`` for
  64-byte vectors and ``-mhvx-length=128b`` for 128-byte vectors. While the
  current default vector length is 64 bytes, users should always specify the
  length explicitly, since the default value may change in the future.

* The target feature ``hvx-double`` is deprecated and will be removed in the
  next release. LLVM IR generators should use target features ``hvx-length64b``
  and ``hvx-length128b`` to indicate the vector length. The length should
  always be specified when HVX code generation is enabled.


Changes to the MIPS Target
--------------------------

Fixed numerous bugs:

* fpowi on MIPS64 giving incorrect results when used with a negative integer.
* Usage of the asm 'c' constraint with the wrong datatype causing an
  assert/crash.
* Fixed a conversion bug when using the DSP ASE.
* Fixed an inconsistency where objects were not marked as using the microMIPS as
  when the micromips function attribute or the ".set micromips" directive was
  used.
* Reordered the MIPSR6 specific hazard scheduler pass to after the delay slot
  filler, fixing a class of rare edge case bugs where the delay slot filler
  would violate ISA restrictions.
* Fixed a crash when using a type of unknown size with gp relative addressing.
* Corrected the j macro for microMIPS.
* Corrected the encoding of movep for microMIPS32r6.
* Fixed an issue with the usage of insert instructions having an invalid set of
  operands.
* Fixed an issue where TLS symbols were not marked as such.
* Enabled the usage of register scavenging with MSA, due to its shorter offsets
  for loads and stores.
* Corrected the ELF headers when using the DSP ASE.

New features:

* The long branch pass now generates some R6 specific instructions when
  targeting MIPSR6.
* The delay slot filler now performs more branch conversions if delay slots
  cannot be filled.
* The MIPS MT ASE is now fully supported.
* Added support for the ``lapc`` pseudo instruction.
* Improved the selection of multiple instructions (``dext``, ``nmadd``,
  ``nmsub``).
* Further improved microMIPS codesize reduction.

Deprecation notices:

* microMIPS64R6 support was been deprecated since 5.0, and has now been
  completely removed.


Changes to the SystemZ Target
-----------------------------

During this release the SystemZ target has:

* Added support for 128-bit atomic operations.

* Added support for the "o" constraint for inline asm statements.

Changes to the X86 Target
-------------------------

During this release the X86 target has:

* Added support for enabling SjLj exception handling on platforms where it
  isn't the default.

* Added intrinsics for Intel Extensions: VAES, GFNI, VPCLMULQDQ, AVX512VBMI2, AVX512BITALG, AVX512VNNI.

* Added support for Intel Icelake CPU.

* Fixed some X87 codegen bugs.

* Added instruction scheduling information for Intel Sandy Bridge, Ivy Bridge, Haswell, Broadwell, and Skylake CPUs.

* Improved scheduler model for AMD Jaguar CPUs.

* Improved llvm-mc's disassembler for some EVEX encoded instructions.

* Add support for i8 and i16 vector signed/unsigned min/max horizontal reductions.

* Improved codegen for memory comparisons

* Improved codegen for i32 vector multiplies

* Improved codegen for scalar integer absolute values

* Improved codegen for vector integer rotations (XOP and AVX512)

* Improved codegen of data being transferred between GPRs and K-registers.

* Improved codegen for vector truncations.

* Improved folding of address computations into gather/scatter instructions.

* Gained initial support recognizing variable shuffles from vector element extracts and inserts.

* Improved documentation for SSE/AVX intrinsics in intrin.h header files.

* Gained support for emitting `retpolines
  <https://support.google.com/faqs/answer/7625886>`_, including automatic
  insertion of the necessary thunks or using external thunks.


External Open Source Projects Using LLVM 6
==========================================

LDC - the LLVM-based D compiler
-------------------------------

`D <http://dlang.org>`_ is a language with C-like syntax and static typing. It
pragmatically combines efficiency, control, and modeling power, with safety and
programmer productivity. D supports powerful concepts like Compile-Time Function
Execution (CTFE) and Template Meta-Programming, provides an innovative approach
to concurrency and offers many classical paradigms.

`LDC <http://wiki.dlang.org/LDC>`_ uses the frontend from the reference compiler
combined with LLVM as backend to produce efficient native code. LDC targets
x86/x86_64 systems like Linux, OS X, FreeBSD and Windows and also Linux on ARM
and PowerPC (32/64 bit). Ports to other architectures like AArch64 and MIPS64
are underway.

JFS - JIT Fuzzing Solver
------------------------

`JFS <https://github.com/delcypher/jfs>`_ is an experimental constraint solver
designed to investigate using coverage guided fuzzing as an incomplete strategy
for solving boolean, BitVector, and floating-point constraints.
It is built on top of LLVM, Clang, LibFuzzer, and Z3.

The solver works by generating a C++ program where the reachability of an
`abort()` statement is equivalent to finding a satisfying assignment to the
constraints. This program is then compiled by Clang with `SanitizerCoverage
<https://releases.llvm.org/6.0.0/tools/clang/docs/SanitizerCoverage.html>`_
instrumentation and then fuzzed using :doc:`LibFuzzer <LibFuzzer>`.

Zig Programming Language
------------------------

`Zig <http://ziglang.org>`_  is an open-source programming language designed
for robustness, optimality, and clarity. It is intended to replace C. It
provides high level features such as Generics,
Compile Time Function Execution, and Partial Evaluation, yet exposes low level
LLVM IR features such as Aliases. Zig uses Clang to provide automatic
import of .h symbols - even inline functions and macros. Zig uses LLD combined
with lazily building compiler-rt to provide out-of-the-box cross-compiling for
all supported targets.

Additional Information
======================

A wide variety of additional information is available on the `LLVM web page
<http://llvm.org/>`_, in particular in the `documentation
<http://llvm.org/docs/>`_ section.  The web page also contains versions of the
API documentation which is up-to-date with the Subversion version of the source
code.  You can access versions of these documents specific to this release by
going into the ``llvm/docs/`` directory in the LLVM tree.

If you have any questions or comments about LLVM, please feel free to contact
us via the `mailing lists <http://llvm.org/docs/#maillist>`_.
