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