diff options
Diffstat (limited to 'llvm/docs/ReleaseNotes.rst')
-rw-r--r-- | llvm/docs/ReleaseNotes.rst | 223 |
1 files changed, 0 insertions, 223 deletions
diff --git a/llvm/docs/ReleaseNotes.rst b/llvm/docs/ReleaseNotes.rst index 90c682fd9c7a..0f48a9fc5685 100644 --- a/llvm/docs/ReleaseNotes.rst +++ b/llvm/docs/ReleaseNotes.rst @@ -42,76 +42,14 @@ Non-comprehensive list of changes in this release functionality, or simply have a lot to talk about), see the `NOTE` below for adding a new subsection. -* The ``readnone`` calls which are crossing suspend points in coroutines will - not be merged. Since ``readnone`` calls may access thread id and thread id - is not a constant in coroutines. This decision may cause unnecessary - performance regressions and we plan to fix it in later versions. - -* The LoongArch target is promoted to "official" (see below for more details). - * ... Update on required toolchains to build LLVM ------------------------------------------- -LLVM is now built with C++17 by default. This means C++17 can be used in -the code base. - -The previous "soft" toolchain requirements have now been changed to "hard". -This means that the the following versions are now required to build LLVM -and there is no way to suppress this error. - -* GCC >= 7.1 -* Clang >= 5.0 -* Apple Clang >= 10.0 -* Visual Studio 2019 >= 16.7 - -With LLVM 16.x we will raise the version requirement of CMake used to build -LLVM. The new requirements are as follows: - -* CMake >= 3.20.0 - -In LLVM 16.x this requirement will be "soft", there will only be a diagnostic. - -With the release of LLVM 17.x this requirement will be hard and LLVM developers -can start using CMake 3.20.0 features, making it impossible to build with older -versions of CMake. - Changes to the LLVM IR ---------------------- -* The ``readnone``, ``readonly``, ``writeonly``, ``argmemonly``, - ``inaccessiblememonly`` and ``inaccessiblemem_or_argmemonly`` function - attributes have been replaced by a single ``memory(...)`` attribute. The - old attributes may be mapped to the new one as follows: - - * ``readnone`` -> ``memory(none)`` - * ``readonly`` -> ``memory(read)`` - * ``writeonly`` -> ``memory(write)`` - * ``argmemonly`` -> ``memory(argmem: readwrite)`` - * ``argmemonly readonly`` -> ``memory(argmem: read)`` - * ``argmemonly writeonly`` -> ``memory(argmem: write)`` - * ``inaccessiblememonly`` -> ``memory(inaccessiblemem: readwrite)`` - * ``inaccessiblememonly readonly`` -> ``memory(inaccessiblemem: read)`` - * ``inaccessiblememonly writeonly`` -> ``memory(inaccessiblemem: write)`` - * ``inaccessiblemem_or_argmemonly`` -> - ``memory(argmem: readwrite, inaccessiblemem: readwrite)`` - * ``inaccessiblemem_or_argmemonly readonly`` -> - ``memory(argmem: read, inaccessiblemem: read)`` - * ``inaccessiblemem_or_argmemonly writeonly`` -> - ``memory(argmem: write, inaccessiblemem: write)`` - -* The constant expression variants of the following instructions has been - removed: - - * ``fneg`` - -* Target extension types have been added, which allow targets to have - types that need to be preserved through the optimizer, but otherwise are not - introspectable by target-independent optimizations. - -* Added ``uinc_wrap`` and ``udec_wrap`` operations to ``atomicrmw``. - Changes to building LLVM ------------------------ @@ -121,40 +59,15 @@ Changes to TableGen Changes to Interprocedural Optimizations ---------------------------------------- -* Function Specialization has been integrated into IPSCCP. -* Specialization of functions has been enabled by default at all - optimization levels except Os, Oz. This has exposed a mis-compilation - in SPEC/CINT2017rate/502.gcc_r when built via the LLVM Test Suite with - both LTO and PGO enabled, but without the option -fno-strict-aliasing. - Changes to the AArch64 Backend ------------------------------ -* Added support for the Cortex-A715 CPU. -* Added support for the Cortex-X3 CPU. -* Added support for the Neoverse V2 CPU. -* Added support for assembly for RME MEC (Memory Encryption Contexts). -* Added codegen support for the Armv8.3 Complex Number extension. -* Implemented `Function Multi Versioning - <https://arm-software.github.io/acle/main/acle.html#function-multi-versioning>`_ - in accordance with Arm C Language Extensions specification. Currently in Beta - state. - Changes to the AMDGPU Backend ----------------------------- Changes to the ARM Backend -------------------------- -* Support for targeting Armv2, Armv2A, Armv3 and Armv3M has been removed. - LLVM did not, and was not ever likely to generate correct code for those - architecture versions so their presence was misleading. -* Added codegen support for the complex arithmetic instructions in MVE. -* Added Armv4 and Armv4T compatible thunks. LLD will no longer generate BX - instructions for Armv4 or BLX instructions for either Armv4 or Armv4T. Armv4T - is now fully supported. -* Added compiler-rt builtins support for Armv4T, Armv5TE and Armv6. - Changes to the AVR Backend -------------------------- @@ -171,19 +84,6 @@ Changes to the Hexagon Backend Changes to the LoongArch Backend -------------------------------- -* The LoongArch target is no longer "experimental"! It's now built by default, - rather than needing to be enabled with ``LLVM_EXPERIMENTAL_TARGETS_TO_BUILD``. - -* The backend has full codegen support for the base (both integer and - floating-point) instruction set and it conforms to psABI v2. Testing has been - performed with Linux, including native compilation of a large corpus of Linux - applications. - -* Support GHC calling convention. - -* Initial JITLink support is added. - (`D141036 <https://reviews.llvm.org/D141036>`_) - Changes to the MIPS Backend --------------------------- @@ -197,12 +97,6 @@ Changes to the PowerPC Backend Changes to the RISC-V Backend ----------------------------- -* Support for the unratified Zbe, Zbf, Zbm, Zbp, Zbr, and Zbt extensions have - been removed. -* i32 is now a native type in the datalayout string. This enables - LoopStrengthReduce for loops with i32 induction variables, among other - optimizations. - Changes to the WebAssembly Backend ---------------------------------- @@ -211,51 +105,9 @@ Changes to the WebAssembly Backend Changes to the Windows Target ----------------------------- -* For MinGW, generate embedded ``-exclude-symbols:`` directives for symbols - with hidden visibility, omitting them from automatic export of all symbols. - This roughly makes hidden visibility work like it does for other object - file formats. - -* When using multi-threaded LLVM tools (such as LLD) on a Windows host with a - large number of processors or CPU sockets, previously the LLVM ThreadPool - would span out threads to use all processors. - Starting with Windows Server 2022 and Windows 11, the behavior has changed, - the OS now spans out threads automatically to all processors. This also fixes - an affinity mask issue. - (`D138747 <https://reviews.llvm.org/D138747>`_) - -* When building LLVM and related tools for Windows with Clang in MinGW mode, - hidden symbol visiblity is now used to reduce the number of exports in - builds with dylibs (``LLVM_BUILD_LLVM_DYLIB`` or ``LLVM_LINK_LLVM_DYLIB``), - making such builds more manageable without running into the limit of - number of exported symbols. - -* AArch64 SEH unwind info generation bugs have been fixed; there were minor - cases of mismatches between the generated unwind info and actual - prologues/epilogues earlier in some cases. - -* AArch64 SEH unwind info is now generated correctly for the AArch64 - security features BTI (Branch Target Identification) and PAC (Pointer - Authentication Code). In particular, using PAC with older versions of LLVM - would generate code that would fail to unwind at runtime, if the host - actually would use the pointer authentication feature. - -* Fixed stack alignment on Windows on AArch64, for stack frames with a - large enough allocation that requires stack probing. - Changes to the X86 Backend -------------------------- -* Add support for the ``RDMSRLIST and WRMSRLIST`` instructions. -* Add support for the ``WRMSRNS`` instruction. -* Support ISA of ``AMX-FP16`` which contains ``tdpfp16ps`` instruction. -* Support ISA of ``CMPCCXADD``. -* Support ISA of ``AVX-IFMA``. -* Support ISA of ``AVX-VNNI-INT8``. -* Support ISA of ``AVX-NE-CONVERT``. -* ``-mcpu=raptorlake``, ``-mcpu=meteorlake`` and ``-mcpu=emeraldrapids`` are now supported. -* ``-mcpu=sierraforest``, ``-mcpu=graniterapids`` and ``-mcpu=grandridge`` are now supported. - Changes to the OCaml bindings ----------------------------- @@ -263,29 +115,6 @@ Changes to the OCaml bindings Changes to the C API -------------------- -* The following functions for creating constant expressions have been removed, - because the underlying constant expressions are no longer supported. Instead, - an instruction should be created using the ``LLVMBuildXYZ`` APIs, which will - constant fold the operands if possible and create an instruction otherwise: - - * ``LLVMConstFNeg`` - - -* The following deprecated functions have been removed, because they are - incompatible with opaque pointers. Use the new functions accepting a separate - function/element type instead. - - * ``LLVMBuildLoad`` -> ``LLVMBuildLoad2`` - * ``LLVMBuildCall`` -> ``LLVMBuildCall2`` - * ``LLVMBuildInvoke`` -> ``LLVMBuildInvoke2`` - * ``LLVMBuildGEP`` -> ``LLVMBuildGEP2`` - * ``LLVMBuildInBoundsGEP`` -> ``LLVMBuildInBoundsGEP2`` - * ``LLVMBuildStructGEP`` -> ``LLVMBuildStructGEP2`` - * ``LLVMBuildPtrDiff`` -> ``LLVMBuildPtrDiff2`` - * ``LLVMConstGEP`` -> ``LLVMConstGEP2`` - * ``LLVMConstInBoundsGEP`` -> ``LLVMConstInBoundsGEP2`` - * ``LLVMAddAlias`` -> ``LLVMAddAlias2`` - Changes to the FastISel infrastructure -------------------------------------- @@ -298,73 +127,21 @@ Changes to the DAG infrastructure Changes to the Metadata Info --------------------------------- -* Add Module Flags Metadata ``stack-protector-guard-symbol`` which specify a - symbol for addressing the stack-protector guard. - Changes to the Debug Info --------------------------------- -Previously when emitting DWARF v4 and tuning for GDB, llc would use DWARF v2's -``DW_AT_bit_offset`` and ``DW_AT_data_member_location``. llc now uses DWARF v4's -``DW_AT_data_bit_offset`` regardless of tuning. - -Support for ``DW_AT_data_bit_offset`` was added in GDB 8.0. For earlier versions, -you can use llc's ``-dwarf-version=3`` option to emit compatible DWARF. - -When emitting CodeView debug information, LLVM will now emit S_CONSTANT records -for variables optimized into a constant via the SROA and SCCP passes. -(`D138995 <https://reviews.llvm.org/D138995>`_) - Changes to the LLVM tools --------------------------------- -* ``llvm-readobj --elf-output-style=JSON`` no longer prefixes each JSON object - with the file name. Previously, each object file's output looked like - ``"main.o":{"FileSummary":{"File":"main.o"},...}`` but is now - ``{"FileSummary":{"File":"main.o"},...}``. This allows each JSON object to be - parsed in the same way, since each object no longer has a unique key. Tools - that consume ``llvm-readobj``'s JSON output should update their parsers - accordingly. - -* ``llvm-objdump`` now uses ``--print-imm-hex`` by default, which brings its - default behavior closer in line with ``objdump``. - -* ``llvm-objcopy`` no longer writes corrupt addresses to empty sections if - the input file had a nonzero address to an empty section. - Changes to LLDB --------------------------------- -* Initial support for debugging Linux LoongArch 64-bit binaries. - -* Improvements in COFF symbol handling; previously a DLL (without any other - debug info) would only use the DLL's exported symbols, while it now also - uses the full list of internal symbols, if available. - -* Avoiding duplicate DLLs in the runtime list of loaded modules on Windows. - Changes to Sanitizers --------------------- -* Many Sanitizers (asan, fuzzer, lsan, safestack, scudo, tsan, ubsan) have - support for Linux LoongArch 64-bit variant. Some of them may be rudimentary. - Other Changes ------------- -* lit no longer supports using substrings of the default target triple as - feature names in ``UNSUPPORTED:`` and ``XFAIL:`` directives. These have been - replaced by the ``target=<triple>`` feature, and tests can use regex - matching to achieve the same effect. For example, ``UNSUPPORTED: arm`` - would now be ``UNSUPPORTED: target=arm{{.*}}`` and ``XFAIL: windows`` - would now be ``XFAIL: target={{.*}}-windows{{.*}}``. - -* When cross compiling LLVM (or building with ``LLVM_OPTIMIZED_TABLEGEN``), - it is now possible to point the build to prebuilt versions of all the - host tools with one CMake variable, ``LLVM_NATIVE_TOOL_DIR``, instead of - having to point out each individual tool with variables such as - ``LLVM_TABLEGEN``, ``CLANG_TABLEGEN``, ``LLDB_TABLEGEN`` etc. - External Open Source Projects Using LLVM 15 =========================================== |