llvm.org GIT mirror llvm / 605e9ee
RelaseNotes: tweaks git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_40@296202 91177308-0d34-0410-b5e6-96231b3b80d8 Hans Wennborg 3 years ago
1 changed file(s) with 28 addition(s) and 30 deletion(s). Raw diff Collapse all Expand all
2121
2222 Non-comprehensive list of changes in this release
2323 =================================================
24 * The C API functions LLVMAddFunctionAttr, LLVMGetFunctionAttr,
25 LLVMRemoveFunctionAttr, LLVMAddAttribute, LLVMRemoveAttribute,
26 LLVMGetAttribute, LLVMAddInstrAttribute and
27 LLVMRemoveInstrAttribute have been removed.
28
29 * The C API enum LLVMAttribute has been deleted.
30
31 * The definition and uses of LLVM_ATRIBUTE_UNUSED_RESULT in the LLVM source
32 were replaced with LLVM_NODISCARD, which matches the C++17 [[nodiscard]]
33 semantics rather than gcc's __attribute__((warn_unused_result)).
34
3524 * Minimum compiler version to build has been raised to GCC 4.8 and VS 2015.
25
26 * The C API functions ``LLVMAddFunctionAttr``, ``LLVMGetFunctionAttr``,
27 ``LLVMRemoveFunctionAttr``, ``LLVMAddAttribute``, ``LLVMRemoveAttribute``,
28 ``LLVMGetAttribute``, ``LLVMAddInstrAttribute`` and
29 ``LLVMRemoveInstrAttribute`` have been removed.
30
31 * The C API enum ``LLVMAttribute`` has been deleted.
32
33 * The definition and uses of ``LLVM_ATRIBUTE_UNUSED_RESULT`` in the LLVM source
34 were replaced with ``LLVM_NODISCARD``, which matches the C++17 ``[[nodiscard]]``
35 semantics rather than gcc's ``__attribute__((warn_unused_result))``.
3636
3737 * The Timer related APIs now expect a Name and Description. When upgrading code
3838 the previously used names should become descriptions and a short name in the
3939 style of a programming language identifier should be added.
4040
41 * LLVM now handles invariant.group across different basic blocks, which makes
41 * LLVM now handles ``invariant.group`` across different basic blocks, which makes
4242 it possible to devirtualize virtual calls inside loops.
4343
44 * The aggressive dead code elimination phase ("adce") now remove
44 * The aggressive dead code elimination phase ("adce") now removes
4545 branches which do not effect program behavior. Loops are retained by
4646 default since they may be infinite but these can also be removed
47 with LLVM option -adce-remove-loops when the loop body otherwise has
47 with LLVM option ``-adce-remove-loops`` when the loop body otherwise has
4848 no live operations.
4949
5050 * The GVNHoist pass is now enabled by default. The new pass based on Global
5151 Value Numbering detects similar computations in branch code and replaces
5252 multiple instances of the same computation with a unique expression. The
5353 transform benefits code size and generates better schedules. GVNHoist is
54 more aggressive at -Os and -Oz, hoisting more expressions at the expense of
55 execution time degradations.
54 more aggressive at ``-Os`` and ``-Oz``, hoisting more expressions at the
55 expense of execution time degradations.
5656
5757 * The llvm-cov tool can now export coverage data as json. Its html output mode
5858 has also improved.
5959
6060 Improvements to ThinLTO (-flto=thin)
6161 ------------------------------------
62 * Integration with profile data (PGO). When available, profile data
63 enables more accurate function importing decisions, as well as
64 cross-module indirect call promotion.
65 * Significant build-time and binary-size improvements when compiling with
66 debug info (-g).
62 Integration with profile data (PGO). When available, profile data
63 enables more accurate function importing decisions, as well as
64 cross-module indirect call promotion.
65
66 Significant build-time and binary-size improvements when compiling with
67 debug info (-g).
6768
6869 LLVM Coroutines
6970 ---------------
7071
7172 Experimental support for :doc:`Coroutines` was added, which can be enabled
72 with ``-enable-coroutines`` in ``opt`` command tool or using
73 with ``-enable-coroutines`` in ``opt`` the command tool or using the
7374 ``addCoroutinePassesToExtensionPoints`` API when building the optimization
7475 pipeline.
7576
8081 Regcall and Vectorcall Calling Conventions
8182 --------------------------------------------------
8283
83 Support was added for _regcall calling convention.
84 Existing __vectorcall calling convention support was extended to include
84 Support was added for ``_regcall`` calling convention.
85 Existing ``__vectorcall`` calling convention support was extended to include
8586 correct handling of HVAs.
8687
87 The __vectorcall calling convention was introduced by Microsoft to
88 The ``__vectorcall`` calling convention was introduced by Microsoft to
8889 enhance register usage when passing parameters.
8990 For more information please read `__vectorcall documentation
9091 `_.
9192
92 The __regcall calling convention was introduced by Intel to
93 The ``__regcall`` calling convention was introduced by Intel to
9394 optimize parameter transfer on function call.
9495 This calling convention ensures that as many values as possible are
9596 passed or returned in registers.
101102
102103 Passes that work on the machine instruction representation can be tested with
103104 the .mir serialization format. ``llc`` supports the ``-run-pass``,
104 ``-stop-after``, ``-stop-before``, ``-start-after``, ``-start-before`` to to
105 ``-stop-after``, ``-stop-before``, ``-start-after``, ``-start-before`` to
105106 run a single pass of the code generation pipeline, or to stop or start the code
106107 generation pipeline at a given point.
107108
184185 removed. Clients may use ``N->getIterator()`` (if not ``nullptr``) or
185186 ``&*I`` (if not ``end()``); alternatively, clients may refactor to use
186187 references for known-good nodes.
187
188 Changes to the LLVM IR
189 ----------------------
190188
191189 Changes to the ARM Targets
192190 --------------------------