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