486 lines
20 KiB
ReStructuredText
486 lines
20 KiB
ReStructuredText
|
============================
|
||
|
LLVM |release| Release Notes
|
||
|
============================
|
||
|
|
||
|
.. contents::
|
||
|
:local:
|
||
|
|
||
|
.. only:: PreRelease
|
||
|
|
||
|
.. warning::
|
||
|
These are in-progress notes for the upcoming LLVM |version| release.
|
||
|
Release notes for previous releases can be found on
|
||
|
`the Download Page <https://releases.llvm.org/download.html>`_.
|
||
|
|
||
|
|
||
|
Introduction
|
||
|
============
|
||
|
|
||
|
This document contains the release notes for the LLVM Compiler Infrastructure,
|
||
|
release |release|. 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 <https://llvm.org/releases/>`_.
|
||
|
|
||
|
For more information about LLVM, including information about the latest
|
||
|
release, please check out the `main LLVM web site <https://llvm.org/>`_. If you
|
||
|
have questions or comments, the `Discourse forums
|
||
|
<https://discourse.llvm.org>`_ is a good place to ask
|
||
|
them.
|
||
|
|
||
|
Note that if you are reading this file from a Git checkout or the main
|
||
|
LLVM web page, this document applies to the *next* release, not the current
|
||
|
one. To see the release notes for a specific release, please see the `releases
|
||
|
page <https://llvm.org/releases/>`_.
|
||
|
|
||
|
Non-comprehensive list of changes in this release
|
||
|
=================================================
|
||
|
.. 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.
|
||
|
|
||
|
* ...
|
||
|
|
||
|
Update on required toolchains to build LLVM
|
||
|
-------------------------------------------
|
||
|
|
||
|
Changes to the LLVM IR
|
||
|
----------------------
|
||
|
|
||
|
* The `llvm.stacksave` and `llvm.stackrestore` intrinsics now use
|
||
|
an overloaded pointer type to support non-0 address spaces.
|
||
|
* The constant expression variants of the following instructions have been
|
||
|
removed:
|
||
|
|
||
|
* ``and``
|
||
|
* ``or``
|
||
|
* ``lshr``
|
||
|
* ``ashr``
|
||
|
* ``zext``
|
||
|
* ``sext``
|
||
|
* ``fptrunc``
|
||
|
* ``fpext``
|
||
|
* ``fptoui``
|
||
|
* ``fptosi``
|
||
|
* ``uitofp``
|
||
|
* ``sitofp``
|
||
|
|
||
|
* Added `llvm.exp10` intrinsic.
|
||
|
|
||
|
* Added a ``code_model`` attribute for the `global variable <LangRef.html#global-variables>`_.
|
||
|
|
||
|
Changes to LLVM infrastructure
|
||
|
------------------------------
|
||
|
|
||
|
* Minimum Clang version to build LLVM in C++20 configuration has been updated to clang-17.0.6.
|
||
|
|
||
|
Changes to building LLVM
|
||
|
------------------------
|
||
|
|
||
|
Changes to TableGen
|
||
|
-------------------
|
||
|
|
||
|
* Added constructs for debugging TableGen files:
|
||
|
|
||
|
* `dump` keyword to dump messages to standard error, see
|
||
|
https://github.com/llvm/llvm-project/pull/68793.
|
||
|
* `!repr` bang operator to inspect the content of values, see
|
||
|
https://github.com/llvm/llvm-project/pull/68716.
|
||
|
|
||
|
Changes to Interprocedural Optimizations
|
||
|
----------------------------------------
|
||
|
|
||
|
Changes to the AArch64 Backend
|
||
|
------------------------------
|
||
|
|
||
|
* Added support for Cortex-A520, Cortex-A720 and Cortex-X4 CPUs.
|
||
|
|
||
|
* Neoverse-N2 was incorrectly marked as an Armv8.5a core. This has been
|
||
|
changed to an Armv9.0a core. However, crypto options are not enabled
|
||
|
by default for Armv9 cores, so `-mcpu=neoverse-n2+crypto` is now required
|
||
|
to enable crypto for this core. As far as the compiler is concerned,
|
||
|
Armv9.0a has the same features enabled as Armv8.5a, with the exception
|
||
|
of crypto.
|
||
|
|
||
|
* Assembler/disassembler support has been added for 2023 architecture
|
||
|
extensions.
|
||
|
|
||
|
* Support has been added for Stack Clash Protection. During function frame
|
||
|
creation and dynamic stack allocations, the compiler will issue memory
|
||
|
accesses at reguilar intervals so that a guard area at the top of the stack
|
||
|
can't be skipped over.
|
||
|
|
||
|
Changes to the AMDGPU Backend
|
||
|
-----------------------------
|
||
|
|
||
|
* `llvm.sqrt.f32` is now lowered correctly. Use `llvm.amdgcn.sqrt.f32`
|
||
|
for raw instruction access.
|
||
|
|
||
|
* Implemented `llvm.stacksave` and `llvm.stackrestore` intrinsics.
|
||
|
|
||
|
* Implemented :ref:`llvm.get.rounding <int_get_rounding>`
|
||
|
|
||
|
* The default :ref:`AMDHSA code object version <amdgpu-amdhsa-code-object-metadata-v5>` is now 5.
|
||
|
|
||
|
Changes to the ARM Backend
|
||
|
--------------------------
|
||
|
|
||
|
* Added support for Cortex-M52 CPUs.
|
||
|
* Added execute-only support for Armv6-M.
|
||
|
|
||
|
Changes to the AVR Backend
|
||
|
--------------------------
|
||
|
|
||
|
Changes to the DirectX Backend
|
||
|
------------------------------
|
||
|
|
||
|
Changes to the Hexagon Backend
|
||
|
------------------------------
|
||
|
|
||
|
Changes to the LoongArch Backend
|
||
|
--------------------------------
|
||
|
|
||
|
* Added intrinsics support for all LSX (128-bits SIMD) and LASX (256-bits SIMD)
|
||
|
instructions.
|
||
|
* Added definition and intrinsics support for new instructions that were
|
||
|
introduced in LoongArch Reference Manual V1.10.
|
||
|
* Emitted adjacent ``pcaddu18i+jirl`` instrunction sequence with one relocation
|
||
|
``R_LARCH_CALL36`` instead of ``pcalau12i+jirl`` with two relocations
|
||
|
``R_LARCH_PCALA_{HI20,LO12}`` for function call in medium code model.
|
||
|
* The code model of global variables can now be overridden by means of the newly
|
||
|
added LLVM IR attribute, ``code_model``.
|
||
|
* Added support for the ``llvm.is.fpclass`` intrinsic.
|
||
|
* ``mulodi4`` and ``muloti4`` libcalls were disabled due to absence in libgcc.
|
||
|
* Added initial support for auto vectorization.
|
||
|
* Added initial support for linker relaxation.
|
||
|
* Assorted codegen improvements.
|
||
|
|
||
|
Changes to the MIPS Backend
|
||
|
---------------------------
|
||
|
|
||
|
Changes to the PowerPC Backend
|
||
|
------------------------------
|
||
|
|
||
|
* LLJIT's JIT linker now defaults to JITLink on 64-bit ELFv2 targets.
|
||
|
* Initial-exec TLS model is supported on AIX.
|
||
|
* Implemented new resource based scheduling model of POWER7 and POWER8.
|
||
|
* ``frexp`` libcall now references correct symbol name for ``fp128``.
|
||
|
* Optimized materialization of 64-bit immediates, code generation of
|
||
|
``vec_promote`` and atomics.
|
||
|
* Global constant strings are pooled in the TOC under one entry to reduce the
|
||
|
number of entries in the TOC.
|
||
|
* Added a number of missing Power10 extended mnemonics.
|
||
|
* Added the SCV instruction.
|
||
|
* Fixed register class for the paddi instruction.
|
||
|
* Optimize VPERM and fix code order for swapping vector operands on LE.
|
||
|
* Added various bug fixes and code gen improvements.
|
||
|
|
||
|
AIX Support/improvements:
|
||
|
|
||
|
* Support for a non-TOC-based access sequence for the local-exec TLS model (called small local-exec).
|
||
|
* XCOFF toc-data peephole optimization and bug fixes.
|
||
|
* Move less often used __ehinfo TOC entries to the end of the TOC section.
|
||
|
* Fixed problems when the AIX libunwind unwinds starting from a signal handler
|
||
|
and the function that raised the signal happens to be a leaf function that
|
||
|
shares the stack frame with its caller or a leaf function that does not store
|
||
|
the stack frame backchain.
|
||
|
|
||
|
Changes to the RISC-V Backend
|
||
|
-----------------------------
|
||
|
|
||
|
* The Zfa extension version was upgraded to 1.0 and is no longer experimental.
|
||
|
* Zihintntl extension version was upgraded to 1.0 and is no longer experimental.
|
||
|
* Intrinsics were added for Zk*, Zbb, and Zbc. See https://github.com/riscv-non-isa/riscv-c-api-doc/blob/master/riscv-c-api.md#scalar-bit-manipulation-extension-intrinsics
|
||
|
* Default ABI with F but without D was changed to ilp32f for RV32 and to lp64f for RV64.
|
||
|
* The Zvbb, Zvbc, Zvkb, Zvkg, Zvkn, Zvknc, Zvkned, Zvkng, Zvknha, Zvknhb, Zvks,
|
||
|
Zvksc, Zvksed, Zvksg, Zvksh, and Zvkt extension version was upgraded to 1.0
|
||
|
and is no longer experimental. However, the C intrinsics for these extensions
|
||
|
are still experimental. To use the C intrinsics for these extensions,
|
||
|
``-menable-experimental-extensions`` needs to be passed to Clang.
|
||
|
* XSfcie extension and SiFive CSRs and instructions that were associated with
|
||
|
it have been removed. None of these CSRs and instructions were part of
|
||
|
"SiFive Custom Instruction Extension" as SiFive defines it. The LLVM project
|
||
|
needs to work with SiFive to define and document real extension names for
|
||
|
individual CSRs and instructions.
|
||
|
* ``-mcpu=sifive-p450`` was added.
|
||
|
* CodeGen of RV32E/RV64E was supported experimentally.
|
||
|
* CodeGen of ilp32e/lp64e was supported experimentally.
|
||
|
* Support was added for the Ziccif, Ziccrse, Ziccamoa, Zicclsm, Za64rs, Za128rs
|
||
|
and Zic64b extensions which were introduced as a part of the RISC-V Profiles
|
||
|
specification.
|
||
|
* The Smepmp 1.0 extension is now supported.
|
||
|
* ``-mcpu=sifive-p670`` was added.
|
||
|
* Support for the Zicond extension is no longer experimental.
|
||
|
|
||
|
Changes to the SystemZ Backend
|
||
|
------------------------------
|
||
|
|
||
|
* Properly support 16 byte atomic int/fp types and ops.
|
||
|
* Support i128 as legal type in VRs.
|
||
|
* Add an i128 cost model.
|
||
|
* Support building individual functions with backchain using the
|
||
|
__attribute__((target("backchain"))) syntax.
|
||
|
* Add exception handling for XPLINK.
|
||
|
* Add support for llvm-objcopy.
|
||
|
|
||
|
Changes to the WebAssembly Backend
|
||
|
----------------------------------
|
||
|
|
||
|
Changes to the Windows Target
|
||
|
-----------------------------
|
||
|
|
||
|
* The LLVM filesystem class ``UniqueID`` and function ``equivalent()``
|
||
|
no longer determine that distinct different path names for the same
|
||
|
hard linked file actually are equal. This is an intentional tradeoff in a
|
||
|
bug fix, where the bug used to cause distinct files to be considered
|
||
|
equivalent on some file systems. This change fixed the issues
|
||
|
https://github.com/llvm/llvm-project/issues/61401 and
|
||
|
https://github.com/llvm/llvm-project/issues/22079.
|
||
|
|
||
|
Changes to the X86 Backend
|
||
|
--------------------------
|
||
|
|
||
|
* The ``i128`` type now matches GCC and clang's ``__int128`` type. This mainly
|
||
|
benefits external projects such as Rust which aim to be binary compatible
|
||
|
with C, but also fixes code generation where LLVM already assumed that the
|
||
|
type matched and called into libgcc helper functions.
|
||
|
* Support ISA of ``USER_MSR``.
|
||
|
* Support ISA of ``AVX10.1-256`` and ``AVX10.1-512``.
|
||
|
* ``-mcpu=pantherlake`` and ``-mcpu=clearwaterforest`` are now supported.
|
||
|
* ``-mapxf`` is supported.
|
||
|
* Marking global variables with ``code_model = "small"/"large"`` in the IR now
|
||
|
overrides the global code model to allow 32-bit relocations or require 64-bit
|
||
|
relocations to the global variable.
|
||
|
* The medium code model's code generation was audited to be more similar to the
|
||
|
small code model where possible.
|
||
|
|
||
|
Changes to the OCaml bindings
|
||
|
-----------------------------
|
||
|
|
||
|
Changes to the Python bindings
|
||
|
------------------------------
|
||
|
|
||
|
* The python bindings have been removed.
|
||
|
|
||
|
|
||
|
Changes to the C API
|
||
|
--------------------
|
||
|
|
||
|
* Added ``LLVMGetTailCallKind`` and ``LLVMSetTailCallKind`` to
|
||
|
allow getting and setting ``tail``, ``musttail``, and ``notail``
|
||
|
attributes on call instructions.
|
||
|
* 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:
|
||
|
|
||
|
* ``LLVMConstAnd``
|
||
|
* ``LLVMConstOr``
|
||
|
* ``LLVMConstLShr``
|
||
|
* ``LLVMConstAShr``
|
||
|
* ``LLVMConstZExt``
|
||
|
* ``LLVMConstSExt``
|
||
|
* ``LLVMConstZExtOrBitCast``
|
||
|
* ``LLVMConstSExtOrBitCast``
|
||
|
* ``LLVMConstIntCast``
|
||
|
* ``LLVMConstFPTrunc``
|
||
|
* ``LLVMConstFPExt``
|
||
|
* ``LLVMConstFPToUI``
|
||
|
* ``LLVMConstFPToSI``
|
||
|
* ``LLVMConstUIToFP``
|
||
|
* ``LLVMConstSIToFP``
|
||
|
* ``LLVMConstFPCast``
|
||
|
|
||
|
* Added ``LLVMCreateTargetMachineWithOptions``, along with helper functions for
|
||
|
an opaque option structure, as an alternative to ``LLVMCreateTargetMachine``.
|
||
|
The option structure exposes an additional setting (i.e., the target ABI) and
|
||
|
provides default values for unspecified settings.
|
||
|
|
||
|
* Added ``LLVMGetNNeg`` and ``LLVMSetNNeg`` for getting/setting the new nneg flag
|
||
|
on zext instructions, and ``LLVMGetIsDisjoint`` and ``LLVMSetIsDisjoint``
|
||
|
for getting/setting the new disjoint flag on or instructions.
|
||
|
|
||
|
* Added the following functions for manipulating operand bundles, as well as
|
||
|
building ``call`` and ``invoke`` instructions that use operand bundles:
|
||
|
|
||
|
* ``LLVMBuildCallWithOperandBundles``
|
||
|
* ``LLVMBuildInvokeWithOperandBundles``
|
||
|
* ``LLVMCreateOperandBundle``
|
||
|
* ``LLVMDisposeOperandBundle``
|
||
|
* ``LLVMGetNumOperandBundles``
|
||
|
* ``LLVMGetOperandBundleAtIndex``
|
||
|
* ``LLVMGetNumOperandBundleArgs``
|
||
|
* ``LLVMGetOperandBundleArgAtIndex``
|
||
|
* ``LLVMGetOperandBundleTag``
|
||
|
|
||
|
* Added ``LLVMGetFastMathFlags`` and ``LLVMSetFastMathFlags`` for getting/setting
|
||
|
the fast-math flags of an instruction, as well as ``LLVMCanValueUseFastMathFlags``
|
||
|
for checking if an instruction can use such flags
|
||
|
|
||
|
Changes to the CodeGen infrastructure
|
||
|
-------------------------------------
|
||
|
|
||
|
* A new debug type ``isel-dump`` is added to show only the SelectionDAG dumps
|
||
|
after each ISel phase (i.e. ``-debug-only=isel-dump``). This new debug type
|
||
|
can be filtered by function names using ``-filter-print-funcs=<function names>``,
|
||
|
the same flag used to filter IR dumps after each Pass. Note that the existing
|
||
|
``-debug-only=isel`` will take precedence over the new behavior and
|
||
|
print SelectionDAG dumps of every single function regardless of
|
||
|
``-filter-print-funcs``'s values.
|
||
|
|
||
|
* ``PrologEpilogInserter`` no longer supports register scavenging
|
||
|
during forwards frame index elimination. Targets should use
|
||
|
backwards frame index elimination instead.
|
||
|
|
||
|
* ``RegScavenger`` no longer supports forwards register
|
||
|
scavenging. Clients should use backwards register scavenging
|
||
|
instead, which is preferred because it does not depend on accurate
|
||
|
kill flags.
|
||
|
|
||
|
Changes to the Metadata Info
|
||
|
---------------------------------
|
||
|
* Added a new loop metadata `!{!"llvm.loop.align", i32 64}`
|
||
|
|
||
|
Changes to the Debug Info
|
||
|
---------------------------------
|
||
|
|
||
|
Changes to the LLVM tools
|
||
|
---------------------------------
|
||
|
|
||
|
* ``llvm-symbolizer`` now treats invalid input as an address for which source
|
||
|
information is not found.
|
||
|
* Fixed big-endian support in ``llvm-symbolizer``'s DWARF location parser.
|
||
|
* ``llvm-readelf`` now supports ``--extra-sym-info`` (``-X``) to display extra
|
||
|
information (section name) when showing symbols.
|
||
|
* ``llvm-readobj``/``llvm-readelf`` now supports ``--decompress``/``-z`` with
|
||
|
string and hex dump for ELF object files.
|
||
|
|
||
|
* ``llvm-symbolizer`` and ``llvm-addr2line`` now support addresses specified as symbol names.
|
||
|
|
||
|
* ``llvm-objcopy`` now supports ``--gap-fill`` and ``--pad-to`` options, for
|
||
|
ELF input and binary output files only.
|
||
|
* ``llvm-objcopy`` now supports ``-O elf64-s390`` for SystemZ.
|
||
|
|
||
|
* Supported parsing XCOFF auxiliary symbols in ``obj2yaml``.
|
||
|
|
||
|
* ``llvm-ranlib`` now supports ``-X`` on AIX to specify the type of object file
|
||
|
ranlib should examine.
|
||
|
|
||
|
* ``llvm-cxxfilt`` now supports ``--no-params``/``-p`` to skip function
|
||
|
parameters.
|
||
|
|
||
|
* ``llvm-nm`` now supports ``--export-symbol`` to ignore the import symbol file.
|
||
|
* ``llvm-nm`` now supports the ``--line-numbers`` (``-l``) option to use
|
||
|
debugging information to print symbols' filenames and line numbers.
|
||
|
|
||
|
* ``llvm-rc`` and ``llvm-windres`` now accept file path references in ``.rc`` files
|
||
|
concatenated from multiple string literals.
|
||
|
|
||
|
* The ``llvm-windres`` option ``--preprocessor`` now resolves its argument
|
||
|
in the ``PATH`` environment variable as expected, and options passed with
|
||
|
``--preprocessor-arg`` are placed before the input file as they should
|
||
|
be.
|
||
|
|
||
|
* The ``llvm-windres`` option ``--preprocessor`` has been updated with the
|
||
|
breaking behaviour change from GNU windres from binutils 2.36, where
|
||
|
the whole argument is considered as one path, not considered as a
|
||
|
sequence of tool name and parameters.
|
||
|
|
||
|
Changes to LLDB
|
||
|
---------------------------------
|
||
|
|
||
|
* ``SBWatchpoint::GetHardwareIndex`` is deprecated and now returns -1
|
||
|
to indicate the index is unavailable.
|
||
|
* Methods in SBHostOS related to threads have had their implementations
|
||
|
removed. These methods will return a value indicating failure.
|
||
|
* ``SBType::FindDirectNestedType`` function is added. It's useful
|
||
|
for formatters to quickly find directly nested type when it's known
|
||
|
where to search for it, avoiding more expensive global search via
|
||
|
``SBTarget::FindFirstType``.
|
||
|
* ``lldb-vscode`` was renamed to ``lldb-dap`` and and its installation
|
||
|
instructions have been updated to reflect this. The underlying functionality
|
||
|
remains unchanged.
|
||
|
* The ``mte_ctrl`` register can now be read from AArch64 Linux core files.
|
||
|
* LLDB on AArch64 Linux now supports debugging the Scalable Matrix Extension
|
||
|
(SME) and Scalable Matrix Extension 2 (SME2) for both live processes and core
|
||
|
files. For details refer to the
|
||
|
`AArch64 Linux documentation <https://lldb.llvm.org/use/aarch64-linux.html>`_.
|
||
|
* LLDB now supports symbol and binary acquisition automatically using the
|
||
|
DEBUFINFOD protocol. The standard mechanism of specifying DEBUFINOD servers in
|
||
|
the ``DEBUGINFOD_URLS`` environment variable is used by default. In addition,
|
||
|
users can specify servers to request symbols from using the LLDB setting
|
||
|
``plugin.symbol-locator.debuginfod.server_urls``, override or adding to the
|
||
|
environment variable.
|
||
|
|
||
|
|
||
|
* When running on AArch64 Linux, ``lldb-server`` now provides register
|
||
|
field information for the following registers: ``cpsr``, ``fpcr``,
|
||
|
``fpsr``, ``svcr`` and ``mte_ctrl``. ::
|
||
|
|
||
|
(lldb) register read cpsr
|
||
|
cpsr = 0x80001000
|
||
|
= (N = 1, Z = 0, C = 0, V = 0, SS = 0, IL = 0, <...>
|
||
|
|
||
|
This is only available when ``lldb`` is built with XML support.
|
||
|
Where possible the CPU's capabilities are used to decide which
|
||
|
fields are present, however this is not always possible or entirely
|
||
|
accurate. If in doubt, refer to the numerical value.
|
||
|
|
||
|
* On Windows, LLDB can now read the thread names.
|
||
|
|
||
|
Changes to Sanitizers
|
||
|
---------------------
|
||
|
* HWASan now defaults to detecting use-after-scope bugs.
|
||
|
|
||
|
* `SpecialCaseList <https://clang.llvm.org/docs/SanitizerSpecialCaseList.html#format>`_
|
||
|
used by sanitizer ignore lists (e.g. ``*_ignorelist.txt`` in the Clang
|
||
|
resource directory) now uses glob patterns instead of a variant of POSIX
|
||
|
Extended Regular Expression (where ``*`` is translated to ``.*``) by default.
|
||
|
Search for ``|`` to find patterns that may have different meanings now, and
|
||
|
replace ``a|b`` with ``{a,b}``.
|
||
|
|
||
|
Changes to the Profile Runtime
|
||
|
------------------------------
|
||
|
|
||
|
* Public header ``profile/instr_prof_interface.h`` is added to declare four
|
||
|
API functions to fine tune profile collection.
|
||
|
|
||
|
Other Changes
|
||
|
-------------
|
||
|
|
||
|
* The ``Flags`` field of ``llvm::opt::Option`` has been split into ``Flags``
|
||
|
and ``Visibility`` to simplify option sharing between various drivers (such
|
||
|
as ``clang``, ``clang-cl``, or ``flang``) that rely on Clang's Options.td.
|
||
|
Overloads of ``llvm::opt::OptTable`` that use ``FlagsToInclude`` have been
|
||
|
deprecated. There is a script and instructions on how to resolve conflicts -
|
||
|
see https://reviews.llvm.org/D157150 and https://reviews.llvm.org/D157151 for
|
||
|
details.
|
||
|
|
||
|
* On Linux, FreeBSD, and NetBSD, setting the environment variable
|
||
|
``LLVM_ENABLE_SYMBOLIZER_MARKUP`` causes tools to print stacktraces using
|
||
|
:doc:`Symbolizer Markup <SymbolizerMarkupFormat>`.
|
||
|
This works even if the tools have no embedded symbol information (i.e. are
|
||
|
fully stripped); :doc:`llvm-symbolizer <CommandGuide/llvm-symbolizer>` can
|
||
|
symbolize the markup afterwards using ``debuginfod``.
|
||
|
|
||
|
External Open Source Projects Using LLVM 15
|
||
|
===========================================
|
||
|
|
||
|
* A project...
|
||
|
|
||
|
Additional Information
|
||
|
======================
|
||
|
|
||
|
A wide variety of additional information is available on the `LLVM web page
|
||
|
<https://llvm.org/>`_, in particular in the `documentation
|
||
|
<https://llvm.org/docs/>`_ section. The web page also contains versions of the
|
||
|
API documentation which is up-to-date with the Git version of the source
|
||
|
code. You can access versions of these documents specific to this release by
|
||
|
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 `Discourse forums <https://discourse.llvm.org>`_.
|