Home | History | Annotate | Download | only in docs
      1 Overview
      2 ========
      3 
      4 .. warning::
      5 
      6    If you are using a released version of LLVM, see `the download page
      7    <http://llvm.org/releases/>`_ to find your documentation.
      8 
      9 The LLVM compiler infrastructure supports a wide range of projects, from
     10 industrial strength compilers to specialized JIT applications to small
     11 research projects.
     12 
     13 Similarly, documentation is broken down into several high-level groupings
     14 targeted at different audiences:
     15 
     16 LLVM Design & Overview
     17 ======================
     18 
     19 Several introductory papers and presentations.
     20 
     21 .. toctree::
     22    :hidden:
     23 
     24    LangRef
     25 
     26 :doc:`LangRef`
     27   Defines the LLVM intermediate representation.
     28 
     29 `Introduction to the LLVM Compiler`__
     30   Presentation providing a users introduction to LLVM.
     31 
     32   .. __: http://llvm.org/pubs/2008-10-04-ACAT-LLVM-Intro.html
     33 
     34 `Intro to LLVM`__
     35   Book chapter providing a compiler hacker's introduction to LLVM.
     36 
     37   .. __: http://www.aosabook.org/en/llvm.html
     38 
     39 
     40 `LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation`__
     41   Design overview.
     42 
     43   .. __: http://llvm.org/pubs/2004-01-30-CGO-LLVM.html
     44 
     45 `LLVM: An Infrastructure for Multi-Stage Optimization`__
     46   More details (quite old now).
     47 
     48   .. __: http://llvm.org/pubs/2002-12-LattnerMSThesis.html
     49 
     50 `Publications mentioning LLVM <http://llvm.org/pubs>`_
     51    ..
     52 
     53 User Guides
     54 ===========
     55 
     56 For those new to the LLVM system.
     57 
     58 NOTE: If you are a user who is only interested in using LLVM-based
     59 compilers, you should look into `Clang <http://clang.llvm.org>`_ or
     60 `DragonEgg <http://dragonegg.llvm.org>`_ instead. The documentation here is
     61 intended for users who have a need to work with the intermediate LLVM
     62 representation.
     63 
     64 .. toctree::
     65    :hidden:
     66 
     67    CMake
     68    HowToBuildOnARM
     69    HowToCrossCompileLLVM
     70    CommandGuide/index
     71    GettingStarted
     72    GettingStartedVS
     73    FAQ
     74    Lexicon
     75    HowToAddABuilder
     76    yaml2obj
     77    HowToSubmitABug
     78    SphinxQuickstartTemplate
     79    Phabricator
     80    TestingGuide
     81    tutorial/index
     82    ReleaseNotes
     83    Passes
     84    YamlIO
     85    GetElementPtr
     86    MCJITDesignAndImplementation
     87 
     88 :doc:`GettingStarted`
     89    Discusses how to get up and running quickly with the LLVM infrastructure.
     90    Everything from unpacking and compilation of the distribution to execution
     91    of some tools.
     92 
     93 :doc:`CMake`
     94    An addendum to the main Getting Started guide for those using the `CMake
     95    build system <http://www.cmake.org>`_.
     96 
     97 :doc:`HowToBuildOnARM`
     98    Notes on building and testing LLVM/Clang on ARM.
     99 
    100 :doc:`HowToCrossCompileLLVM`
    101    Notes on cross-building and testing LLVM/Clang.
    102 
    103 :doc:`GettingStartedVS`
    104    An addendum to the main Getting Started guide for those using Visual Studio
    105    on Windows.
    106 
    107 :doc:`tutorial/index`
    108    Tutorials about using LLVM. Includes a tutorial about making a custom
    109    language with LLVM.
    110 
    111 :doc:`LLVM Command Guide <CommandGuide/index>`
    112    A reference manual for the LLVM command line utilities ("man" pages for LLVM
    113    tools).
    114 
    115 :doc:`Passes`
    116    A list of optimizations and analyses implemented in LLVM.
    117 
    118 :doc:`FAQ`
    119    A list of common questions and problems and their solutions.
    120 
    121 :doc:`Release notes for the current release <ReleaseNotes>`
    122    This describes new features, known bugs, and other limitations.
    123 
    124 :doc:`HowToSubmitABug`
    125    Instructions for properly submitting information about any bugs you run into
    126    in the LLVM system.
    127 
    128 :doc:`SphinxQuickstartTemplate`
    129   A template + tutorial for writing new Sphinx documentation. It is meant
    130   to be read in source form.
    131 
    132 :doc:`LLVM Testing Infrastructure Guide <TestingGuide>`
    133    A reference manual for using the LLVM testing infrastructure.
    134 
    135 `How to build the C, C++, ObjC, and ObjC++ front end`__
    136    Instructions for building the clang front-end from source.
    137 
    138    .. __: http://clang.llvm.org/get_started.html
    139 
    140 :doc:`Lexicon`
    141    Definition of acronyms, terms and concepts used in LLVM.
    142 
    143 :doc:`HowToAddABuilder`
    144    Instructions for adding new builder to LLVM buildbot master.
    145 
    146 :doc:`YamlIO`
    147    A reference guide for using LLVM's YAML I/O library.
    148 
    149 :doc:`GetElementPtr`
    150   Answers to some very frequent questions about LLVM's most frequently
    151   misunderstood instruction.
    152 
    153 Programming Documentation
    154 =========================
    155 
    156 For developers of applications which use LLVM as a library.
    157 
    158 .. toctree::
    159    :hidden:
    160 
    161    Atomics
    162    CodingStandards
    163    CommandLine
    164    CompilerWriterInfo
    165    ExtendingLLVM
    166    HowToSetUpLLVMStyleRTTI
    167    ProgrammersManual
    168    Extensions
    169 
    170 :doc:`LLVM Language Reference Manual <LangRef>`
    171   Defines the LLVM intermediate representation and the assembly form of the
    172   different nodes.
    173 
    174 :doc:`Atomics`
    175   Information about LLVM's concurrency model.
    176 
    177 :doc:`ProgrammersManual`
    178   Introduction to the general layout of the LLVM sourcebase, important classes
    179   and APIs, and some tips & tricks.
    180 
    181 :doc:`Extensions`
    182   LLVM-specific extensions to tools and formats LLVM seeks compatibility with.
    183 
    184 :doc:`CommandLine`
    185   Provides information on using the command line parsing library.
    186 
    187 :doc:`CodingStandards`
    188   Details the LLVM coding standards and provides useful information on writing
    189   efficient C++ code.
    190 
    191 :doc:`HowToSetUpLLVMStyleRTTI`
    192   How to make ``isa<>``, ``dyn_cast<>``, etc. available for clients of your
    193   class hierarchy.
    194 
    195 :doc:`ExtendingLLVM`
    196   Look here to see how to add instructions and intrinsics to LLVM.
    197 
    198 `Doxygen generated documentation <http://llvm.org/doxygen/>`_
    199   (`classes <http://llvm.org/doxygen/inherits.html>`_)
    200   (`tarball <http://llvm.org/doxygen/doxygen.tar.gz>`_)
    201 
    202 `ViewVC Repository Browser <http://llvm.org/viewvc/>`_
    203    ..
    204 
    205 :doc:`CompilerWriterInfo`
    206   A list of helpful links for compiler writers.
    207 
    208 Subsystem Documentation
    209 =======================
    210 
    211 For API clients and LLVM developers.
    212 
    213 .. toctree::
    214    :hidden:
    215 
    216    AliasAnalysis
    217    BitCodeFormat
    218    BlockFrequencyTerminology
    219    BranchWeightMetadata
    220    Bugpoint
    221    CodeGenerator
    222    ExceptionHandling
    223    LinkTimeOptimization
    224    SegmentedStacks
    225    TableGenFundamentals
    226    TableGen/index
    227    DebuggingJITedCode
    228    GoldPlugin
    229    MarkedUpDisassembly
    230    SystemLibrary
    231    SourceLevelDebugging
    232    Vectorizers
    233    WritingAnLLVMBackend
    234    GarbageCollection
    235    WritingAnLLVMPass
    236    HowToUseAttributes
    237    NVPTXUsage
    238    StackMaps
    239    InAlloca
    240    BigEndianNEON
    241 
    242 :doc:`WritingAnLLVMPass`
    243    Information on how to write LLVM transformations and analyses.
    244 
    245 :doc:`WritingAnLLVMBackend`
    246    Information on how to write LLVM backends for machine targets.
    247 
    248 :doc:`CodeGenerator`
    249    The design and implementation of the LLVM code generator.  Useful if you are
    250    working on retargetting LLVM to a new architecture, designing a new codegen
    251    pass, or enhancing existing components.
    252 
    253 :doc:`TableGen <TableGen/index>`
    254    Describes the TableGen tool, which is used heavily by the LLVM code
    255    generator.
    256 
    257 :doc:`AliasAnalysis`
    258    Information on how to write a new alias analysis implementation or how to
    259    use existing analyses.
    260 
    261 :doc:`GarbageCollection`
    262    The interfaces source-language compilers should use for compiling GC'd
    263    programs.
    264 
    265 :doc:`Source Level Debugging with LLVM <SourceLevelDebugging>`
    266    This document describes the design and philosophy behind the LLVM
    267    source-level debugger.
    268 
    269 :doc:`Vectorizers`
    270    This document describes the current status of vectorization in LLVM.
    271 
    272 :doc:`ExceptionHandling`
    273    This document describes the design and implementation of exception handling
    274    in LLVM.
    275 
    276 :doc:`Bugpoint`
    277    Automatic bug finder and test-case reducer description and usage
    278    information.
    279 
    280 :doc:`BitCodeFormat`
    281    This describes the file format and encoding used for LLVM "bc" files.
    282 
    283 :doc:`System Library <SystemLibrary>`
    284    This document describes the LLVM System Library (``lib/System``) and
    285    how to keep LLVM source code portable
    286 
    287 :doc:`LinkTimeOptimization`
    288    This document describes the interface between LLVM intermodular optimizer
    289    and the linker and its design
    290 
    291 :doc:`GoldPlugin`
    292    How to build your programs with link-time optimization on Linux.
    293 
    294 :doc:`DebuggingJITedCode`
    295    How to debug JITed code with GDB.
    296 
    297 :doc:`MCJITDesignAndImplementation`
    298    Describes the inner workings of MCJIT execution engine.
    299 
    300 :doc:`BranchWeightMetadata`
    301    Provides information about Branch Prediction Information.
    302 
    303 :doc:`BlockFrequencyTerminology`
    304    Provides information about terminology used in the ``BlockFrequencyInfo``
    305    analysis pass.
    306 
    307 :doc:`SegmentedStacks`
    308    This document describes segmented stacks and how they are used in LLVM.
    309 
    310 :doc:`MarkedUpDisassembly`
    311    This document describes the optional rich disassembly output syntax.
    312 
    313 :doc:`HowToUseAttributes`
    314   Answers some questions about the new Attributes infrastructure.
    315 
    316 :doc:`NVPTXUsage`
    317    This document describes using the NVPTX back-end to compile GPU kernels.
    318 
    319 :doc:`StackMaps`
    320   LLVM support for mapping instruction addresses to the location of
    321   values and allowing code to be patched.
    322 
    323 :doc:`BigEndianNEON`
    324   LLVM's support for generating NEON instructions on big endian ARM targets is
    325   somewhat nonintuitive. This document explains the implementation and rationale.
    326 
    327 
    328 Development Process Documentation
    329 =================================
    330 
    331 Information about LLVM's development process.
    332 
    333 .. toctree::
    334    :hidden:
    335 
    336    DeveloperPolicy
    337    MakefileGuide
    338    Projects
    339    LLVMBuild
    340    HowToReleaseLLVM
    341    Packaging
    342    ReleaseProcess
    343 
    344 :doc:`DeveloperPolicy`
    345    The LLVM project's policy towards developers and their contributions.
    346 
    347 :doc:`Projects`
    348   How-to guide and templates for new projects that *use* the LLVM
    349   infrastructure.  The templates (directory organization, Makefiles, and test
    350   tree) allow the project code to be located outside (or inside) the ``llvm/``
    351   tree, while using LLVM header files and libraries.
    352 
    353 :doc:`LLVMBuild`
    354   Describes the LLVMBuild organization and files used by LLVM to specify
    355   component descriptions.
    356 
    357 :doc:`MakefileGuide`
    358   Describes how the LLVM makefiles work and how to use them.
    359 
    360 :doc:`HowToReleaseLLVM`
    361   This is a guide to preparing LLVM releases. Most developers can ignore it.
    362 
    363 :doc:`ReleaseProcess`
    364   This is a validate a new release, during the release process. Most developers can ignore it.
    365 
    366 :doc:`Packaging`
    367    Advice on packaging LLVM into a distribution.
    368 
    369 Community
    370 =========
    371 
    372 LLVM has a thriving community of friendly and helpful developers.
    373 The two primary communication mechanisms in the LLVM community are mailing
    374 lists and IRC.
    375 
    376 Mailing Lists
    377 -------------
    378 
    379 If you can't find what you need in these docs, try consulting the mailing
    380 lists.
    381 
    382 `Developer's List (llvmdev)`__
    383   This list is for people who want to be included in technical discussions of
    384   LLVM. People post to this list when they have questions about writing code
    385   for or using the LLVM tools. It is relatively low volume.
    386 
    387   .. __: http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
    388 
    389 `Commits Archive (llvm-commits)`__
    390   This list contains all commit messages that are made when LLVM developers
    391   commit code changes to the repository. It also serves as a forum for
    392   patch review (i.e. send patches here). It is useful for those who want to
    393   stay on the bleeding edge of LLVM development. This list is very high
    394   volume.
    395 
    396   .. __: http://lists.cs.uiuc.edu/pipermail/llvm-commits/
    397 
    398 `Bugs & Patches Archive (llvmbugs)`__
    399   This list gets emailed every time a bug is opened and closed. It is
    400   higher volume than the LLVMdev list.
    401 
    402   .. __: http://lists.cs.uiuc.edu/pipermail/llvmbugs/
    403 
    404 `Test Results Archive (llvm-testresults)`__
    405   A message is automatically sent to this list by every active nightly tester
    406   when it completes.  As such, this list gets email several times each day,
    407   making it a high volume list.
    408 
    409   .. __: http://lists.cs.uiuc.edu/pipermail/llvm-testresults/
    410 
    411 `LLVM Announcements List (llvm-announce)`__
    412   This is a low volume list that provides important announcements regarding
    413   LLVM.  It gets email about once a month.
    414 
    415   .. __: http://lists.cs.uiuc.edu/mailman/listinfo/llvm-announce
    416 
    417 IRC
    418 ---
    419 
    420 Users and developers of the LLVM project (including subprojects such as Clang)
    421 can be found in #llvm on `irc.oftc.net <irc://irc.oftc.net/llvm>`_.
    422 
    423 This channel has several bots.
    424 
    425 * Buildbot reporters
    426 
    427   * llvmbb - Bot for the main LLVM buildbot master.
    428     http://lab.llvm.org:8011/console
    429   * bb-chapuni - An individually run buildbot master. http://bb.pgr.jp/console
    430   * smooshlab - Apple's internal buildbot master.
    431 
    432 * robot - Bugzilla linker. %bug <number>
    433 
    434 * clang-bot - A `geordi <http://www.eelis.net/geordi/>`_ instance running
    435   near-trunk clang instead of gcc.
    436 
    437 
    438 Indices and tables
    439 ==================
    440 
    441 * :ref:`genindex`
    442 * :ref:`search`
    443