About
========

.. warning::

   If you are using a released version of LLVM, see `the download page
   <https://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.

Similarly, documentation is broken down into several high-level groupings
targeted at different audiences:

LLVM Design & Overview
======================

Several introductory papers and presentations.

.. toctree::
   :hidden:

   FAQ
   Lexicon

:doc:`FAQ`
  Frequently asked questions.

:doc:`Lexicon`
  Glossary.

`Introduction to the LLVM Compiler`__
  Presentation providing a users introduction to LLVM.

  .. __: https://llvm.org/pubs/2008-10-04-ACAT-LLVM-Intro.html

`Intro to LLVM`__
  A chapter from the book "The Architecture of Open Source Applications" that
  describes high-level design decisions that shaped LLVM.

  .. __: http://www.aosabook.org/en/llvm.html


`LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation`__
  Design overview.

  .. __: https://llvm.org/pubs/2004-01-30-CGO-LLVM.html

`LLVM: An Infrastructure for Multi-Stage Optimization`__
  More details (quite old now).

  .. __: https://llvm.org/pubs/2002-12-LattnerMSThesis.html

Documentation
=============

Getting Started, How-tos, Developer Guides, and Tutorials.

.. toctree::
   :hidden:

   GettingStartedTutorials
   Reference
   UserGuides
   DiscourseMigrationGuide

:doc:`GettingStartedTutorials`
  For those new to the LLVM system.

:doc:`UserGuides`
  User guides and How-tos.

:doc:`Reference`
  LLVM and API reference documentation.

:doc:`DiscourseMigrationGuide`
  Guide for users to migrate to Discourse

Community
=========

LLVM welcomes contributions of all kinds. To learn more, see the following articles:

.. toctree::
   :hidden:

   GettingInvolved

* :doc:`GettingInvolved`
* :ref:`development-process`
* :ref:`lists-forums`
* :ref:`meetups-social-events`
* :ref:`community-proposals`

  Reporting a security issue

* :ref:`report-security-issue`

Indices and tables
==================

* :ref:`genindex`
* :ref:`search`
