OSDN Git Service

[LLVM-C] [OCaml] Remove LLVMAddBBVectorizePass
[android-x86/external-llvm.git] / docs / ReleaseNotes.rst
index 7e308c3..2fb71e4 100644 (file)
@@ -1,21 +1,21 @@
-======================
-LLVM 3.9 Release Notes
-======================
+========================
+LLVM 7.0.0 Release Notes
+========================
 
 .. contents::
     :local:
 
 .. warning::
-   These are in-progress notes for the upcoming LLVM 3.9 release.  You may
-   prefer the `LLVM 3.8 Release Notes <http://llvm.org/releases/3.8.0/docs
-   /ReleaseNotes.html>`_.
+   These are in-progress notes for the upcoming LLVM 7 release.
+   Release notes for previous releases can be found on
+   `the Download Page <http://releases.llvm.org/download.html>`_.
 
 
 Introduction
 ============
 
 This document contains the release notes for the LLVM Compiler Infrastructure,
-release 3.9.  Here we describe the status of LLVM, including major improvements
+release 7.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/>`_.
@@ -33,49 +33,62 @@ page <http://llvm.org/releases/>`_.
 
 Non-comprehensive list of changes in this release
 =================================================
-* 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.
+.. NOTE
+   For small 1-3 sentence descriptions, just add an entry at the end of
+   this list. If your description won't fit comfortably in one bullet
+   point (e.g. maybe you would like to give an example of the
+   functionality, or simply have a lot to talk about), see the `NOTE` below
+   for adding a new subsection.
 
-* There is no longer a "global context" available in LLVM, except for the C API.
+* Libraries have been renamed from 7.0 to 7. This change also impacts
+  downstream libraries like lldb.
 
-* .. note about autoconf build having been removed.
+* The LoopInstSimplify pass (-loop-instsimplify) has been removed.
 
-* .. note about C API functions LLVMParseBitcode,
-   LLVMParseBitcodeInContext, LLVMGetBitcodeModuleInContext and
-   LLVMGetBitcodeModule having been removed. LLVMGetTargetMachineData has been
-   removed (use LLVMGetDataLayout instead).
+* Symbols starting with ``?`` are no longer mangled by LLVM when using the
+  Windows ``x`` or ``w`` IR mangling schemes.
 
-* The C API function LLVMLinkModules has been removed.
+* A new tool named :doc:`llvm-exegesis <CommandGuide/llvm-exegesis>` has been
+  added. :program:`llvm-exegesis` automatically measures instruction scheduling
+  properties (latency/uops) and provides a principled way to edit scheduling
+  models.
 
-* The C API function LLVMAddTargetData has been removed.
+* A new tool named :doc:`llvm-mca <CommandGuide/llvm-mca>` has been added.
+  :program:`llvm-mca` is a  static performance analysis tool that uses
+  information available in LLVM to statically predict the performance of
+  machine code for a specific CPU.
 
-* The C API function LLVMGetDataLayout is deprecated
-  in favor of LLVMGetDataLayoutStr.
+* The optimization flag to merge constants (-fmerge-all-constants) is no longer
+  applied by default.
 
-* The C API enum LLVMAttribute is deprecated in favor of
-  LLVMGetAttributeKindForName.
+* Optimization of floating-point casts is improved. This may cause surprising
+  results for code that is relying on the undefined behavior of overflowing 
+  casts. The optimization can be disabled by specifying a function attribute:
+  "strict-float-cast-overflow"="false". This attribute may be created by the
+  clang option :option:`-fno-strict-float-cast-overflow`.
+  Code sanitizers can be used to detect affected patterns. The option for
+  detecting this problem alone is "-fsanitize=float-cast-overflow":
 
-* ``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);``.
+.. code-block:: c
 
-* ``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.
+    int main() {
+      float x = 4294967296.0f;
+      x = (float)((int)x);
+      printf("junk in the ftrunc: %f\n", x);
+      return 0;
+    }
 
-* Introduction of ThinLTO: [FIXME: needs to be documented more extensively in
-  /docs/ ; ping Mehdi/Teresa before the release if not done]
+.. code-block:: bash
 
-.. NOTE
-   For small 1-3 sentence descriptions, just add an entry at the end of
-   this list. If your description won't fit comfortably in one bullet
-   point (e.g. maybe you would like to give an example of the
-   functionality, or simply have a lot to talk about), see the `NOTE` below
-   for adding a new subsection.
+    clang -O1 ftrunc.c -fsanitize=float-cast-overflow ; ./a.out 
+    ftrunc.c:5:15: runtime error: 4.29497e+09 is outside the range of representable values of type 'int'
+    junk in the ftrunc: 0.000000
+
+* ``LLVM_ON_WIN32`` is no longer set by ``llvm/Config/config.h`` and
+  ``llvm/Config/llvm-config.h``.  If you used this macro, use the compiler-set
+  ``_WIN32`` instead which is set exactly when ``LLVM_ON_WIN32`` used to be set.
 
-* ... next change ...
+* Note..
 
 .. NOTE
    If you would like to document a larger change, then you can add a
@@ -90,19 +103,13 @@ Non-comprehensive list of changes in this release
 Changes to the LLVM IR
 ----------------------
 
-* New intrinsics ``llvm.masked.load``, ``llvm.masked.store``,
-  ``llvm.masked.gather`` and ``llvm.masked.scatter`` were introduced to the
-  LLVM IR to allow selective memory access for vector data types.
+* The signatures for the builtins @llvm.memcpy, @llvm.memmove, and @llvm.memset
+  have changed. Alignment is no longer an argument, and are instead conveyed as
+  parameter attributes.
 
-Changes to LLVM's IPO model
----------------------------
+* invariant.group.barrier has been renamed to launder.invariant.group.
 
-LLVM no longer does inter-procedural analysis and optimization (except
-inlining) on functions with comdat linkage.  Doing IPO over such
-functions is unsound because the implementation the linker chooses at
-link-time may be differently optimized than the one what was visible
-during optimization, and may have arbitrarily different observable
-behavior.  See `PR26774 <http://llvm.org/PR26774>`_ for more details.
+* invariant.group metadata can now refer only empty metadata nodes.
 
 Changes to the ARM Backend
 --------------------------
@@ -119,47 +126,41 @@ Changes to the MIPS Target
 Changes to the PowerPC Target
 -----------------------------
 
- Moved some optimizations from O3 to O2 (D18562)
-
-* Enable sibling call optimization on ppc64 ELFv1/ELFv2 abi
+ During this release ...
 
 Changes to the X86 Target
 -------------------------
 
-* LLVM now supports the Intel CPU codenamed Skylake Server with AVX-512
-  extensions using ``-march=skylake-avx512``. The switch enables the
-  ISA extensions AVX-512{F, CD, VL, BW, DQ}.
-
-* LLVM now supports the Intel CPU codenamed Knights Landing with AVX-512
-  extensions using ``-march=knl``. The switch enables the ISA extensions
-  AVX-512{F, CD, ER, PF}.
+ During this release ...
 
 Changes to the AMDGPU Target
 -----------------------------
 
- * Mesa 11.0.x is no longer supported
+ During this release ...
 
+Changes to the AVR Target
+-----------------------------
+
+ During this release ...
 
 Changes to the OCaml bindings
 -----------------------------
 
- During this release ...
+* Remove ``add_bb_vectorize``.
+
 
-Support for attribute 'notail' has been added
----------------------------------------------
+Changes to the C API
+--------------------
 
-This marker prevents optimization passes from adding 'tail' or
-'musttail' markers to a call. It is used to prevent tail call
-optimization from being performed on the call.
+* Remove ``LLVMAddBBVectorizePass``. The implementation was removed and the C
+  interface was made a deprecated no-op in LLVM 5. Use
+  ``LLVMAddSLPVectorizePass`` instead to get the supported SLP vectorizer.
 
-External Open Source Projects Using LLVM 3.9
-============================================
 
-An exciting aspect of LLVM is that it is used as an enabling technology for
-a lot of other language and tools projects. This section lists some of the
-projects that have already been updated to work with LLVM 3.9.
+External Open Source Projects Using LLVM 7
+==========================================
 
-* A project
+* A project...
 
 
 Additional Information
@@ -174,4 +175,3 @@ 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>`_.
-