1Reference
2=========
3
4LLVM and API reference documentation.
5
6.. contents::
7   :local:
8
9.. toctree::
10   :hidden:
11
12   Atomics
13   BitCodeFormat
14   BlockFrequencyTerminology
15   BranchWeightMetadata
16   Bugpoint
17   CommandGuide/index
18   Coroutines
19   DependenceGraphs/index
20   ExceptionHandling
21   Extensions
22   FaultMaps
23   FuzzingLLVM
24   GarbageCollection
25   GetElementPtr
26   GlobalISel/index
27   GwpAsan
28   HowToSetUpLLVMStyleRTTI
29   HowToUseAttributes
30   InAlloca
31   LangRef
32   LibFuzzer
33   MarkedUpDisassembly
34   MIRLangRef
35   OptBisect
36   PDB/index
37   PointerAuth
38   ScudoHardenedAllocator
39   MemTagSanitizer
40   Security
41   SecurityTransparencyReports
42   SegmentedStacks
43   StackMaps
44   SpeculativeLoadHardening
45   Statepoints
46   SymbolizerMarkupFormat
47   SystemLibrary
48   TestingGuide
49   TransformMetadata
50   TypeMetadata
51   XRay
52   XRayExample
53   XRayFDRFormat
54   YamlIO
55
56API Reference
57-------------
58
59`Doxygen generated documentation <https://llvm.org/doxygen/>`_
60  (`classes <https://llvm.org/doxygen/inherits.html>`_)
61
62:doc:`HowToUseAttributes`
63  Answers some questions about the new Attributes infrastructure.
64
65LLVM Reference
66--------------
67
68======================
69Command Line Utilities
70======================
71
72:doc:`LLVM Command Guide <CommandGuide/index>`
73   A reference manual for the LLVM command line utilities ("man" pages for LLVM
74   tools).
75
76:doc:`Bugpoint`
77   Automatic bug finder and test-case reducer description and usage
78   information.
79
80:doc:`OptBisect`
81  A command line option for debugging optimization-induced failures.
82
83:doc:`SymbolizerMarkupFormat`
84  A reference for the log symbolizer markup accepted by ``llvm-symbolizer``.
85
86:doc:`The Microsoft PDB File Format <PDB/index>`
87  A detailed description of the Microsoft PDB (Program Database) file format.
88
89==================
90Garbage Collection
91==================
92
93:doc:`GarbageCollection`
94   The interfaces source-language compilers should use for compiling GC'd
95   programs.
96
97:doc:`Statepoints`
98  This describes a set of experimental extensions for garbage
99  collection support.
100
101=========
102LibFuzzer
103=========
104
105:doc:`LibFuzzer`
106  A library for writing in-process guided fuzzers.
107
108:doc:`FuzzingLLVM`
109  Information on writing and using Fuzzers to find bugs in LLVM.
110
111========
112LLVM IR
113========
114
115:doc:`LLVM Language Reference Manual <LangRef>`
116  Defines the LLVM intermediate representation and the assembly form of the
117  different nodes.
118
119:doc:`InAlloca`
120  Description of the ``inalloca`` argument attribute.
121
122:doc:`BitCodeFormat`
123   This describes the file format and encoding used for LLVM "bc" files.
124
125:doc:`Machine IR (MIR) Format Reference Manual <MIRLangRef>`
126   A reference manual for the MIR serialization format, which is used to test
127   LLVM's code generation passes.
128
129:doc:`GlobalISel/index`
130  This describes the prototype instruction selection replacement, GlobalISel.
131
132=====================
133Testing and Debugging
134=====================
135
136:doc:`LLVM Testing Infrastructure Guide <TestingGuide>`
137   A reference manual for using the LLVM testing infrastructure.
138
139:doc:`TestSuiteGuide`
140  Describes how to compile and run the test-suite benchmarks.
141
142
143:doc:`GwpAsan`
144  A sampled heap memory error detection toolkit designed for production use.
145
146====
147XRay
148====
149
150:doc:`XRay`
151  High-level documentation of how to use XRay in LLVM.
152
153:doc:`XRayExample`
154  An example of how to debug an application with XRay.
155
156=================
157Additional Topics
158=================
159
160:doc:`FaultMaps`
161  LLVM support for folding control flow into faulting machine instructions.
162
163:doc:`Atomics`
164  Information about LLVM's concurrency model.
165
166:doc:`ExceptionHandling`
167   This document describes the design and implementation of exception handling
168   in LLVM.
169
170:doc:`Extensions`
171  LLVM-specific extensions to tools and formats LLVM seeks compatibility with.
172
173:doc:`HowToSetUpLLVMStyleRTTI`
174  How to make ``isa<>``, ``dyn_cast<>``, etc. available for clients of your
175  class hierarchy.
176
177:doc:`BlockFrequencyTerminology`
178   Provides information about terminology used in the ``BlockFrequencyInfo``
179   analysis pass.
180
181:doc:`BranchWeightMetadata`
182   Provides information about Branch Prediction Information.
183
184:doc:`GetElementPtr`
185  Answers to some very frequent questions about LLVM's most frequently
186  misunderstood instruction.
187
188:doc:`ScudoHardenedAllocator`
189  A library that implements a security-hardened `malloc()`.
190
191:doc:`MemTagSanitizer`
192  Security hardening for production code aiming to mitigate memory
193  related vulnerabilities. Based on the Armv8.5-A Memory Tagging Extension.
194
195:doc:`Dependence Graphs <DependenceGraphs/index>`
196  A description of the design of the various dependence graphs such as
197  the DDG (Data Dependence Graph).
198
199:doc:`SpeculativeLoadHardening`
200  A description of the Speculative Load Hardening mitigation for Spectre v1.
201
202:doc:`SegmentedStacks`
203   This document describes segmented stacks and how they are used in LLVM.
204
205:doc:`MarkedUpDisassembly`
206   This document describes the optional rich disassembly output syntax.
207
208:doc:`StackMaps`
209  LLVM support for mapping instruction addresses to the location of
210  values and allowing code to be patched.
211
212:doc:`Coroutines`
213  LLVM support for coroutines.
214
215:doc:`PointerAuth`
216  A description of pointer authentication, its LLVM IR representation, and its
217  support in the backend.
218
219:doc:`YamlIO`
220   A reference guide for using LLVM's YAML I/O library.
221