[Docs] Adds new Getting Started/Tutorials page

Adds a new page for Getting Started/Tutorials topics. Also updates existing topic categories on the User Guides and Reference pages.

llvm-svn: 373854
diff --git a/llvm/docs/GettingStartedTutorials.rst b/llvm/docs/GettingStartedTutorials.rst
new file mode 100644
index 0000000..60a5ddf
--- /dev/null
+++ b/llvm/docs/GettingStartedTutorials.rst
@@ -0,0 +1,29 @@
+Getting Started/Tutorials

+=========================

+

+For those new to the LLVM system.

+

+.. toctree::

+   :hidden:

+

+   GettingStarted

+   GettingStartedVS

+   Frontend/PerformanceTips

+   tutorial/index

+

+: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:`tutorial/index`

+   Tutorials about using LLVM. Includes a tutorial about making a custom

+   language with LLVM.

+

+:doc:`GettingStartedVS`

+   An addendum to the main Getting Started guide for those using Visual Studio

+   on Windows.

+

+:doc:`Frontend/PerformanceTips`

+   A collection of tips for frontend authors on how to generate IR

+   which LLVM is able to effectively optimize.
\ No newline at end of file
diff --git a/llvm/docs/ProgrammingDocumentation.rst b/llvm/docs/ProgrammingDocumentation.rst
index 6a4d7aa..a36127a 100644
--- a/llvm/docs/ProgrammingDocumentation.rst
+++ b/llvm/docs/ProgrammingDocumentation.rst
@@ -8,13 +8,10 @@
 

    Atomics

    CommandLine

-   CommandGuide/index

    ExtendingLLVM

    HowToSetUpLLVMStyleRTTI

    ProgrammersManual

    Extensions

-   LibFuzzer

-   FuzzingLLVM

    ScudoHardenedAllocator

    OptBisect

    GwpAsan

@@ -42,26 +39,8 @@
 :doc:`GwpAsan`

   A sampled heap memory error detection toolkit designed for production use.

 

-============

-Command Line

-============

-

 :doc:`CommandLine`

   Provides information on using the command line parsing library.

 

 :doc:`OptBisect`

-  A command line option for debugging optimization-induced failures.

-

-:doc:`LLVM Command Guide <CommandGuide/index>`

-   A reference manual for the LLVM command line utilities ("man" pages for LLVM

-   tools).

-

-=========

-LibFuzzer

-=========

-

-:doc:`LibFuzzer`

-  A library for writing in-process guided fuzzers.

-

-:doc:`FuzzingLLVM`

-  Information on writing and using Fuzzers to find bugs in LLVM.
\ No newline at end of file
+  A command line option for debugging optimization-induced failures.
\ No newline at end of file
diff --git a/llvm/docs/Reference.rst b/llvm/docs/Reference.rst
index 49ff6b6..9346d4d 100644
--- a/llvm/docs/Reference.rst
+++ b/llvm/docs/Reference.rst
@@ -3,27 +3,41 @@
 

 LLVM and API reference documentation.

 

+.. contents::

+   :local:

+

 .. toctree::

    :hidden:

 

-   LangRef

-   TestingGuide

+   Bugpoint

+   CommandGuide/index

    CompilerWriterInfo

+   FuzzingLLVM

+   GarbageCollection

+   GetElementPtr

+   LangRef

+   LibFuzzer

    MIRLangRef

-   NVPTXUsage

-   AMDGPUUsage

+   PDB/index

+   Statepoints

+   TestingGuide

+   YamlIO

 

-==============

+API Reference

+-------------

+

+`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>`_

+

 LLVM Reference

-==============

+--------------

 

 :doc:`LLVM Language Reference Manual <LangRef>`

   Defines the LLVM intermediate representation and the assembly form of the

   different nodes.

 

-:doc:`LLVM Testing Infrastructure Guide <TestingGuide>`

-   A reference manual for using the LLVM testing infrastructure.

-

 :doc:`CompilerWriterInfo`

   A list of helpful links for compiler writers.

 

@@ -31,17 +45,56 @@
    A reference manual for the MIR serialization format, which is used to test

    LLVM's code generation passes.

 

-:doc:`NVPTXUsage`

-   This document describes using the NVPTX backend to compile GPU kernels.

+:doc:`YamlIO`

+   A reference guide for using LLVM's YAML I/O library.

 

-:doc:`AMDGPUUsage`

-   This document describes using the AMDGPU backend to compile GPU kernels.

+:doc:`GetElementPtr`

+  Answers to some very frequent questions about LLVM's most frequently

+  misunderstood instruction.

 

-=============

-API Reference

-=============

+======================

+Command Line Utilities

+======================

 

-`Doxygen generated documentation <http://llvm.org/doxygen/>`_

-  (`classes <http://llvm.org/doxygen/inherits.html>`_)

+:doc:`LLVM Command Guide <CommandGuide/index>`

+   A reference manual for the LLVM command line utilities ("man" pages for LLVM

+   tools).

 

-`Documentation for Go bindings <http://godoc.org/llvm.org/llvm/bindings/go/llvm>`_

+:doc:`Bugpoint`

+   Automatic bug finder and test-case reducer description and usage

+   information.

+

+:doc:`The Microsoft PDB File Format <PDB/index>`

+  A detailed description of the Microsoft PDB (Program Database) file format.

+

+==================

+Garbage Collection

+==================

+

+:doc:`GarbageCollection`

+   The interfaces source-language compilers should use for compiling GC'd

+   programs.

+

+:doc:`Statepoints`

+  This describes a set of experimental extensions for garbage

+  collection support.

+

+=========

+LibFuzzer

+=========

+

+:doc:`LibFuzzer`

+  A library for writing in-process guided fuzzers.

+

+:doc:`FuzzingLLVM`

+  Information on writing and using Fuzzers to find bugs in LLVM.

+

+=======

+Testing

+=======

+

+: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.
\ No newline at end of file
diff --git a/llvm/docs/SubsystemDocumentation.rst b/llvm/docs/SubsystemDocumentation.rst
index 69764cb..81feb43 100644
--- a/llvm/docs/SubsystemDocumentation.rst
+++ b/llvm/docs/SubsystemDocumentation.rst
@@ -13,14 +13,12 @@
    BitCodeFormat

    BlockFrequencyTerminology

    BranchWeightMetadata

-   Bugpoint

    CodeGenerator

    ExceptionHandling

    AddingConstrainedIntrinsics

    LinkTimeOptimization

    SegmentedStacks

    TableGenFundamentals

-   TableGen/index

    DebuggingJITedCode

    GoldPlugin

    MarkedUpDisassembly

@@ -28,15 +26,11 @@
    SupportLibrary

    SourceLevelDebugging

    Vectorizers

-   WritingAnLLVMBackend

-   GarbageCollection

-   WritingAnLLVMPass

    HowToUseAttributes

    StackMaps

    InAlloca

    BigEndianNEON

    CoverageMappingFormat

-   Statepoints

    MergeFunctions

    TypeMetadata

    TransformMetadata

@@ -46,28 +40,12 @@
    XRay

    XRayExample

    XRayFDRFormat

-   PDB/index

    CFIVerify

    SpeculativeLoadHardening

    StackSafetyAnalysis

    LoopTerminology

    DependenceGraphs/index

 

-: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:`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.

@@ -90,10 +68,6 @@
    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.

 

@@ -169,9 +143,6 @@
 :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.

 

@@ -182,21 +153,6 @@
   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.

-

 :doc:`Dependence Graphs <DependenceGraphs/index>`

   A description of the design of the various dependence graphs such as

-  the DDG (Data Dependence Graph).

-

-==================

-Garbage Collection

-==================

-

-:doc:`GarbageCollection`

-   The interfaces source-language compilers should use for compiling GC'd

-   programs.

-

-:doc:`Statepoints`

-  This describes a set of experimental extensions for garbage

-  collection support.

+  the DDG (Data Dependence Graph).
\ No newline at end of file
diff --git a/llvm/docs/UserGuides.rst b/llvm/docs/UserGuides.rst
index d75769a..7016a52 100644
--- a/llvm/docs/UserGuides.rst
+++ b/llvm/docs/UserGuides.rst
@@ -1,13 +1,14 @@
 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.

 

+.. contents::

+   :local:

+

 .. toctree::

    :hidden:

 

@@ -22,9 +23,6 @@
    MarkdownQuickstartTemplate

    Phabricator

    Passes

-   YamlIO

-   GetElementPtr

-   Frontend/PerformanceTips

    MCJITDesignAndImplementation

    ORCv2

    CodeOfConduct

@@ -34,27 +32,14 @@
    Docker

    BuildingADistribution

    Remarks

+   WritingAnLLVMPass

+   WritingAnLLVMBackend

+   TableGen/index

+   NVPTXUsage

+   AMDGPUUsage

 

-Building, Packaging, and Distributing LLVM

-------------------------------------------

-

-How to build, package, and distribute LLVM.

-

-=====

-CMake

-=====

-

-:doc:`BuildingADistribution`

-  A best-practices guide for using LLVM's CMake build system to package and

-  distribute LLVM-based tools.

-

-:doc:`CMake`

-   An addendum to the main Getting Started guide for those using the `CMake

-   build system <http://www.cmake.org>`_.

-

-=====

 Clang

-=====

+-----

 

 :doc:`HowToBuildOnARM`

    Notes on building and testing LLVM/Clang on ARM.

@@ -70,36 +55,58 @@
 

    .. __: http://clang.llvm.org/get_started.html

 

-======

-Docker

-======

+LLVM Builds and Distributions

+-----------------------------

+

+:doc:`BuildingADistribution`

+  A best-practices guide for using LLVM's CMake build system to package and

+  distribute LLVM-based tools.

+

+:doc:`CMake`

+   An addendum to the main Getting Started guide for those using the `CMake

+   build system <http://www.cmake.org>`_.

 

 :doc:`Docker`

    A reference for using Dockerfiles provided with LLVM.

 

-=================

-Additional Topics

-=================

+Optimizations

+-------------

 

-:doc:`HowToCrossCompileBuiltinsOnArm`

-   Notes on cross-building and testing the compiler-rt builtins for Arm.

+:doc:`WritingAnLLVMPass`

+   Information on how to write LLVM transformations and analyses.

 

 :doc:`Passes`

    A list of optimizations and analyses implemented in LLVM.

 

-:doc:`TestSuiteGuide`

-  Describes how to compile and run the test-suite benchmarks.

-

-: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:`LoopTerminology`

+  A document describing Loops and associated terms as used in LLVM.

 

 :doc:`Remarks`

-   A reference on the implementation of remarks in LLVM.
\ No newline at end of file
+   A reference on the implementation of remarks in LLVM.

+

+Code Generation

+---------------

+

+: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:`TableGen <TableGen/index>`

+   Describes the TableGen tool, which is used heavily by the LLVM code

+   generator.

+

+Additional Topics

+-----------------

+

+:doc:`HowToCrossCompileBuiltinsOnArm`

+   Notes on cross-building and testing the compiler-rt builtins for Arm.

+

+: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.
\ No newline at end of file
diff --git a/llvm/docs/index.rst b/llvm/docs/index.rst
index 17a0706..f64979e 100644
--- a/llvm/docs/index.rst
+++ b/llvm/docs/index.rst
@@ -53,13 +53,17 @@
 .. toctree::
    :hidden:
 
-   UserGuides
+   GettingStartedTutorials
    ProgrammingDocumentation
    Reference
    SubsystemDocumentation
+   UserGuides
+
+:doc:`GettingStartedTutorials`
+  For those new to the LLVM system.
 
 :doc:`UserGuides`
-  For those new to the LLVM system.
+  User guides and How-tos.
 
 :doc:`ProgrammingDocumentation`
   For developers of applications which use LLVM as a library.
@@ -70,29 +74,6 @@
 :doc:`Reference`
   LLVM and API reference documentation.
 
-Getting Started/Tutorials
--------------------------
-
-.. toctree::
-   :hidden:
-
-   GettingStarted
-   tutorial/index
-   GettingStartedVS
-
-: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:`tutorial/index`
-   Tutorials about using LLVM. Includes a tutorial about making a custom
-   language with LLVM.
-
-:doc:`GettingStartedVS`
-   An addendum to the main Getting Started guide for those using Visual Studio
-   on Windows.
-
 Community
 =========