blob: 24a3fe88106d43976d9e9b5b941f3a89bdb69b1a [file] [view] [edit]
# Reference
LLVM and API reference documentation.
```{contents}
:local:
```
```{toctree}
:hidden:
HowToUseAttributes
CommandGuide/index
OptBisect
SymbolizerMarkupFormat
PDB/index
GarbageCollection
Statepoints
LibFuzzer
FuzzingLLVM
LangRef
UndefinedBehavior
InAlloca
BitCodeFormat
MIRLangRef
GlobalISel/index
ConvergentOperations
TestingGuide
GwpAsan
XRay
XRayExample
FaultMaps
Atomics
ExceptionHandling
Extensions
HowToSetUpLLVMStyleRTTI
BlockFrequencyTerminology
BranchWeightMetadata
GetElementPtr
ScudoHardenedAllocator
MemoryModelRelaxationAnnotations
MemTagSanitizer
DependenceGraphs/index
SpeculativeLoadHardening
SegmentedStacks
MarkedUpDisassembly
StackMaps
Coroutines
PointerAuth
YamlIO
ConvergenceAndUniformity
MLGO
ContentAddressableStorage
CIBestPractices
AIToolPolicy
CallGraphSection
InterfaceExportAnnotations
PCSectionsMetadata
QualGroup
Security
SecurityTransparencyReports
SystemLibrary
TransformMetadata
TypeMetadata
XRayFDRFormat
```
## 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}`llvm-reduce <CommandGuide/llvm-reduce>`
: 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}`Undefined Behavior (UB) <UndefinedBehavior>`
: A guide on what UB/undef/poison are and when to use each one.
{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}`MLGO`
: Facilities for ML-Guided Optimization, such as collecting IR corpora from a
build, interfacing with ML models, an exposing features for training.
{doc}`ContentAddressableStorage`
: A reference guide for using LLVM's CAS library.
{doc}`CIBestPractices`
: A list of guidelines and best practices to use when working on LLVM's
CI systems.