summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--llvm/docs/ProgrammingDocumentation.rst75
-rw-r--r--llvm/docs/SubsystemDocumentation.rst210
-rw-r--r--llvm/docs/UserGuides.rst135
-rw-r--r--llvm/docs/index.rst428
4 files changed, 433 insertions, 415 deletions
diff --git a/llvm/docs/ProgrammingDocumentation.rst b/llvm/docs/ProgrammingDocumentation.rst
new file mode 100644
index 00000000000..a5115089853
--- /dev/null
+++ b/llvm/docs/ProgrammingDocumentation.rst
@@ -0,0 +1,75 @@
+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. \ No newline at end of file
diff --git a/llvm/docs/SubsystemDocumentation.rst b/llvm/docs/SubsystemDocumentation.rst
new file mode 100644
index 00000000000..005d541ceb3
--- /dev/null
+++ b/llvm/docs/SubsystemDocumentation.rst
@@ -0,0 +1,210 @@
+.. _index-subsystem-docs:
+
+Subsystem Documentation
+=======================
+
+For API clients and LLVM developers.
+
+.. 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.
+
+: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.
+
+:doc:`LoopTerminology`
+ A document describing Loops and associated terms as used in LLVM. \ No newline at end of file
diff --git a/llvm/docs/UserGuides.rst b/llvm/docs/UserGuides.rst
new file mode 100644
index 00000000000..67a66d15fcc
--- /dev/null
+++ b/llvm/docs/UserGuides.rst
@@ -0,0 +1,135 @@
+User Guides
+===========
+
+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. \ No newline at end of file
diff --git a/llvm/docs/index.rst b/llvm/docs/index.rst
index afa9a133044..fdabf203dea 100644
--- a/llvm/docs/index.rst
+++ b/llvm/docs/index.rst
@@ -1,4 +1,4 @@
-Overview
+About
========
.. warning::
@@ -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
=================================
OpenPOWER on IntegriCloud