Programming Documentation

For developers of applications which use LLVM as a library.

LLVM Language Reference Manual
Defines the LLVM intermediate representation and the assembly form of the different nodes.
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.
LLVM Coding Standards
Details the LLVM coding standards and provides useful information on writing efficient C++ code.
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.
Doxygen generated documentation

Documentation for Go bindings

Github Source Repository Browser
Architecture & Platform Information for Compiler Writers
A list of helpful links for compiler writers.
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.
A sampled heap memory error detection toolkit designed for production use.