1========================= 2LLVM 13.0.0 Release Notes 3========================= 4 5.. contents:: 6 :local: 7 8.. warning:: 9 These are in-progress notes for the upcoming LLVM 13 release. 10 Release notes for previous releases can be found on 11 `the Download Page <https://releases.llvm.org/download.html>`_. 12 13 14Introduction 15============ 16 17This document contains the release notes for the LLVM Compiler Infrastructure, 18release 13.0.0. Here we describe the status of LLVM, including major improvements 19from the previous release, improvements in various subprojects of LLVM, and 20some of the current users of the code. All LLVM releases may be downloaded 21from the `LLVM releases web site <https://llvm.org/releases/>`_. 22 23For more information about LLVM, including information about the latest 24release, please check out the `main LLVM web site <https://llvm.org/>`_. If you 25have questions or comments, the `LLVM Developer's Mailing List 26<https://lists.llvm.org/mailman/listinfo/llvm-dev>`_ is a good place to send 27them. 28 29Note that if you are reading this file from a Git checkout or the main 30LLVM web page, this document applies to the *next* release, not the current 31one. To see the release notes for a specific release, please see the `releases 32page <https://llvm.org/releases/>`_. 33 34Non-comprehensive list of changes in this release 35================================================= 36.. NOTE 37 For small 1-3 sentence descriptions, just add an entry at the end of 38 this list. If your description won't fit comfortably in one bullet 39 point (e.g. maybe you would like to give an example of the 40 functionality, or simply have a lot to talk about), see the `NOTE` below 41 for adding a new subsection. 42 43 44.. NOTE 45 If you would like to document a larger change, then you can add a 46 subsection about it right here. You can copy the following boilerplate 47 and un-indent it (the indentation causes it to be inside this comment). 48 49 Special New Feature 50 ------------------- 51 52 Makes programs 10x faster by doing Special New Thing. 53 54* Windows Control-flow Enforcement Technology: the ``-ehcontguard`` option now 55 emits valid unwind entrypoints which are validated when the context is being 56 set during exception handling. 57 58* Flang is now included in the binary packages released by LLVM. 59 60* The debuginfo-test project has been renamed cross-project-tests and is now 61 intended for testing components from multiple projects, not just debug 62 information. The new "cross-project-tests" name replaces "debuginfo-test" in 63 LLVM_ENABLE_PROJECTS, and a new check-cross-project-tests target has been 64 added for running all tests in the project. The pre-existing check-debuginfo- 65 test target remains for running just the debug information tests. 66 (`D95339 <https://reviews.llvm.org/D95339>`_ and 67 `D96513 <https://reviews.llvm.org/D96513>`_) 68 69Changes to the LLVM IR 70---------------------- 71 72* The ``inalloca`` attribute now has a mandatory type field, similar 73 to ``byval`` and ``sret``. 74 75* The opaque pointer type ``ptr`` has been introduced. It is still in the 76 process of being worked on and should not be used yet. 77 78* Using the legacy pass manager for the optimization pipeline is deprecated and 79 will be removed after LLVM 14. In the meantime, only minimal effort will be 80 made to maintain the legacy pass manager for the optimization pipeline. 81 82Changes to building LLVM 83------------------------ 84 85* The build system now supports building multiple distributions, so that you can 86 e.g. have one distribution containing just tools and another for libraries (to 87 enable development). See :ref:`Multi-distribution configurations` for details. 88 89Changes to TableGen 90------------------- 91 92Changes to the AArch64 Backend 93------------------------------ 94 95* Introduced assembly support for Armv9-A's Realm Management Extension (RME) 96 and Scalable Matrix Extension (SME). 97 98* Produce proper cross-section relative relocations on COFF 99 100* Fixed the calling convention on Windows for variadic functions involving 101 floats in the fixed arguments 102 103Changes to the ARM Backend 104-------------------------- 105 106* Produce proper cross-section relative relocations on COFF 107 108Changes to the MIPS Target 109-------------------------- 110 111During this release ... 112 113Changes to the Hexagon Target 114----------------------------- 115 116* The Hexagon target now supports V68/HVX ISA. 117 118Changes to the PowerPC Target 119----------------------------- 120 121During this release ... 122 123Changes to the X86 Target 124------------------------- 125 126During this release ... 127 128Changes to the AMDGPU Target 129----------------------------- 130 131During this release ... 132 133Changes to the AVR Target 134----------------------------- 135 136During this release ... 137 138Changes to the WebAssembly Target 139--------------------------------- 140 141During this release ... 142 143Changes to the OCaml bindings 144----------------------------- 145 146 147Changes to the C API 148-------------------- 149 150* The C API functions ``LLVMGetAlignment`` and ``LLVMSetAlignment`` now allow 151 changing alignment on atomicrmw and cmpxchg instructions 152 153* A new entry ``LLVMDIArgListMetadataKind`` was added to the 154 ``LLVMMetadataKind`` enum, representing DIArgLists 155 (`D88175 <https://reviews.llvm.org/D88175>`_) 156 157* Type attributes have been added to LLVM-C, introducing 158 LLVMCreateTypeAttribute, LLVMGetTypeAttributeValue and LLVMIsTypeAttribute. 159 (`D977763' <https://reviews.llvm.org/D97763>`_) 160 161* The ``LTO_API_VERSION`` was bumped to 28, introducing a new function 162 ``lto_set_debug_options`` for parsing LTO debug options 163 (`D92611 <https://reviews.llvm.org/D92611>`_) 164 165* ``LLVMJITTargetSymbolFlags`` was renamed to ``LLVMJITSymbolTargetFlags`` 166 (`rG8d718a0bff73af066675a6258c01307937c33cf9 167 <https://reviews.llvm.org/rG8d718a0bff73af066675a6258c01307937c33cf9>`_) 168 169* The C API received support for creating custom ORCv2 MaterializationUnits and 170 APIs to retrieve an LLJIT instance's linking layers. An ABI breaking change 171 for ``LLVMOrcAbsoluteSymbols`` was introduced to make it consistent with 172 ``LLVMOrcCreateCustomMaterializationUnit``. 173 (`rGc8fc5e3ba942057d6c4cdcd1faeae69a28e7b671 174 <https://reviews.llvm.org/rGc8fc5e3ba942057d6c4cdcd1faeae69a28e7b671>`_) 175 176* The C API received support for adding ORCv2 object buffers directly to an object 177 layer. (`rG7b73cd684a8d5fb44d34064200f10e2723085c33 178 <https://reviews.llvm.org/rG7b73cd684a8d5fb44d34064200f10e2723085c33>`_) 179 180* A breaking change to ``LLVMGetInlineAsm`` was introduced, adding a ninth 181 argument ``LLVMBool CanThrow`` (`D95745 <https://reviews.llvm.org/D95745>`_) 182 183* The C API received support for calling into the new pass manager. 184 (`D102136 <https://reviews.llvm.org/D102136>`_) 185 186* The C API function ``LLVMIntrinsicCopyOverloadedName`` has been deprecated. 187 Please migrate to ``LLVMIntrinsicCopyOverloadedName2`` which takes an extra 188 module argument and which also handles unnamed types. 189 (`D99173 <https://reviews.llvm.org/D99173>`_) 190 191* The C API received support for dumping objects from ORCv2 192 (`rGcec8e69f01c3374cb38c6683058381b96fab8f89 193 <https://reviews.llvm.org/rGcec8e69f01c3374cb38c6683058381b96fab8f89>`_) 194 195* A breaking change to ``LLVMOrcObjectTransformLayerTransformFunction`` was 196 introduced, changing the order of the function pointer's arguments. 197 (`rG8962c68ad007a525f9daa987c99eda57e0d0069a 198 <https://reviews.llvm.org/rG8962c68ad007a525f9daa987c99eda57e0d0069a>`_) 199 200* The C API received support for accessing utilities from the LLJIT 201 ``IRTransformLayer`` and ``ThreadSafeModule`` classes. (`D103855 202 <https://reviews.llvm.org/D103855>`_) 203 204* The C API received support for creating lazy-export MaterializationUnits 205 (`D104672 <https://reviews.llvm.org/D104672>`_) 206 207* The C API function ``LLVMPassBuilderOptionsSetCoroutines`` was removed because 208 couroutine passes have been enabled by default. (`D105877 209 <https://reviews.llvm.org/D105877>`_) 210 211* ``comdat noduplicates`` was renamed to ``comdat nodeduplicate`` and as a 212 result, ``LLVMNoDuplicatesComdatSelectionKind`` was renamed to 213 ``LLVMNoDeduplicateComdatSelectionKind``. (`D106319 214 <https://reviews.llvm.org/D106319>`_) 215 216Changes to the Go bindings 217-------------------------- 218 219 220Changes to the FastISel infrastructure 221-------------------------------------- 222 223* FastISel no longer tracks killed registers, and instead leaves this to the 224 register allocator. This means that ``hasTrivialKill()`` is removed, as well 225 as the ``OpNIsKill`` parameters to the ``fastEmit_*()`` family of functions. 226 227Changes to the DAG infrastructure 228--------------------------------- 229 230 231Changes to the Debug Info 232--------------------------------- 233 234During this release ... 235 236Changes to the LLVM tools 237--------------------------------- 238 239* The options ``--build-id-link-{dir,input,output}`` have been deleted. 240 (`D96310 <https://reviews.llvm.org/D96310>`_) 241 242* Support for in-order processors has been added to ``llvm-mca``. 243 (`D94928 <https://reviews.llvm.org/D94928>`_) 244 245* llvm-objdump supports ``-M {att,intel}`` now. 246 ``--x86-asm-syntax`` is a deprecated internal option which will be removed in LLVM 14.0.0. 247 (`D101695 <https://reviews.llvm.org/D101695>`_) 248 249* The llvm-readobj short aliases ``-s`` (previously ``--sections``) and ``-t`` 250 (previously ``--syms``) have been changed to ``--syms`` and 251 ``--section-details`` respectively, to match llvm-readelf. 252 (`D105055 <https://reviews.llvm.org/D105055>`_) 253 254* The llvm-nm short aliases ``-M`` (``--print-armap``), ``-U`` 255 (``--defined-only``), and ``-W`` (``--no-weak``) are now deprecated. 256 Use the long form versions instead. 257 The alias ``--just-symbol-name`` is now deprecated in favor of 258 ``--format=just-symbols`` and ``-j``. 259 (`D105330 <https://reviews.llvm.org/D105330>`_) 260 261* In lli the default JIT engine switched from MCJIT (``-jit-kind=mcjit``) to ORC (``-jit-kind=orc``). 262 (`D98931 <https://reviews.llvm.org/D98931>`_) 263 264* llvm-rc got support for invoking Clang to preprocess its input. 265 (`D100755 <https://reviews.llvm.org/D100755>`_) 266 267* llvm-rc got a GNU windres compatible frontend, llvm-windres. 268 (`D100756 <https://reviews.llvm.org/D100756>`_) 269 270* llvm-ml has improved compatibility with MS ml.exe, managing to assemble 271 more asm files. 272 273Changes to LLDB 274--------------------------------- 275 276* LLDB executable is now included in pre-built LLVM binaries. 277 278* LLDB now includes full featured support for AArch64 SVE register access. 279 280* LLDB now supports AArch64 Pointer Authentication, allowing stack unwind with signed return address. 281 282* LLDB now supports debugging programs on AArch64 Linux that use memory tagging (MTE). 283* Added ``memory tag read`` and ``memory tag write`` commands. 284* The ``memory region`` command will note when a region has memory tagging enabled. 285* Synchronous and asynchronous tag faults are recognised. 286* Synchronous tag faults have memory tag annotations in addition to the usual fault address. 287 288Changes to Sanitizers 289--------------------- 290 291External Open Source Projects Using LLVM 13 292=========================================== 293 294* A project... 295 296Additional Information 297====================== 298 299A wide variety of additional information is available on the `LLVM web page 300<https://llvm.org/>`_, in particular in the `documentation 301<https://llvm.org/docs/>`_ section. The web page also contains versions of the 302API documentation which is up-to-date with the Git version of the source 303code. You can access versions of these documents specific to this release by 304going into the ``llvm/docs/`` directory in the LLVM tree. 305 306If you have any questions or comments about LLVM, please feel free to contact 307us via the `mailing lists <https://llvm.org/docs/#mailing-lists>`_. 308