Dmitri Gribenko | 38782b8 | 2012-12-09 23:14:26 +0000 | [diff] [blame] | 1 | ====================== |
Bill Wendling | af8c57c | 2013-06-04 06:12:31 +0000 | [diff] [blame] | 2 | LLVM 3.4 Release Notes |
Dmitri Gribenko | 38782b8 | 2012-12-09 23:14:26 +0000 | [diff] [blame] | 3 | ====================== |
| 4 | |
| 5 | .. contents:: |
| 6 | :local: |
| 7 | |
Sean Silva | 1eab30d | 2013-01-20 03:29:50 +0000 | [diff] [blame] | 8 | .. warning:: |
Bill Wendling | af8c57c | 2013-06-04 06:12:31 +0000 | [diff] [blame] | 9 | These are in-progress notes for the upcoming LLVM 3.4 release. You may |
| 10 | prefer the `LLVM 3.3 Release Notes <http://llvm.org/releases/3.3/docs |
Sean Silva | 1eab30d | 2013-01-20 03:29:50 +0000 | [diff] [blame] | 11 | /ReleaseNotes.html>`_. |
Dmitri Gribenko | 38782b8 | 2012-12-09 23:14:26 +0000 | [diff] [blame] | 12 | |
Dmitri Gribenko | 38782b8 | 2012-12-09 23:14:26 +0000 | [diff] [blame] | 13 | |
| 14 | Introduction |
| 15 | ============ |
| 16 | |
| 17 | This document contains the release notes for the LLVM Compiler Infrastructure, |
Bill Wendling | af8c57c | 2013-06-04 06:12:31 +0000 | [diff] [blame] | 18 | release 3.4. Here we describe the status of LLVM, including major improvements |
Dmitri Gribenko | 38782b8 | 2012-12-09 23:14:26 +0000 | [diff] [blame] | 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.cs.uiuc.edu/mailman/listinfo/llvmdev>`_ 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 | |
Sean Silva | 1eab30d | 2013-01-20 03:29:50 +0000 | [diff] [blame] | 34 | Non-comprehensive list of changes in this release |
| 35 | ================================================= |
Dmitri Gribenko | 38782b8 | 2012-12-09 23:14:26 +0000 | [diff] [blame] | 36 | |
Sean Silva | 1eab30d | 2013-01-20 03:29:50 +0000 | [diff] [blame] | 37 | .. NOTE |
| 38 | For small 1-3 sentence descriptions, just add an entry at the end of |
| 39 | this list. If your description won't fit comfortably in one bullet |
| 40 | point (e.g. maybe you would like to give an example of the |
| 41 | functionality, or simply have a lot to talk about), see the `NOTE` below |
| 42 | for adding a new subsection. |
Dmitri Gribenko | 38782b8 | 2012-12-09 23:14:26 +0000 | [diff] [blame] | 43 | |
Chandler Carruth | c089d82 | 2013-11-07 00:23:08 +0000 | [diff] [blame] | 44 | * This is expected to be the last release of LLVM which compiles using a C++98 |
| 45 | toolchain. We expect to start using some C++11 features in LLVM and other |
| 46 | sub-projects starting after this release. That said, we are committed to |
| 47 | supporting a reasonable set of modern C++ toolchains as the host compiler on |
| 48 | all of the platforms. This will at least include Visual Studio 2012 on |
| 49 | Windows, and Clang 3.1 or GCC 4.7.x on Mac and Linux. The final set of |
| 50 | compilers (and the C++11 features they support) is not set in stone, but we |
| 51 | wanted users of LLVM to have a heads up that the next release will involve |
| 52 | a substantial change in the host toolchain requirements. |
| 53 | |
Rafael Espindola | 2a2a097 | 2013-07-26 22:32:58 +0000 | [diff] [blame] | 54 | * The regression tests now fail if any command in a pipe fails. To disable it in |
| 55 | a directory, just add ``config.pipefail = False`` to its ``lit.local.cfg``. |
| 56 | See :doc:`Lit <CommandGuide/lit>` for the details. |
| 57 | |
Bill Wendling | af8c57c | 2013-06-04 06:12:31 +0000 | [diff] [blame] | 58 | * Support for exception handling has been removed from the old JIT. Use MCJIT |
| 59 | if you need EH support. |
Dmitri Gribenko | 38782b8 | 2012-12-09 23:14:26 +0000 | [diff] [blame] | 60 | |
Bill Wendling | af8c57c | 2013-06-04 06:12:31 +0000 | [diff] [blame] | 61 | * The R600 backend is not marked experimental anymore and is built by default. |
Andrew Trick | 1fc397f | 2013-05-07 17:34:35 +0000 | [diff] [blame] | 62 | |
Michael Gottesman | dd6716c | 2013-06-20 18:47:51 +0000 | [diff] [blame] | 63 | * APFloat::isNormal() was renamed to APFloat::isFiniteNonZero() and |
| 64 | APFloat::isIEEENormal() was renamed to APFloat::isNormal(). This ensures that |
| 65 | APFloat::isNormal() conforms to IEEE-754R-2008. |
| 66 | |
Meador Inge | d554a49 | 2013-06-21 03:08:23 +0000 | [diff] [blame] | 67 | * The library call simplification pass has been removed. Its functionality |
| 68 | has been integrated into the instruction combiner and function attribute |
| 69 | marking passes. |
| 70 | |
Ahmed Bougacha | e17ecff | 2013-07-23 17:25:26 +0000 | [diff] [blame] | 71 | * Support for building using Visual Studio 2008 has been dropped. Use VS 2010 |
| 72 | or later instead. For more information, see the `Getting Started using Visual |
Ahmed Bougacha | b08b115 | 2013-07-23 17:32:57 +0000 | [diff] [blame] | 73 | Studio <GettingStartedVS.html>`_ page. |
Ahmed Bougacha | e17ecff | 2013-07-23 17:25:26 +0000 | [diff] [blame] | 74 | |
Nadav Rotem | eae928a | 2013-08-05 04:31:05 +0000 | [diff] [blame] | 75 | * The Loop Vectorizer that was previously enabled for -O3 is now enabled for |
| 76 | -Os and -O2. |
| 77 | |
| 78 | * The new SLP Vectorizer is now enabled by default. |
| 79 | |
Rafael Espindola | b2be0b4 | 2013-08-06 13:16:28 +0000 | [diff] [blame] | 80 | * llvm-ar now uses the new Object library and produces archives and |
| 81 | symbol tables in the gnu format. |
| 82 | |
Matt Arsenault | 72c83a8 | 2013-11-12 08:05:30 +0000 | [diff] [blame] | 83 | * FileCheck now allows specifing -check-prefix multiple times. This |
| 84 | helps reduce duplicate check lines when using multiple RUN lines. |
| 85 | |
Sean Silva | 1eab30d | 2013-01-20 03:29:50 +0000 | [diff] [blame] | 86 | * ... next change ... |
Dmitri Gribenko | 38782b8 | 2012-12-09 23:14:26 +0000 | [diff] [blame] | 87 | |
Sean Silva | 1eab30d | 2013-01-20 03:29:50 +0000 | [diff] [blame] | 88 | .. NOTE |
| 89 | If you would like to document a larger change, then you can add a |
| 90 | subsection about it right here. You can copy the following boilerplate |
| 91 | and un-indent it (the indentation causes it to be inside this comment). |
Dmitri Gribenko | 38782b8 | 2012-12-09 23:14:26 +0000 | [diff] [blame] | 92 | |
Sean Silva | 1eab30d | 2013-01-20 03:29:50 +0000 | [diff] [blame] | 93 | Special New Feature |
| 94 | ------------------- |
Dmitri Gribenko | 38782b8 | 2012-12-09 23:14:26 +0000 | [diff] [blame] | 95 | |
Sean Silva | 1eab30d | 2013-01-20 03:29:50 +0000 | [diff] [blame] | 96 | Makes programs 10x faster by doing Special New Thing. |
Dmitri Gribenko | 38782b8 | 2012-12-09 23:14:26 +0000 | [diff] [blame] | 97 | |
Tim Northover | fb6f08d | 2013-02-13 12:46:32 +0000 | [diff] [blame] | 98 | |
Bill Wendling | af8c57c | 2013-06-04 06:12:31 +0000 | [diff] [blame] | 99 | External Open Source Projects Using LLVM 3.4 |
Pekka Jaaskelainen | b531a11 | 2013-05-03 07:37:04 +0000 | [diff] [blame] | 100 | ============================================ |
| 101 | |
| 102 | An exciting aspect of LLVM is that it is used as an enabling technology for |
| 103 | a lot of other language and tools projects. This section lists some of the |
Bill Wendling | af8c57c | 2013-06-04 06:12:31 +0000 | [diff] [blame] | 104 | projects that have already been updated to work with LLVM 3.4. |
Kai Nacke | 4157b37 | 2013-05-26 17:37:43 +0000 | [diff] [blame] | 105 | |
| 106 | |
Kai Nacke | ec6e392 | 2013-11-14 05:57:40 +0000 | [diff] [blame^] | 107 | LDC - the LLVM-based D compiler |
| 108 | ------------------------------- |
| 109 | |
| 110 | `D <http://dlang.org>`_ is a language with C-like syntax and static typing. It |
| 111 | pragmatically combines efficiency, control, and modeling power, with safety and |
| 112 | programmer productivity. D supports powerful concepts like Compile-Time Function |
| 113 | Execution (CTFE) and Template Meta-Programming, provides an innovative approach |
| 114 | to concurrency and offers many classical paradigms. |
| 115 | |
| 116 | `LDC <http://wiki.dlang.org/LDC>`_ uses the frontend from the reference compiler |
| 117 | combined with LLVM as backend to produce efficient native code. LDC targets |
| 118 | x86/x86_64 systems like Linux, OS X, FreeBSD and Windows and also Linux/PPC64. |
| 119 | Ports to other architectures like ARM and AArch64 are underway. |
| 120 | |
| 121 | |
Dmitri Gribenko | 38782b8 | 2012-12-09 23:14:26 +0000 | [diff] [blame] | 122 | Additional Information |
| 123 | ====================== |
| 124 | |
| 125 | A wide variety of additional information is available on the `LLVM web page |
| 126 | <http://llvm.org/>`_, in particular in the `documentation |
| 127 | <http://llvm.org/docs/>`_ section. The web page also contains versions of the |
| 128 | API documentation which is up-to-date with the Subversion version of the source |
| 129 | code. You can access versions of these documents specific to this release by |
| 130 | going into the ``llvm/docs/`` directory in the LLVM tree. |
| 131 | |
| 132 | If you have any questions or comments about LLVM, please feel free to contact |
| 133 | us via the `mailing lists <http://llvm.org/docs/#maillist>`_. |
| 134 | |