@@ -1,4 +1,4 @@
Overview
About
========
.. warning ::
Expand Down
Expand Up
@@ -50,428 +50,26 @@ Several introductory papers and presentations.
`Publications mentioning LLVM <http://llvm.org/pubs >`_
..
User Guides
===========
Documentation
=============
For those new to the LLVM system.
NOTE: If you are a user who is only interested in using an LLVM-based compiler,
you should look into `Clang <http://clang.llvm.org >`_ instead. The
documentation here is intended for users who have a need to work with the
intermediate LLVM representation.
.. toctree ::
:hidden:
CMake
CMakePrimer
AdvancedBuilds
HowToBuildOnARM
HowToBuildWithPGO
HowToCrossCompileBuiltinsOnArm
HowToCrossCompileLLVM
CommandGuide/index
GettingStarted
GettingStartedVS
FAQ
Lexicon
HowToAddABuilder
yaml2obj
HowToSubmitABug
SphinxQuickstartTemplate
MarkdownQuickstartTemplate
Phabricator
TestingGuide
tutorial/index
ReleaseNotes
Passes
YamlIO
GetElementPtr
Frontend/PerformanceTips
MCJITDesignAndImplementation
ORCv2
CodeOfConduct
CompileCudaWithLLVM
ReportingGuide
Benchmarking
Docker
BuildingADistribution
Remarks
:doc: `GettingStarted `
Discusses how to get up and running quickly with the LLVM infrastructure.
Everything from unpacking and compilation of the distribution to execution
of some tools.
:doc: `CMake `
An addendum to the main Getting Started guide for those using the `CMake
build system <http://www.cmake.org> `_.
:doc: `HowToBuildOnARM `
Notes on building and testing LLVM/Clang on ARM.
:doc: `HowToBuildWithPGO `
Notes on building LLVM/Clang with PGO.
:doc: `HowToCrossCompileBuiltinsOnArm `
Notes on cross-building and testing the compiler-rt builtins for Arm.
:doc: `HowToCrossCompileLLVM `
Notes on cross-building and testing LLVM/Clang.
:doc: `GettingStartedVS `
An addendum to the main Getting Started guide for those using Visual Studio
on Windows.
:doc: `tutorial/index `
Tutorials about using LLVM. Includes a tutorial about making a custom
language with LLVM.
:doc: `LLVM Command Guide <CommandGuide/index >`
A reference manual for the LLVM command line utilities ("man" pages for LLVM
tools).
:doc: `Passes `
A list of optimizations and analyses implemented in LLVM.
:doc: `FAQ `
A list of common questions and problems and their solutions.
:doc: `Release notes for the current release <ReleaseNotes >`
This describes new features, known bugs, and other limitations.
:doc: `HowToSubmitABug `
Instructions for properly submitting information about any bugs you run into
in the LLVM system.
:doc: `SphinxQuickstartTemplate `
A template + tutorial for writing new Sphinx documentation. It is meant
to be read in source form.
:doc: `LLVM Testing Infrastructure Guide <TestingGuide >`
A reference manual for using the LLVM testing infrastructure.
:doc: `TestSuiteGuide `
Describes how to compile and run the test-suite benchmarks.
`How to build the C, C++, ObjC, and ObjC++ front end `__
Instructions for building the clang front-end from source.
.. __ : http://clang.llvm.org/get_started.html
:doc: `Lexicon `
Definition of acronyms, terms and concepts used in LLVM.
:doc: `HowToAddABuilder `
Instructions for adding new builder to LLVM buildbot master.
:doc: `YamlIO `
A reference guide for using LLVM's YAML I/O library.
:doc: `GetElementPtr `
Answers to some very frequent questions about LLVM's most frequently
misunderstood instruction.
:doc: `Frontend/PerformanceTips `
A collection of tips for frontend authors on how to generate IR
which LLVM is able to effectively optimize.
:doc: `Docker `
A reference for using Dockerfiles provided with LLVM.
:doc: `BuildingADistribution `
A best-practices guide for using LLVM's CMake build system to package and
distribute LLVM-based tools.
:doc: `Remarks `
A reference on the implementation of remarks in LLVM.
Programming Documentation
=========================
For developers of applications which use LLVM as a library.
.. toctree ::
:hidden:
Atomics
CodingStandards
CommandLine
CompilerWriterInfo
ExtendingLLVM
HowToSetUpLLVMStyleRTTI
ProgrammersManual
Extensions
LibFuzzer
FuzzingLLVM
ScudoHardenedAllocator
OptBisect
GwpAsan
:doc: `LLVM Language Reference Manual <LangRef >`
Defines the LLVM intermediate representation and the assembly form of the
different nodes.
:doc: `Atomics `
Information about LLVM's concurrency model.
:doc: `ProgrammersManual `
Introduction to the general layout of the LLVM sourcebase, important classes
and APIs, and some tips & tricks.
:doc: `Extensions `
LLVM-specific extensions to tools and formats LLVM seeks compatibility with.
:doc: `CommandLine `
Provides information on using the command line parsing library.
:doc: `CodingStandards `
Details the LLVM coding standards and provides useful information on writing
efficient C++ code.
:doc: `HowToSetUpLLVMStyleRTTI `
How to make ``isa<> ``, ``dyn_cast<> ``, etc. available for clients of your
class hierarchy.
:doc: `ExtendingLLVM `
Look here to see how to add instructions and intrinsics to LLVM.
`Doxygen generated documentation <http://llvm.org/doxygen/ >`_
(`classes <http://llvm.org/doxygen/inherits.html >`_)
`Documentation for Go bindings <http://godoc.org/llvm.org/llvm/bindings/go/llvm >`_
`Github Source Repository Browser <http://github.com/llvm/llvm-project// >`_
..
:doc: `CompilerWriterInfo `
A list of helpful links for compiler writers.
:doc: `LibFuzzer `
A library for writing in-process guided fuzzers.
:doc: `FuzzingLLVM `
Information on writing and using Fuzzers to find bugs in LLVM.
:doc: `ScudoHardenedAllocator `
A library that implements a security-hardened `malloc() `.
:doc: `OptBisect `
A command line option for debugging optimization-induced failures.
:doc: `GwpAsan `
A sampled heap memory error detection toolkit designed for production use.
.. _index-subsystem-docs :
Subsystem Documentation
=======================
For API clients and LLVM developers.
Getting Started, How-tos, Developer Guides, and Tutorials.
.. toctree ::
:hidden:
AliasAnalysis
MemorySSA
BitCodeFormat
BlockFrequencyTerminology
BranchWeightMetadata
Bugpoint
BugpointRedesign
CodeGenerator
ExceptionHandling
AddingConstrainedIntrinsics
LinkTimeOptimization
SegmentedStacks
TableGenFundamentals
TableGen/index
DebuggingJITedCode
GoldPlugin
MarkedUpDisassembly
SystemLibrary
SupportLibrary
SourceLevelDebugging
Vectorizers
WritingAnLLVMBackend
GarbageCollection
WritingAnLLVMPass
HowToUseAttributes
NVPTXUsage
AMDGPUUsage
StackMaps
InAlloca
BigEndianNEON
CoverageMappingFormat
Statepoints
MergeFunctions
TypeMetadata
TransformMetadata
FaultMaps
MIRLangRef
Coroutines
GlobalISel
XRay
XRayExample
XRayFDRFormat
PDB/index
CFIVerify
SpeculativeLoadHardening
StackSafetyAnalysis
LoopTerminology
:doc: `WritingAnLLVMPass `
Information on how to write LLVM transformations and analyses.
:doc: `WritingAnLLVMBackend `
Information on how to write LLVM backends for machine targets.
:doc: `CodeGenerator `
The design and implementation of the LLVM code generator. Useful if you are
working on retargetting LLVM to a new architecture, designing a new codegen
pass, or enhancing existing components.
:doc: `Machine IR (MIR) Format Reference Manual <MIRLangRef >`
A reference manual for the MIR serialization format, which is used to test
LLVM's code generation passes.
:doc: `TableGen <TableGen/index >`
Describes the TableGen tool, which is used heavily by the LLVM code
generator.
:doc: `AliasAnalysis `
Information on how to write a new alias analysis implementation or how to
use existing analyses.
:doc: `MemorySSA `
Information about the MemorySSA utility in LLVM, as well as how to use it.
:doc: `GarbageCollection `
The interfaces source-language compilers should use for compiling GC'd
programs.
:doc: `Source Level Debugging with LLVM <SourceLevelDebugging >`
This document describes the design and philosophy behind the LLVM
source-level debugger.
:doc: `Vectorizers `
This document describes the current status of vectorization in LLVM.
:doc: `ExceptionHandling `
This document describes the design and implementation of exception handling
in LLVM.
:doc: `AddingConstrainedIntrinsics `
Gives the steps necessary when adding a new constrained math intrinsic
to LLVM.
:doc: `Bugpoint `
Automatic bug finder and test-case reducer description and usage
information.
:doc: `BugpointRedesign `
Design doc for a redesign of the Bugpoint tool.
:doc: `BitCodeFormat `
This describes the file format and encoding used for LLVM "bc" files.
:doc: `Support Library <SupportLibrary >`
This document describes the LLVM Support Library (``lib/Support ``) and
how to keep LLVM source code portable
:doc: `LinkTimeOptimization `
This document describes the interface between LLVM intermodular optimizer
and the linker and its design
:doc: `GoldPlugin `
How to build your programs with link-time optimization on Linux.
:doc: `DebuggingJITedCode `
How to debug JITed code with GDB.
:doc: `MCJITDesignAndImplementation `
Describes the inner workings of MCJIT execution engine.
:doc: `ORCv2 `
Describes the design and implementation of the ORC APIs, including some
usage examples, and a guide for users transitioning from ORCv1 to ORCv2.
:doc: `BranchWeightMetadata `
Provides information about Branch Prediction Information.
:doc: `BlockFrequencyTerminology `
Provides information about terminology used in the ``BlockFrequencyInfo ``
analysis pass.
:doc: `SegmentedStacks `
This document describes segmented stacks and how they are used in LLVM.
:doc: `MarkedUpDisassembly `
This document describes the optional rich disassembly output syntax.
:doc: `HowToUseAttributes `
Answers some questions about the new Attributes infrastructure.
:doc: `NVPTXUsage `
This document describes using the NVPTX backend to compile GPU kernels.
:doc: `AMDGPUUsage `
This document describes using the AMDGPU backend to compile GPU kernels.
:doc: `StackMaps `
LLVM support for mapping instruction addresses to the location of
values and allowing code to be patched.
:doc: `BigEndianNEON `
LLVM's support for generating NEON instructions on big endian ARM targets is
somewhat nonintuitive. This document explains the implementation and rationale.
:doc: `CoverageMappingFormat `
This describes the format and encoding used for LLVM’s code coverage mapping.
:doc: `Statepoints `
This describes a set of experimental extensions for garbage
collection support.
:doc: `MergeFunctions `
Describes functions merging optimization.
:doc: `InAlloca `
Description of the ``inalloca `` argument attribute.
:doc: `FaultMaps `
LLVM support for folding control flow into faulting machine instructions.
:doc: `CompileCudaWithLLVM `
LLVM support for CUDA.
:doc: `Coroutines `
LLVM support for coroutines.
:doc: `GlobalISel `
This describes the prototype instruction selection replacement, GlobalISel.
:doc: `XRay `
High-level documentation of how to use XRay in LLVM.
:doc: `XRayExample `
An example of how to debug an application with XRay.
:doc: `The Microsoft PDB File Format <PDB/index >`
A detailed description of the Microsoft PDB (Program Database) file format.
:doc: `CFIVerify `
A description of the verification tool for Control Flow Integrity.
Programming Documentation
Subsystem Documentation
User Guides
:doc: `SpeculativeLoadHardening `
A description of the Speculative Load Hardening mitigation for Spectre v1 .
:doc: `UserGuides `
For those new to the LLVM system .
:doc: `StackSafetyAnalysis `
This document describes the design of the stack safety analysis of local
variables.
:doc: `ProgrammingDocumentation `
For developers of applications which use LLVM as a library.
:doc: `LoopTerminology `
A document describing Loops and associated terms as used in LLVM.
:doc: `SubsystemDocumentation `
For API clients and LLVM developers .
Development Process Documentation
=================================
Expand Down