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