Reference
=========

LLVM and API reference documentation.

.. contents::
   :local:

.. toctree::
   :hidden:

   Atomics
   BitCodeFormat
   BlockFrequencyTerminology
   BranchWeightMetadata
   Bugpoint
   CommandGuide/index
   ContentAddressableStorage
   ConvergenceAndUniformity
   ConvergentOperations
   Coroutines
   DependenceGraphs/index
   ExceptionHandling
   Extensions
   FaultMaps
   FuzzingLLVM
   GarbageCollection
   GetElementPtr
   GlobalISel/index
   GwpAsan
   HowToSetUpLLVMStyleRTTI
   HowToUseAttributes
   InAlloca
   LangRef
   LibFuzzer
   MarkedUpDisassembly
   MIRLangRef
   OptBisect
   PCSectionsMetadata
   PDB/index
   PointerAuth
   ScudoHardenedAllocator
   MemoryModelRelaxationAnnotations
   MemTagSanitizer
   Security
   SecurityTransparencyReports
   SegmentedStacks
   StackMaps
   SpeculativeLoadHardening
   Statepoints
   SymbolizerMarkupFormat
   SystemLibrary
   TestingGuide
   TransformMetadata
   TypeMetadata
   XRay
   XRayExample
   XRayFDRFormat
   YamlIO

API Reference
-------------

`Doxygen generated documentation <https://llvm.org/doxygen/>`_
  (`classes <https://llvm.org/doxygen/inherits.html>`_)

:doc:`HowToUseAttributes`
  Answers some questions about the new Attributes infrastructure.

LLVM Reference
--------------

======================
Command Line Utilities
======================

:doc:`LLVM Command Guide <CommandGuide/index>`
   A reference manual for the LLVM command line utilities ("man" pages for LLVM
   tools).

:doc:`Bugpoint`
   Automatic bug finder and test-case reducer description and usage
   information.

:doc:`OptBisect`
  A command line option for debugging optimization-induced failures.

:doc:`SymbolizerMarkupFormat`
  A reference for the log symbolizer markup accepted by ``llvm-symbolizer``.

:doc:`The Microsoft PDB File Format <PDB/index>`
  A detailed description of the Microsoft PDB (Program Database) file format.

==================
Garbage Collection
==================

:doc:`GarbageCollection`
   The interfaces source-language compilers should use for compiling GC'd
   programs.

:doc:`Statepoints`
  This describes a set of experimental extensions for garbage
  collection support.

=========
LibFuzzer
=========

:doc:`LibFuzzer`
  A library for writing in-process guided fuzzers.

:doc:`FuzzingLLVM`
  Information on writing and using Fuzzers to find bugs in LLVM.

========
LLVM IR
========

:doc:`LLVM Language Reference Manual <LangRef>`
  Defines the LLVM intermediate representation and the assembly form of the
  different nodes.

:doc:`InAlloca`
  Description of the ``inalloca`` argument attribute.

:doc:`BitCodeFormat`
   This describes the file format and encoding used for LLVM "bc" files.

:doc:`Machine IR (MIR) Format Reference Manual <MIRLangRef>`
   A reference manual for the MIR serialization format, which is used to test
   LLVM's code generation passes.

:doc:`GlobalISel/index`
  This describes the prototype instruction selection replacement, GlobalISel.

:doc:`ConvergentOperations`
  Description of ``convergent`` operation semantics and related intrinsics.

=====================
Testing and Debugging
=====================

:doc:`LLVM Testing Infrastructure Guide <TestingGuide>`
   A reference manual for using the LLVM testing infrastructure.

:doc:`TestSuiteGuide`
  Describes how to compile and run the test-suite benchmarks.


:doc:`GwpAsan`
  A sampled heap memory error detection toolkit designed for production use.

====
XRay
====

:doc:`XRay`
  High-level documentation of how to use XRay in LLVM.

:doc:`XRayExample`
  An example of how to debug an application with XRay.

=================
Additional Topics
=================

:doc:`FaultMaps`
  LLVM support for folding control flow into faulting machine instructions.

:doc:`Atomics`
  Information about LLVM's concurrency model.

:doc:`ExceptionHandling`
   This document describes the design and implementation of exception handling
   in LLVM.

:doc:`Extensions`
  LLVM-specific extensions to tools and formats LLVM seeks compatibility with.

:doc:`HowToSetUpLLVMStyleRTTI`
  How to make ``isa<>``, ``dyn_cast<>``, etc. available for clients of your
  class hierarchy.

:doc:`BlockFrequencyTerminology`
   Provides information about terminology used in the ``BlockFrequencyInfo``
   analysis pass.

:doc:`BranchWeightMetadata`
   Provides information about Branch Prediction Information.

:doc:`GetElementPtr`
  Answers to some very frequent questions about LLVM's most frequently
  misunderstood instruction.

:doc:`ScudoHardenedAllocator`
  A library that implements a security-hardened `malloc()`.

:doc:`MemoryModelRelaxationAnnotations`
  Target-defined relaxation to LLVM's concurrency model.

:doc:`MemTagSanitizer`
  Security hardening for production code aiming to mitigate memory
  related vulnerabilities. Based on the Armv8.5-A Memory Tagging Extension.

:doc:`Dependence Graphs <DependenceGraphs/index>`
  A description of the design of the various dependence graphs such as
  the DDG (Data Dependence Graph).

:doc:`SpeculativeLoadHardening`
  A description of the Speculative Load Hardening mitigation for Spectre v1.

:doc:`SegmentedStacks`
   This document describes segmented stacks and how they are used in LLVM.

:doc:`MarkedUpDisassembly`
   This document describes the optional rich disassembly output syntax.

:doc:`StackMaps`
  LLVM support for mapping instruction addresses to the location of
  values and allowing code to be patched.

:doc:`Coroutines`
  LLVM support for coroutines.

:doc:`PointerAuth`
  A description of pointer authentication, its LLVM IR representation, and its
  support in the backend.

:doc:`YamlIO`
   A reference guide for using LLVM's YAML I/O library.

:doc:`ConvergenceAndUniformity`
   A description of uniformity analysis in the presence of irreducible
   control flow, and its implementation.

:doc:`ContentAddressableStorage`
   A reference guide for using LLVM's CAS library.
