1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
| Reference
=========
LLVM and API reference documentation.
.. contents::
:local:
.. toctree::
:hidden:
Atomics
BitCodeFormat
BlockFrequencyTerminology
BranchWeightMetadata
Bugpoint
CommandGuide/index
Coroutines
DependenceGraphs/index
ExceptionHandling
Extensions
FaultMaps
FuzzingLLVM
GarbageCollection
GetElementPtr
GlobalISel/index
GwpAsan
HowToSetUpLLVMStyleRTTI
HowToUseAttributes
InAlloca
LangRef
LibFuzzer
MarkedUpDisassembly
MIRLangRef
OptBisect
ORCv2
PDB/index
ScudoHardenedAllocator
SegmentedStacks
StackMaps
SpeculativeLoadHardening
Statepoints
SystemLibrary
TestingGuide
TransformMetadata
TypeMetadata
XRay
XRayExample
XRayFDRFormat
YamlIO
API Reference
-------------
`Doxygen generated documentation <http://llvm.org/doxygen/>`_
(`classes <http://llvm.org/doxygen/inherits.html>`_)
:doc:`HowToUseAttributes`
Answers some questions about the new Attributes infrastructure.
`Documentation for Go bindings <http://godoc.org/llvm.org/llvm/bindings/go/llvm>`_
:doc:`ORCv2`
Describes the design and implementation of the ORC APIs, including some
usage examples, and a guide for users transitioning from ORCv1 to ORCv2.
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:`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.
=====================
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:`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:`YamlIO`
A reference guide for using LLVM's YAML I/O library.
|