Reference¶
LLVM and API reference documentation.
API Reference¶
- Doxygen generated documentation
- (classes) 
- How To Use Attributes
- Answers some questions about the new Attributes infrastructure. 
LLVM Reference¶
Command Line Utilities¶
- LLVM Command Guide
- A reference manual for the LLVM command line utilities (“man” pages for LLVM tools). 
- LLVM bugpoint tool: design and usage
- Automatic bug finder and test-case reducer description and usage information. 
- Using -opt-bisect-limit to debug optimization errors
- A command line option for debugging optimization-induced failures. 
- Symbolizer Markup Format
- A reference for the log symbolizer markup accepted by - llvm-symbolizer.
- The Microsoft PDB File Format
- A detailed description of the Microsoft PDB (Program Database) file format. 
Garbage Collection¶
- Garbage Collection with LLVM
- The interfaces source-language compilers should use for compiling GC’d programs. 
- Garbage Collection Safepoints in LLVM
- This describes a set of experimental extensions for garbage collection support. 
LibFuzzer¶
- libFuzzer – a library for coverage-guided fuzz testing.
- A library for writing in-process guided fuzzers. 
- Fuzzing LLVM libraries and tools
- Information on writing and using Fuzzers to find bugs in LLVM. 
LLVM IR¶
- LLVM Language Reference Manual
- Defines the LLVM intermediate representation and the assembly form of the different nodes. 
- Design and Usage of the InAlloca Attribute
- Description of the - inallocaargument attribute.
- LLVM Bitcode File Format
- This describes the file format and encoding used for LLVM “bc” files. 
- Machine IR (MIR) Format Reference Manual
- A reference manual for the MIR serialization format, which is used to test LLVM’s code generation passes. 
- Global Instruction Selection
- This describes the prototype instruction selection replacement, GlobalISel. 
- Convergent Operation Semantics
- Description of - convergentoperation semantics and related intrinsics.
Testing and Debugging¶
- LLVM Testing Infrastructure Guide
- A reference manual for using the LLVM testing infrastructure. 
- test-suite Guide
- Describes how to compile and run the test-suite benchmarks. 
- GWP-ASan
- A sampled heap memory error detection toolkit designed for production use. 
XRay¶
- XRay Instrumentation
- High-level documentation of how to use XRay in LLVM. 
- Debugging with XRay
- An example of how to debug an application with XRay. 
Additional Topics¶
- FaultMaps and implicit checks
- LLVM support for folding control flow into faulting machine instructions. 
- LLVM Atomic Instructions and Concurrency Guide
- Information about LLVM’s concurrency model. 
- Exception Handling in LLVM
- This document describes the design and implementation of exception handling in LLVM. 
- LLVM Extensions
- LLVM-specific extensions to tools and formats LLVM seeks compatibility with. 
- How to set up LLVM-style RTTI for your class hierarchy
- How to make - isa<>,- dyn_cast<>, etc. available for clients of your class hierarchy.
- LLVM Block Frequency Terminology
- Provides information about terminology used in the - BlockFrequencyInfoanalysis pass.
- LLVM Branch Weight Metadata
- Provides information about Branch Prediction Information. 
- The Often Misunderstood GEP Instruction
- Answers to some very frequent questions about LLVM’s most frequently misunderstood instruction. 
- Scudo Hardened Allocator
- A library that implements a security-hardened malloc(). 
- MemTagSanitizer
- Security hardening for production code aiming to mitigate memory related vulnerabilities. Based on the Armv8.5-A Memory Tagging Extension. 
- Dependence Graphs
- A description of the design of the various dependence graphs such as the DDG (Data Dependence Graph). 
- Speculative Load Hardening
- A description of the Speculative Load Hardening mitigation for Spectre v1. 
- Segmented Stacks in LLVM
- This document describes segmented stacks and how they are used in LLVM. 
- LLVM’s Optional Rich Disassembly Output
- This document describes the optional rich disassembly output syntax. 
- Stack maps and patch points in LLVM
- LLVM support for mapping instruction addresses to the location of values and allowing code to be patched. 
- Coroutines in LLVM
- LLVM support for coroutines. 
- Pointer Authentication
- A description of pointer authentication, its LLVM IR representation, and its support in the backend. 
- YAML I/O
- A reference guide for using LLVM’s YAML I/O library. 
- Convergence And Uniformity
- A description of uniformity analysis in the presence of irreducible control flow, and its implementation. 
