Reference¶
LLVM and API reference documentation.
API Reference¶
- Doxygen generated documentation
- (classes)
- How To Use Attributes
- Answers some questions about the new Attributes infrastructure.
- ORC Design and Implementation
- Describes the design and implementation of the ORC APIs, including some usage examples, and a guide for users transitioning from ORCv1 to ORCv2.
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.
- 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
inalloca
argument 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.
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
BlockFrequencyInfo
analysis 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.
- YAML I/O
- A reference guide for using LLVM’s YAML I/O library.