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