Overview
========
-.. warning::
-
- If you are using a released version of LLVM, see `the download page
- <http://llvm.org/releases/>`_ to find your documentation.
-
The LLVM compiler infrastructure supports a wide range of projects, from
industrial strength compilers to specialized JIT applications to small
research projects.
For those new to the LLVM system.
-NOTE: If you are a user who is only interested in using LLVM-based
-compilers, you should look into `Clang <http://clang.llvm.org>`_ or
-`DragonEgg <http://dragonegg.llvm.org>`_ instead. The documentation here is
-intended for users who have a need to work with the intermediate LLVM
-representation.
+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:
CMakePrimer
AdvancedBuilds
HowToBuildOnARM
+ HowToBuildWithPGO
+ HowToCrossCompileBuiltinsOnArm
HowToCrossCompileLLVM
CommandGuide/index
GettingStarted
yaml2obj
HowToSubmitABug
SphinxQuickstartTemplate
+ MarkdownQuickstartTemplate
Phabricator
TestingGuide
tutorial/index
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.
: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:`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.
misunderstood instruction.
:doc:`Frontend/PerformanceTips`
- A collection of tips for frontend authors on how to generate IR
+ 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
=========================
ProgrammersManual
Extensions
LibFuzzer
+ FuzzingLLVM
ScudoHardenedAllocator
+ OptBisect
:doc:`LLVM Language Reference Manual <LangRef>`
Defines the LLVM intermediate representation and the assembly form of the
`Doxygen generated documentation <http://llvm.org/doxygen/>`_
(`classes <http://llvm.org/doxygen/inherits.html>`_)
- (`tarball <http://llvm.org/doxygen/doxygen.tar.gz>`_)
`Documentation for Go bindings <http://godoc.org/llvm.org/llvm/bindings/go/llvm>`_
-`ViewVC Repository Browser <http://llvm.org/viewvc/>`_
+`Github Source Repository Browser <http://github.com/llvm/llvm-project//>`_
..
:doc:`CompilerWriterInfo`
: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.
+
+.. _index-subsystem-docs:
+
Subsystem Documentation
=======================
Bugpoint
CodeGenerator
ExceptionHandling
+ AddingConstrainedIntrinsics
LinkTimeOptimization
SegmentedStacks
TableGenFundamentals
GoldPlugin
MarkedUpDisassembly
SystemLibrary
+ SupportLibrary
SourceLevelDebugging
Vectorizers
WritingAnLLVMBackend
Statepoints
MergeFunctions
TypeMetadata
+ TransformMetadata
FaultMaps
MIRLangRef
Coroutines
+ GlobalISel
+ XRay
+ XRayExample
+ XRayFDRFormat
+ PDB/index
+ CFIVerify
+ SpeculativeLoadHardening
+ StackSafetyAnalysis
:doc:`WritingAnLLVMPass`
Information on how to write LLVM transformations and analyses.
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:`BitCodeFormat`
This describes the file format and encoding used for LLVM "bc" files.
-:doc:`System Library <SystemLibrary>`
- This document describes the LLVM System Library (``lib/System``) and
+:doc:`Support Library <SupportLibrary>`
+ This document describes the LLVM Support Library (``lib/Support``) and
how to keep LLVM source code portable
:doc:`LinkTimeOptimization`
: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.
Answers some questions about the new Attributes infrastructure.
:doc:`NVPTXUsage`
- This document describes using the NVPTX back-end to compile GPU kernels.
+ This document describes using the NVPTX backend to compile GPU kernels.
:doc:`AMDGPUUsage`
- This document describes how to use the AMDGPU back-end.
+ This document describes using the AMDGPU backend to compile GPU kernels.
:doc:`StackMaps`
LLVM support for mapping instruction addresses to the location of
: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.
+
+:doc:`SpeculativeLoadHardening`
+ A description of the Speculative Load Hardening mitigation for Spectre v1.
+
+:doc:`StackSafetyAnalysis`
+ This document describes the design of the stack safety analysis of local
+ variables.
+
Development Process Documentation
=================================
.. toctree::
:hidden:
+ Contributing
DeveloperPolicy
Projects
LLVMBuild
Packaging
ReleaseProcess
Phabricator
+ BugLifeCycle
+
+:doc:`Contributing`
+ An overview on how to contribute to LLVM.
:doc:`DeveloperPolicy`
The LLVM project's policy towards developers and their contributions.
Describes how to use the Phabricator code review tool hosted on
http://reviews.llvm.org/ and its command line interface, Arcanist.
+:doc:`BugLifeCycle`
+ Describes how bugs are reported, triaged and closed.
+
Community
=========
* llvmbb - Bot for the main LLVM buildbot master.
http://lab.llvm.org:8011/console
- * bb-chapuni - An individually run buildbot master. http://bb.pgr.jp/console
* smooshlab - Apple's internal buildbot master.
* robot - Bugzilla linker. %bug <number>
* clang-bot - A `geordi <http://www.eelis.net/geordi/>`_ instance running
near-trunk clang instead of gcc.
+Meetups and social events
+-------------------------
+
+.. toctree::
+ :hidden:
+
+ MeetupGuidelines
+
+Besides developer `meetings and conferences <https://llvm.org/devmtg/>`_,
+there are several user groups called
+`LLVM Socials <https://www.meetup.com/pro/llvm/>`_. We greatly encourage you to
+join one in your city. Or start a new one if there is none:
+
+:doc:`MeetupGuidelines`
+
Community wide proposals
------------------------
:hidden:
CodeOfConduct
- Proposals/GitHubSubMod
+ Proposals/GitHubMove
+ Proposals/TestSuite
+ Proposals/VariableNames
+ Proposals/VectorizationPlan
:doc:`CodeOfConduct`
Proposal to adopt a code of conduct on the LLVM social spaces (lists, events,
IRC, etc).
-:doc:`Proposals/GitHubSubMod`
+:doc:`Proposals/GitHubMove`
Proposal to move from SVN/Git to GitHub.
+:doc:`Proposals/TestSuite`
+ Proposals for additional benchmarks/programs for llvm's test-suite.
+
+:doc:`Proposals/VariableNames`
+ Proposal to change the variable names coding standard.
+
+:doc:`Proposals/VectorizationPlan`
+ Proposal to model the process and upgrade the infrastructure of LLVM's Loop Vectorizer.
Indices and tables
==================