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