[Codegen] Alter the default promotion for saturating adds and subs
[llvm-complete.git] / docs / Reference.rst
blob882d0dc9ab1209332e71a2219e2578e612e4e853
1 Reference\r
2 =========\r
3 \r
4 LLVM and API reference documentation.\r
5 \r
6 .. contents::\r
7    :local:\r
8 \r
9 .. toctree::\r
10    :hidden:\r
12    Atomics\r
13    BitCodeFormat\r
14    BlockFrequencyTerminology\r
15    BranchWeightMetadata\r
16    Bugpoint\r
17    CFIVerify\r
18    CommandGuide/index\r
19    Coroutines\r
20    DependenceGraphs/index\r
21    ExceptionHandling\r
22    Extensions\r
23    FaultMaps\r
24    FuzzingLLVM\r
25    GarbageCollection\r
26    GetElementPtr\r
27    GlobalISel\r
28    GwpAsan\r
29    HowToSetUpLLVMStyleRTTI\r
30    HowToUseAttributes\r
31    InAlloca\r
32    LangRef\r
33    LibFuzzer\r
34    MarkedUpDisassembly\r
35    MIRLangRef\r
36    OptBisect\r
37    ORCv2\r
38    PDB/index\r
39    ScudoHardenedAllocator\r
40    SegmentedStacks\r
41    StackMaps\r
42    SpeculativeLoadHardening\r
43    Statepoints\r
44    SystemLibrary\r
45    TestingGuide\r
46    TransformMetadata\r
47    TypeMetadata\r
48    XRay\r
49    XRayExample\r
50    XRayFDRFormat\r
51    YamlIO\r
53 API Reference\r
54 -------------\r
56 `Doxygen generated documentation <http://llvm.org/doxygen/>`_\r
57   (`classes <http://llvm.org/doxygen/inherits.html>`_)\r
59 :doc:`HowToUseAttributes`\r
60   Answers some questions about the new Attributes infrastructure.\r
62 `Documentation for Go bindings <http://godoc.org/llvm.org/llvm/bindings/go/llvm>`_\r
64 :doc:`ORCv2`\r
65    Describes the design and implementation of the ORC APIs, including some\r
66    usage examples, and a guide for users transitioning from ORCv1 to ORCv2.\r
68 LLVM Reference\r
69 --------------\r
71 ======================\r
72 Command Line Utilities\r
73 ======================\r
75 :doc:`LLVM Command Guide <CommandGuide/index>`\r
76    A reference manual for the LLVM command line utilities ("man" pages for LLVM\r
77    tools).\r
79 :doc:`Bugpoint`\r
80    Automatic bug finder and test-case reducer description and usage\r
81    information.\r
83 :doc:`OptBisect`\r
84   A command line option for debugging optimization-induced failures.\r
86 :doc:`The Microsoft PDB File Format <PDB/index>`\r
87   A detailed description of the Microsoft PDB (Program Database) file format.\r
89 ==================\r
90 Garbage Collection\r
91 ==================\r
93 :doc:`GarbageCollection`\r
94    The interfaces source-language compilers should use for compiling GC'd\r
95    programs.\r
97 :doc:`Statepoints`\r
98   This describes a set of experimental extensions for garbage\r
99   collection support.\r
101 =========\r
102 LibFuzzer\r
103 =========\r
105 :doc:`LibFuzzer`\r
106   A library for writing in-process guided fuzzers.\r
108 :doc:`FuzzingLLVM`\r
109   Information on writing and using Fuzzers to find bugs in LLVM.\r
111 ========\r
112 LLVM IR\r
113 ========\r
115 :doc:`LLVM Language Reference Manual <LangRef>`\r
116   Defines the LLVM intermediate representation and the assembly form of the\r
117   different nodes.\r
119 :doc:`InAlloca`\r
120   Description of the ``inalloca`` argument attribute.\r
122 :doc:`BitCodeFormat`\r
123    This describes the file format and encoding used for LLVM "bc" files.\r
125 :doc:`Machine IR (MIR) Format Reference Manual <MIRLangRef>`\r
126    A reference manual for the MIR serialization format, which is used to test\r
127    LLVM's code generation passes.\r
129 :doc:`GlobalISel`\r
130   This describes the prototype instruction selection replacement, GlobalISel.\r
132 =======\r
133 Testing\r
134 =======\r
136 :doc:`LLVM Testing Infrastructure Guide <TestingGuide>`\r
137    A reference manual for using the LLVM testing infrastructure.\r
139 :doc:`TestSuiteGuide`\r
140   Describes how to compile and run the test-suite benchmarks.\r
142 ====\r
143 XRay\r
144 ====\r
146 :doc:`XRay`\r
147   High-level documentation of how to use XRay in LLVM.\r
149 :doc:`XRayExample`\r
150   An example of how to debug an application with XRay.\r
152 =================\r
153 Additional Topics\r
154 =================\r
156 :doc:`FaultMaps`\r
157   LLVM support for folding control flow into faulting machine instructions.\r
159 :doc:`Atomics`\r
160   Information about LLVM's concurrency model.\r
162 :doc:`ExceptionHandling`\r
163    This document describes the design and implementation of exception handling\r
164    in LLVM.\r
166 :doc:`Extensions`\r
167   LLVM-specific extensions to tools and formats LLVM seeks compatibility with.\r
169 :doc:`HowToSetUpLLVMStyleRTTI`\r
170   How to make ``isa<>``, ``dyn_cast<>``, etc. available for clients of your\r
171   class hierarchy.\r
173 :doc:`BlockFrequencyTerminology`\r
174    Provides information about terminology used in the ``BlockFrequencyInfo``\r
175    analysis pass.\r
177 :doc:`BranchWeightMetadata`\r
178    Provides information about Branch Prediction Information.\r
180 :doc:`GetElementPtr`\r
181   Answers to some very frequent questions about LLVM's most frequently\r
182   misunderstood instruction.\r
184 :doc:`ScudoHardenedAllocator`\r
185   A library that implements a security-hardened `malloc()`.\r
187 :doc:`GwpAsan`\r
188   A sampled heap memory error detection toolkit designed for production use.\r
190 :doc:`Dependence Graphs <DependenceGraphs/index>`\r
191   A description of the design of the various dependence graphs such as\r
192   the DDG (Data Dependence Graph).\r
194 :doc:`CFIVerify`\r
195   A description of the verification tool for Control Flow Integrity.\r
197 :doc:`SpeculativeLoadHardening`\r
198   A description of the Speculative Load Hardening mitigation for Spectre v1.\r
200 :doc:`SegmentedStacks`\r
201    This document describes segmented stacks and how they are used in LLVM.\r
203 :doc:`MarkedUpDisassembly`\r
204    This document describes the optional rich disassembly output syntax.\r
206 :doc:`StackMaps`\r
207   LLVM support for mapping instruction addresses to the location of\r
208   values and allowing code to be patched.\r
210 :doc:`Coroutines`\r
211   LLVM support for coroutines.\r
213 :doc:`YamlIO`\r
214    A reference guide for using LLVM's YAML I/O library.