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