Programming Documentation

For developers of applications which use LLVM as a library.

LLVM Atomic Instructions and Concurrency Guide
Information about LLVM’s concurrency model.
LLVM Programmer’s Manual
Introduction to the general layout of the LLVM sourcebase, important classes and APIs, and some tips & tricks.
LLVM Extensions
LLVM-specific extensions to tools and formats LLVM seeks compatibility with.
CommandLine 2.0 Library Manual
Provides information on using the command line parsing library.
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.
Extending LLVM: Adding instructions, intrinsics, types, etc.
Look here to see how to add instructions and intrinsics to LLVM.
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.
Scudo Hardened Allocator
A library that implements a security-hardened malloc().
Using -opt-bisect-limit to debug optimization errors
A command line option for debugging optimization-induced failures.
GWP-ASan
A sampled heap memory error detection toolkit designed for production use.