Home | History | Annotate | Download | only in docs
      1 ======================
      2 LLVM 3.9 Release Notes
      3 ======================
      4 
      5 .. contents::
      6     :local:
      7 
      8 .. warning::
      9    These are in-progress notes for the upcoming LLVM 3.9 release.  You may
     10    prefer the `LLVM 3.8 Release Notes <http://llvm.org/releases/3.8.0/docs
     11    /ReleaseNotes.html>`_.
     12 
     13 
     14 Introduction
     15 ============
     16 
     17 This document contains the release notes for the LLVM Compiler Infrastructure,
     18 release 3.9.  Here we describe the status of LLVM, including major improvements
     19 from the previous release, improvements in various subprojects of LLVM, and
     20 some of the current users of the code.  All LLVM releases may be downloaded
     21 from the `LLVM releases web site <http://llvm.org/releases/>`_.
     22 
     23 For more information about LLVM, including information about the latest
     24 release, please check out the `main LLVM web site <http://llvm.org/>`_.  If you
     25 have questions or comments, the `LLVM Developer's Mailing List
     26 <http://lists.llvm.org/mailman/listinfo/llvm-dev>`_ is a good place to send
     27 them.
     28 
     29 Note that if you are reading this file from a Subversion checkout or the main
     30 LLVM web page, this document applies to the *next* release, not the current
     31 one.  To see the release notes for a specific release, please see the `releases
     32 page <http://llvm.org/releases/>`_.
     33 
     34 Non-comprehensive list of changes in this release
     35 =================================================
     36 * The LLVMContext gains a new runtime check (see
     37   LLVMContext::discardValueNames()) that can be set to discard Value names
     38   (other than GlobalValue). This is intended to be used in release builds by
     39   clients that are interested in saving CPU/memory as much as possible.
     40 
     41 * There is no longer a "global context" available in LLVM, except for the C API.
     42 
     43 * .. note about autoconf build having been removed.
     44 
     45 * .. note about C API functions LLVMParseBitcode,
     46    LLVMParseBitcodeInContext, LLVMGetBitcodeModuleInContext and
     47    LLVMGetBitcodeModule having been removed. LLVMGetTargetMachineData has been
     48    removed (use LLVMGetDataLayout instead).
     49 
     50 * The C API function LLVMLinkModules has been removed.
     51 
     52 * The C API function LLVMAddTargetData has been removed.
     53 
     54 * The C API function LLVMGetDataLayout is deprecated
     55   in favor of LLVMGetDataLayoutStr.
     56 
     57 * The C API enum LLVMAttribute and associated API is deprecated in favor of
     58   the new LLVMAttributeRef API. The deprecated functions are
     59   LLVMAddFunctionAttr, LLVMAddTargetDependentFunctionAttr,
     60   LLVMRemoveFunctionAttr, LLVMGetFunctionAttr, LLVMAddAttribute,
     61   LLVMRemoveAttribute, LLVMGetAttribute, LLVMAddInstrAttribute,
     62   LLVMRemoveInstrAttribute and LLVMSetInstrParamAlignment.
     63 
     64 * ``TargetFrameLowering::eliminateCallFramePseudoInstr`` now returns an
     65   iterator to the next instruction instead of ``void``. Targets that previously
     66   did ``MBB.erase(I); return;`` now probably want ``return MBB.erase(I);``.
     67 
     68 * ``SelectionDAGISel::Select`` now returns ``void``. Out of tree targets will
     69   need to be updated to replace the argument node and remove any dead nodes in
     70   cases where they currently return an ``SDNode *`` from this interface.
     71 
     72 * Introduction of ThinLTO: [FIXME: needs to be documented more extensively in
     73   /docs/ ; ping Mehdi/Teresa before the release if not done]
     74 
     75 * Raised the minimum required CMake version to 3.4.3.
     76 
     77 .. NOTE
     78    For small 1-3 sentence descriptions, just add an entry at the end of
     79    this list. If your description won't fit comfortably in one bullet
     80    point (e.g. maybe you would like to give an example of the
     81    functionality, or simply have a lot to talk about), see the `NOTE` below
     82    for adding a new subsection.
     83 
     84 * ... next change ...
     85 
     86 .. NOTE
     87    If you would like to document a larger change, then you can add a
     88    subsection about it right here. You can copy the following boilerplate
     89    and un-indent it (the indentation causes it to be inside this comment).
     90 
     91    Special New Feature
     92    -------------------
     93 
     94    Makes programs 10x faster by doing Special New Thing.
     95 
     96 Changes to the LLVM IR
     97 ----------------------
     98 
     99 * New intrinsics ``llvm.masked.load``, ``llvm.masked.store``,
    100   ``llvm.masked.gather`` and ``llvm.masked.scatter`` were introduced to the
    101   LLVM IR to allow selective memory access for vector data types.
    102 
    103 Changes to LLVM's IPO model
    104 ---------------------------
    105 
    106 LLVM no longer does inter-procedural analysis and optimization (except
    107 inlining) on functions with comdat linkage.  Doing IPO over such
    108 functions is unsound because the implementation the linker chooses at
    109 link-time may be differently optimized than the one what was visible
    110 during optimization, and may have arbitrarily different observable
    111 behavior.  See `PR26774 <http://llvm.org/PR26774>`_ for more details.
    112 
    113 Changes to the ARM Backend
    114 --------------------------
    115 
    116  During this release ...
    117 
    118 
    119 Changes to the MIPS Target
    120 --------------------------
    121 
    122  During this release ...
    123 
    124 
    125 Changes to the PowerPC Target
    126 -----------------------------
    127 
    128  Moved some optimizations from O3 to O2 (D18562)
    129 
    130 * Enable sibling call optimization on ppc64 ELFv1/ELFv2 abi
    131 
    132 Changes to the X86 Target
    133 -------------------------
    134 
    135 * LLVM now supports the Intel CPU codenamed Skylake Server with AVX-512
    136   extensions using ``-march=skylake-avx512``. The switch enables the
    137   ISA extensions AVX-512{F, CD, VL, BW, DQ}.
    138 
    139 * LLVM now supports the Intel CPU codenamed Knights Landing with AVX-512
    140   extensions using ``-march=knl``. The switch enables the ISA extensions
    141   AVX-512{F, CD, ER, PF}.
    142 
    143 Changes to the AMDGPU Target
    144 -----------------------------
    145 
    146  * Mesa 11.0.x is no longer supported
    147 
    148 
    149 Changes to the OCaml bindings
    150 -----------------------------
    151 
    152  During this release ...
    153 
    154 Support for attribute 'notail' has been added
    155 ---------------------------------------------
    156 
    157 This marker prevents optimization passes from adding 'tail' or
    158 'musttail' markers to a call. It is used to prevent tail call
    159 optimization from being performed on the call.
    160 
    161 External Open Source Projects Using LLVM 3.9
    162 ============================================
    163 
    164 An exciting aspect of LLVM is that it is used as an enabling technology for
    165 a lot of other language and tools projects. This section lists some of the
    166 projects that have already been updated to work with LLVM 3.9.
    167 
    168 * A project
    169 
    170 
    171 Additional Information
    172 ======================
    173 
    174 A wide variety of additional information is available on the `LLVM web page
    175 <http://llvm.org/>`_, in particular in the `documentation
    176 <http://llvm.org/docs/>`_ section.  The web page also contains versions of the
    177 API documentation which is up-to-date with the Subversion version of the source
    178 code.  You can access versions of these documents specific to this release by
    179 going into the ``llvm/docs/`` directory in the LLVM tree.
    180 
    181 If you have any questions or comments about LLVM, please feel free to contact
    182 us via the `mailing lists <http://llvm.org/docs/#maillist>`_.
    183 
    184