blob: 3911094fbfd657aafed4fc4e7b0d148a74927b80 [file] [log] [blame]
DeForest Richardsccf60302019-09-25 00:49:02 +00001Reference
2=========
3
4LLVM and API reference documentation.
5
DeForest Richards6d196512019-10-06 15:36:37 +00006.. contents::
7 :local:
8
DeForest Richardsccf60302019-09-25 00:49:02 +00009.. toctree::
10 :hidden:
11
DeForest Richardsde0e3aa2019-10-06 16:10:11 +000012 Atomics
DeForest Richards38d16c12019-10-06 22:49:22 +000013 BitCodeFormat
14 BlockFrequencyTerminology
15 BranchWeightMetadata
DeForest Richards6d196512019-10-06 15:36:37 +000016 Bugpoint
17 CommandGuide/index
DeForest Richards38d16c12019-10-06 22:49:22 +000018 Coroutines
19 DependenceGraphs/index
20 ExceptionHandling
DeForest Richardsde0e3aa2019-10-06 16:10:11 +000021 Extensions
DeForest Richards38d16c12019-10-06 22:49:22 +000022 FaultMaps
DeForest Richards6d196512019-10-06 15:36:37 +000023 FuzzingLLVM
24 GarbageCollection
25 GetElementPtr
Daniel Sandersfeab0332019-10-25 15:50:36 -070026 GlobalISel/index
DeForest Richardsde0e3aa2019-10-06 16:10:11 +000027 GwpAsan
28 HowToSetUpLLVMStyleRTTI
DeForest Richards38d16c12019-10-06 22:49:22 +000029 HowToUseAttributes
30 InAlloca
DeForest Richards6d196512019-10-06 15:36:37 +000031 LangRef
32 LibFuzzer
DeForest Richards38d16c12019-10-06 22:49:22 +000033 MarkedUpDisassembly
DeForest Richardsccf60302019-09-25 00:49:02 +000034 MIRLangRef
DeForest Richardsde0e3aa2019-10-06 16:10:11 +000035 OptBisect
DeForest Richards38d16c12019-10-06 22:49:22 +000036 ORCv2
DeForest Richards6d196512019-10-06 15:36:37 +000037 PDB/index
DeForest Richardsde0e3aa2019-10-06 16:10:11 +000038 ScudoHardenedAllocator
Evgenii Stepanov27c9aba2019-10-18 12:32:21 -070039 MemTagSanitizer
JF Bastien7bf73bc2019-11-15 10:54:39 -080040 Security
DeForest Richards38d16c12019-10-06 22:49:22 +000041 SegmentedStacks
42 StackMaps
43 SpeculativeLoadHardening
DeForest Richards6d196512019-10-06 15:36:37 +000044 Statepoints
DeForest Richards38d16c12019-10-06 22:49:22 +000045 SystemLibrary
DeForest Richards6d196512019-10-06 15:36:37 +000046 TestingGuide
DeForest Richards38d16c12019-10-06 22:49:22 +000047 TransformMetadata
48 TypeMetadata
49 XRay
50 XRayExample
51 XRayFDRFormat
DeForest Richards6d196512019-10-06 15:36:37 +000052 YamlIO
DeForest Richardseb78dea2019-09-29 15:31:52 +000053
DeForest Richards6d196512019-10-06 15:36:37 +000054API Reference
55-------------
56
Sylvestre Ledru72fd1032020-03-22 22:42:03 +010057`Doxygen generated documentation <https://llvm.org/doxygen/>`_
58 (`classes <https://llvm.org/doxygen/inherits.html>`_)
DeForest Richards6d196512019-10-06 15:36:37 +000059
DeForest Richardsedbb8952019-10-09 21:09:09 +000060:doc:`HowToUseAttributes`
61 Answers some questions about the new Attributes infrastructure.
62
DeForest Richards6d196512019-10-06 15:36:37 +000063`Documentation for Go bindings <http://godoc.org/llvm.org/llvm/bindings/go/llvm>`_
64
DeForest Richards38d16c12019-10-06 22:49:22 +000065: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
DeForest Richardseb78dea2019-09-29 15:31:52 +000069LLVM Reference
DeForest Richards6d196512019-10-06 15:36:37 +000070--------------
DeForest Richardsccf60302019-09-25 00:49:02 +000071
DeForest Richards6d196512019-10-06 15:36:37 +000072======================
73Command Line Utilities
74======================
DeForest Richardseb78dea2019-09-29 15:31:52 +000075
DeForest Richards6d196512019-10-06 15:36:37 +000076:doc:`LLVM Command Guide <CommandGuide/index>`
77 A reference manual for the LLVM command line utilities ("man" pages for LLVM
78 tools).
DeForest Richardsccf60302019-09-25 00:49:02 +000079
DeForest Richards6d196512019-10-06 15:36:37 +000080:doc:`Bugpoint`
81 Automatic bug finder and test-case reducer description and usage
82 information.
83
DeForest Richardsde0e3aa2019-10-06 16:10:11 +000084:doc:`OptBisect`
85 A command line option for debugging optimization-induced failures.
86
DeForest Richards6d196512019-10-06 15:36:37 +000087: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
DeForest Richards02d264a52019-10-09 20:26:13 +0000112========
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
Daniel Sandersfeab0332019-10-25 15:50:36 -0700130:doc:`GlobalISel/index`
DeForest Richards02d264a52019-10-09 20:26:13 +0000131 This describes the prototype instruction selection replacement, GlobalISel.
132
DeForest Richards22373c52019-10-13 20:05:22 +0000133=====================
134Testing and Debugging
135=====================
DeForest Richards6d196512019-10-06 15:36:37 +0000136
137:doc:`LLVM Testing Infrastructure Guide <TestingGuide>`
138 A reference manual for using the LLVM testing infrastructure.
139
140:doc:`TestSuiteGuide`
DeForest Richards38d16c12019-10-06 22:49:22 +0000141 Describes how to compile and run the test-suite benchmarks.
142
DeForest Richards22373c52019-10-13 20:05:22 +0000143
144:doc:`GwpAsan`
145 A sampled heap memory error detection toolkit designed for production use.
146
DeForest Richards38d16c12019-10-06 22:49:22 +0000147====
148XRay
149====
150
151:doc:`XRay`
152 High-level documentation of how to use XRay in LLVM.
153
154:doc:`XRayExample`
DeForest Richardsedbb8952019-10-09 21:09:09 +0000155 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
Evgenii Stepanov27c9aba2019-10-18 12:32:21 -0700192:doc:`MemTagSanitizer`
193 Security hardening for production code aiming to mitigate memory
Pablo Barrioe440e0a2020-03-05 16:27:25 +0000194 related vulnerabilities. Based on the Armv8.5-A Memory Tagging Extension.
Evgenii Stepanov27c9aba2019-10-18 12:32:21 -0700195
DeForest Richardsedbb8952019-10-09 21:09:09 +0000196: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
DeForest Richardsedbb8952019-10-09 21:09:09 +0000200: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`
Daniel Sandersfeab0332019-10-25 15:50:36 -0700217 A reference guide for using LLVM's YAML I/O library.