1 .. _index-subsystem-docs:
\r
3 Subsystem Documentation
\r
4 =======================
\r
6 For API clients and LLVM developers.
\r
14 BlockFrequencyTerminology
\r
15 BranchWeightMetadata
\r
19 AddingConstrainedIntrinsics
\r
20 LinkTimeOptimization
\r
22 TableGenFundamentals
\r
29 SourceLevelDebugging
\r
31 WritingAnLLVMBackend
\r
38 CoverageMappingFormat
\r
51 SpeculativeLoadHardening
\r
54 DependenceGraphs/index
\r
56 :doc:`WritingAnLLVMPass`
\r
57 Information on how to write LLVM transformations and analyses.
\r
59 :doc:`WritingAnLLVMBackend`
\r
60 Information on how to write LLVM backends for machine targets.
\r
62 :doc:`CodeGenerator`
\r
63 The design and implementation of the LLVM code generator. Useful if you are
\r
64 working on retargetting LLVM to a new architecture, designing a new codegen
\r
65 pass, or enhancing existing components.
\r
67 :doc:`TableGen <TableGen/index>`
\r
68 Describes the TableGen tool, which is used heavily by the LLVM code
\r
71 :doc:`AliasAnalysis`
\r
72 Information on how to write a new alias analysis implementation or how to
\r
73 use existing analyses.
\r
76 Information about the MemorySSA utility in LLVM, as well as how to use it.
\r
78 :doc:`Source Level Debugging with LLVM <SourceLevelDebugging>`
\r
79 This document describes the design and philosophy behind the LLVM
\r
80 source-level debugger.
\r
83 This document describes the current status of vectorization in LLVM.
\r
85 :doc:`ExceptionHandling`
\r
86 This document describes the design and implementation of exception handling
\r
89 :doc:`AddingConstrainedIntrinsics`
\r
90 Gives the steps necessary when adding a new constrained math intrinsic
\r
94 Automatic bug finder and test-case reducer description and usage
\r
97 :doc:`BitCodeFormat`
\r
98 This describes the file format and encoding used for LLVM "bc" files.
\r
100 :doc:`Support Library <SupportLibrary>`
\r
101 This document describes the LLVM Support Library (``lib/Support``) and
\r
102 how to keep LLVM source code portable
\r
104 :doc:`LinkTimeOptimization`
\r
105 This document describes the interface between LLVM intermodular optimizer
\r
106 and the linker and its design
\r
109 How to build your programs with link-time optimization on Linux.
\r
111 :doc:`DebuggingJITedCode`
\r
112 How to debug JITed code with GDB.
\r
114 :doc:`MCJITDesignAndImplementation`
\r
115 Describes the inner workings of MCJIT execution engine.
\r
118 Describes the design and implementation of the ORC APIs, including some
\r
119 usage examples, and a guide for users transitioning from ORCv1 to ORCv2.
\r
121 :doc:`BranchWeightMetadata`
\r
122 Provides information about Branch Prediction Information.
\r
124 :doc:`BlockFrequencyTerminology`
\r
125 Provides information about terminology used in the ``BlockFrequencyInfo``
\r
128 :doc:`SegmentedStacks`
\r
129 This document describes segmented stacks and how they are used in LLVM.
\r
131 :doc:`MarkedUpDisassembly`
\r
132 This document describes the optional rich disassembly output syntax.
\r
134 :doc:`HowToUseAttributes`
\r
135 Answers some questions about the new Attributes infrastructure.
\r
138 LLVM support for mapping instruction addresses to the location of
\r
139 values and allowing code to be patched.
\r
141 :doc:`BigEndianNEON`
\r
142 LLVM's support for generating NEON instructions on big endian ARM targets is
\r
143 somewhat nonintuitive. This document explains the implementation and rationale.
\r
145 :doc:`CoverageMappingFormat`
\r
146 This describes the format and encoding used for LLVM’s code coverage mapping.
\r
148 :doc:`MergeFunctions`
\r
149 Describes functions merging optimization.
\r
152 Description of the ``inalloca`` argument attribute.
\r
155 LLVM support for folding control flow into faulting machine instructions.
\r
157 :doc:`CompileCudaWithLLVM`
\r
158 LLVM support for CUDA.
\r
161 LLVM support for coroutines.
\r
164 This describes the prototype instruction selection replacement, GlobalISel.
\r
167 High-level documentation of how to use XRay in LLVM.
\r
170 An example of how to debug an application with XRay.
\r
172 :doc:`The Microsoft PDB File Format <PDB/index>`
\r
173 A detailed description of the Microsoft PDB (Program Database) file format.
\r
176 A description of the verification tool for Control Flow Integrity.
\r
178 :doc:`SpeculativeLoadHardening`
\r
179 A description of the Speculative Load Hardening mitigation for Spectre v1.
\r
181 :doc:`StackSafetyAnalysis`
\r
182 This document describes the design of the stack safety analysis of local
\r
185 :doc:`LoopTerminology`
\r
186 A document describing Loops and associated terms as used in LLVM.
\r
188 :doc:`Dependence Graphs <DependenceGraphs/index>`
\r
189 A description of the design of the various dependence graphs such as
\r
190 the DDG (Data Dependence Graph).
\r
196 :doc:`GarbageCollection`
\r
197 The interfaces source-language compilers should use for compiling GC'd
\r
201 This describes a set of experimental extensions for garbage
\r
202 collection support.
\r