[clang][bytecode][NFC] Only get expr when checking for UB (#125397)
[llvm-project.git] / llvm / docs / Reference.rst
blob2cae9186d7f9bd69931a2b4ec3ff149a1cbc40f8
1 Reference
2 =========
4 LLVM and API reference documentation.
6 .. contents::
7    :local:
9 .. toctree::
10    :hidden:
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
61 API Reference
62 -------------
64 `Doxygen generated documentation <https://llvm.org/doxygen/>`_
65   (`classes <https://llvm.org/doxygen/inherits.html>`_)
67 :doc:`HowToUseAttributes`
68   Answers some questions about the new Attributes infrastructure.
70 LLVM Reference
71 --------------
73 ======================
74 Command Line Utilities
75 ======================
77 :doc:`LLVM Command Guide <CommandGuide/index>`
78    A reference manual for the LLVM command line utilities ("man" pages for LLVM
79    tools).
81 :doc:`Bugpoint`
82    Automatic bug finder and test-case reducer description and usage
83    information.
85 :doc:`OptBisect`
86   A command line option for debugging optimization-induced failures.
88 :doc:`SymbolizerMarkupFormat`
89   A reference for the log symbolizer markup accepted by ``llvm-symbolizer``.
91 :doc:`The Microsoft PDB File Format <PDB/index>`
92   A detailed description of the Microsoft PDB (Program Database) file format.
94 ==================
95 Garbage Collection
96 ==================
98 :doc:`GarbageCollection`
99    The interfaces source-language compilers should use for compiling GC'd
100    programs.
102 :doc:`Statepoints`
103   This describes a set of experimental extensions for garbage
104   collection support.
106 =========
107 LibFuzzer
108 =========
110 :doc:`LibFuzzer`
111   A library for writing in-process guided fuzzers.
113 :doc:`FuzzingLLVM`
114   Information on writing and using Fuzzers to find bugs in LLVM.
116 ========
117 LLVM IR
118 ========
120 :doc:`LLVM Language Reference Manual <LangRef>`
121   Defines the LLVM intermediate representation and the assembly form of the
122   different nodes.
124 :doc:`Undefined Behavior (UB) <UndefinedBehavior>`
125   A guide on what UB/undef/poison are and when to use each one.
127 :doc:`InAlloca`
128   Description of the ``inalloca`` argument attribute.
130 :doc:`BitCodeFormat`
131    This describes the file format and encoding used for LLVM "bc" files.
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.
137 :doc:`GlobalISel/index`
138   This describes the prototype instruction selection replacement, GlobalISel.
140 :doc:`ConvergentOperations`
141   Description of ``convergent`` operation semantics and related intrinsics.
143 =====================
144 Testing and Debugging
145 =====================
147 :doc:`LLVM Testing Infrastructure Guide <TestingGuide>`
148    A reference manual for using the LLVM testing infrastructure.
150 :doc:`TestSuiteGuide`
151   Describes how to compile and run the test-suite benchmarks.
154 :doc:`GwpAsan`
155   A sampled heap memory error detection toolkit designed for production use.
157 ====
158 XRay
159 ====
161 :doc:`XRay`
162   High-level documentation of how to use XRay in LLVM.
164 :doc:`XRayExample`
165   An example of how to debug an application with XRay.
167 =================
168 Additional Topics
169 =================
171 :doc:`FaultMaps`
172   LLVM support for folding control flow into faulting machine instructions.
174 :doc:`Atomics`
175   Information about LLVM's concurrency model.
177 :doc:`ExceptionHandling`
178    This document describes the design and implementation of exception handling
179    in LLVM.
181 :doc:`Extensions`
182   LLVM-specific extensions to tools and formats LLVM seeks compatibility with.
184 :doc:`HowToSetUpLLVMStyleRTTI`
185   How to make ``isa<>``, ``dyn_cast<>``, etc. available for clients of your
186   class hierarchy.
188 :doc:`BlockFrequencyTerminology`
189    Provides information about terminology used in the ``BlockFrequencyInfo``
190    analysis pass.
192 :doc:`BranchWeightMetadata`
193    Provides information about Branch Prediction Information.
195 :doc:`GetElementPtr`
196   Answers to some very frequent questions about LLVM's most frequently
197   misunderstood instruction.
199 :doc:`ScudoHardenedAllocator`
200   A library that implements a security-hardened `malloc()`.
202 :doc:`MemoryModelRelaxationAnnotations`
203   Target-defined relaxation to LLVM's concurrency model.
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.
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).
213 :doc:`SpeculativeLoadHardening`
214   A description of the Speculative Load Hardening mitigation for Spectre v1.
216 :doc:`SegmentedStacks`
217    This document describes segmented stacks and how they are used in LLVM.
219 :doc:`MarkedUpDisassembly`
220    This document describes the optional rich disassembly output syntax.
222 :doc:`StackMaps`
223   LLVM support for mapping instruction addresses to the location of
224   values and allowing code to be patched.
226 :doc:`Coroutines`
227   LLVM support for coroutines.
229 :doc:`PointerAuth`
230   A description of pointer authentication, its LLVM IR representation, and its
231   support in the backend.
233 :doc:`YamlIO`
234    A reference guide for using LLVM's YAML I/O library.
236 :doc:`ConvergenceAndUniformity`
237    A description of uniformity analysis in the presence of irreducible
238    control flow, and its implementation.