[yaml2obj/obj2yaml] - Add support for .stack_sizes sections.
[llvm-complete.git] / docs / SubsystemDocumentation.rst
blobcac0ce85b1f5df86c9adb7a5c70c00f2f81ce590
1 .. _index-subsystem-docs:\r
2 \r
3 Subsystem Documentation\r
4 =======================\r
5 \r
6 For API clients and LLVM developers.\r
7 \r
8 .. toctree::\r
9    :hidden:\r
11    AliasAnalysis\r
12    MemorySSA\r
13    BitCodeFormat\r
14    BlockFrequencyTerminology\r
15    BranchWeightMetadata\r
16    Bugpoint\r
17    CodeGenerator\r
18    ExceptionHandling\r
19    AddingConstrainedIntrinsics\r
20    LinkTimeOptimization\r
21    SegmentedStacks\r
22    TableGenFundamentals\r
23    TableGen/index\r
24    DebuggingJITedCode\r
25    GoldPlugin\r
26    MarkedUpDisassembly\r
27    SystemLibrary\r
28    SupportLibrary\r
29    SourceLevelDebugging\r
30    Vectorizers\r
31    WritingAnLLVMBackend\r
32    GarbageCollection\r
33    WritingAnLLVMPass\r
34    HowToUseAttributes\r
35    NVPTXUsage\r
36    AMDGPUUsage\r
37    StackMaps\r
38    InAlloca\r
39    BigEndianNEON\r
40    CoverageMappingFormat\r
41    Statepoints\r
42    MergeFunctions\r
43    TypeMetadata\r
44    TransformMetadata\r
45    FaultMaps\r
46    Coroutines\r
47    GlobalISel\r
48    XRay\r
49    XRayExample\r
50    XRayFDRFormat\r
51    PDB/index\r
52    CFIVerify\r
53    SpeculativeLoadHardening\r
54    StackSafetyAnalysis\r
55    LoopTerminology\r
56    DependenceGraphs/index\r
58 :doc:`WritingAnLLVMPass`\r
59    Information on how to write LLVM transformations and analyses.\r
61 :doc:`WritingAnLLVMBackend`\r
62    Information on how to write LLVM backends for machine targets.\r
64 :doc:`CodeGenerator`\r
65    The design and implementation of the LLVM code generator.  Useful if you are\r
66    working on retargetting LLVM to a new architecture, designing a new codegen\r
67    pass, or enhancing existing components.\r
69 :doc:`TableGen <TableGen/index>`\r
70    Describes the TableGen tool, which is used heavily by the LLVM code\r
71    generator.\r
73 :doc:`AliasAnalysis`\r
74    Information on how to write a new alias analysis implementation or how to\r
75    use existing analyses.\r
77 :doc:`MemorySSA`\r
78    Information about the MemorySSA utility in LLVM, as well as how to use it.\r
80 :doc:`GarbageCollection`\r
81    The interfaces source-language compilers should use for compiling GC'd\r
82    programs.\r
84 :doc:`Source Level Debugging with LLVM <SourceLevelDebugging>`\r
85    This document describes the design and philosophy behind the LLVM\r
86    source-level debugger.\r
88 :doc:`Vectorizers`\r
89    This document describes the current status of vectorization in LLVM.\r
91 :doc:`ExceptionHandling`\r
92    This document describes the design and implementation of exception handling\r
93    in LLVM.\r
95 :doc:`AddingConstrainedIntrinsics`\r
96    Gives the steps necessary when adding a new constrained math intrinsic\r
97    to LLVM.\r
99 :doc:`Bugpoint`\r
100    Automatic bug finder and test-case reducer description and usage\r
101    information.\r
103 :doc:`BitCodeFormat`\r
104    This describes the file format and encoding used for LLVM "bc" files.\r
106 :doc:`Support Library <SupportLibrary>`\r
107    This document describes the LLVM Support Library (``lib/Support``) and\r
108    how to keep LLVM source code portable\r
110 :doc:`LinkTimeOptimization`\r
111    This document describes the interface between LLVM intermodular optimizer\r
112    and the linker and its design\r
114 :doc:`GoldPlugin`\r
115    How to build your programs with link-time optimization on Linux.\r
117 :doc:`DebuggingJITedCode`\r
118    How to debug JITed code with GDB.\r
120 :doc:`MCJITDesignAndImplementation`\r
121    Describes the inner workings of MCJIT execution engine.\r
123 :doc:`ORCv2`\r
124    Describes the design and implementation of the ORC APIs, including some\r
125    usage examples, and a guide for users transitioning from ORCv1 to ORCv2.\r
127 :doc:`BranchWeightMetadata`\r
128    Provides information about Branch Prediction Information.\r
130 :doc:`BlockFrequencyTerminology`\r
131    Provides information about terminology used in the ``BlockFrequencyInfo``\r
132    analysis pass.\r
134 :doc:`SegmentedStacks`\r
135    This document describes segmented stacks and how they are used in LLVM.\r
137 :doc:`MarkedUpDisassembly`\r
138    This document describes the optional rich disassembly output syntax.\r
140 :doc:`HowToUseAttributes`\r
141   Answers some questions about the new Attributes infrastructure.\r
143 :doc:`NVPTXUsage`\r
144    This document describes using the NVPTX backend to compile GPU kernels.\r
146 :doc:`AMDGPUUsage`\r
147    This document describes using the AMDGPU backend to compile GPU kernels.\r
149 :doc:`StackMaps`\r
150   LLVM support for mapping instruction addresses to the location of\r
151   values and allowing code to be patched.\r
153 :doc:`BigEndianNEON`\r
154   LLVM's support for generating NEON instructions on big endian ARM targets is\r
155   somewhat nonintuitive. This document explains the implementation and rationale.\r
157 :doc:`CoverageMappingFormat`\r
158   This describes the format and encoding used for LLVM’s code coverage mapping.\r
160 :doc:`Statepoints`\r
161   This describes a set of experimental extensions for garbage\r
162   collection support.\r
164 :doc:`MergeFunctions`\r
165   Describes functions merging optimization.\r
167 :doc:`InAlloca`\r
168   Description of the ``inalloca`` argument attribute.\r
170 :doc:`FaultMaps`\r
171   LLVM support for folding control flow into faulting machine instructions.\r
173 :doc:`CompileCudaWithLLVM`\r
174   LLVM support for CUDA.\r
176 :doc:`Coroutines`\r
177   LLVM support for coroutines.\r
179 :doc:`GlobalISel`\r
180   This describes the prototype instruction selection replacement, GlobalISel.\r
182 :doc:`XRay`\r
183   High-level documentation of how to use XRay in LLVM.\r
185 :doc:`XRayExample`\r
186   An example of how to debug an application with XRay.\r
188 :doc:`The Microsoft PDB File Format <PDB/index>`\r
189   A detailed description of the Microsoft PDB (Program Database) file format.\r
191 :doc:`CFIVerify`\r
192   A description of the verification tool for Control Flow Integrity.\r
194 :doc:`SpeculativeLoadHardening`\r
195   A description of the Speculative Load Hardening mitigation for Spectre v1.\r
197 :doc:`StackSafetyAnalysis`\r
198   This document describes the design of the stack safety analysis of local\r
199   variables.\r
201 :doc:`LoopTerminology`\r
202   A document describing Loops and associated terms as used in LLVM.\r
204 :doc:`Dependence Graphs <DependenceGraphs/index>`\r
205   A description of the design of the various dependence graphs such as\r
206   the DDG (Data Dependence Graph).\r