llvm.org GIT mirror llvm / 21e993c
[docs] Convert docs index page into Sphinx. - Work in progress, this is mostly important because it lets us incrementally migrate the remaining documentation. - Lots of styling, editing, and integration work yet to come… - PR12589 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155133 91177308-0d34-0410-b5e6-96231b3b80d8 Daniel Dunbar 7 years ago
13 changed file(s) with 369 addition(s) and 356 deletion(s). Raw diff Collapse all Expand all
625625
626626
627627
628
629
628630

The CHECK: and CHECK-NOT: directives both take a pattern to match. For most

629631 uses of FileCheck, fixed string matching is perfectly sufficient. For some
630632 things, a more flexible form of matching is desired. To support this, FileCheck
649651 braces explicitly from the input, you can use something ugly like
650652 {{[{][{]}} as your pattern.

651653
654
655
652656
653657
654658
657661
658662
659663
664
665
666
660667
661668

It is often useful to match a pattern and then verify that it occurs again

662669 later in the file. For codegen tests, this can be useful to allow any register,
688695 that FileCheck is not actually line-oriented when it matches, this allows you to
689696 define two separate CHECK lines that match on the same line.
690697

698
699
691700
692701
693702
+0
-50
docs/_templates/index.html less more
None {# This template defines the 'index.html' page which we currently only use as
1 the entry point to the HTML-based documentation, but later can use to provide
2 an entry point for a Sphinx based LLVM website.
3
4 Conceptually, this page is not supposed to be part of the documentation per
5 se (i.e., the content that would be rendered into a PDF, for example), but
6 rather provides entry points into the documentation and links to other
7 content which would only be part of the website. #}
8
9 {% extends "layout.html" %}
10 {% set title = 'lld' %}
11 {% block body %}
12

LLVM System Documentation

13
14

15 This is the front page for the Sphinx-based LLVM documentation. This is
16 currently a work in progress.
17

18
19

Documentation

20
21
22
23
24 Contents
25 for a complete overview

26
27 Search page
28 search the documentation

29
30 General Index
31 all functions, classes, terms

32
33
34
35

Source

36

LLVM is available via public SVN repository:

37 svn co
38
39 http://llvm.org/svn/llvm-project/llvm/trunk.

40
41

LLVM source can be browsed

42 via ViewVC.

43
44

LLVM is also available via a read-only git mirror:

45 git clone
46
47 http://llvm.org/git/llvm.git.

48
49 {% endblock %}
77 {% endblock %}
88
99 {% block rootrellink %}
10
  • LLVM Home | 
  • 11
  • Documentation»;
  • 10
  • LLVM Home | ;
  • 11
  • Documentation»
  • 1212 {% endblock %}
    3535 #source_encoding = 'utf-8-sig'
    3636
    3737 # The master toctree document.
    38 master_doc = 'contents'
    38 master_doc = 'index'
    3939
    4040 # General information about the project.
    4141 project = u'LLVM'
    133133
    134134 # Additional templates that should be rendered to pages, maps page names to
    135135 # template names.
    136 html_additional_pages = {'index': 'index.html'}
    136 #
    137 # We load all the old-school HTML documentation pages into Sphinx here.
    138 basedir = os.path.dirname(__file__)
    139 html_additional_pages = {}
    140 for file in os.listdir(basedir):
    141 if file.endswith('.html'):
    142 name,_ = os.path.splitext(file)
    143 html_additional_pages[name] = file
    137144
    138145 # If false, no module index is generated.
    139146 #html_domain_indices = True
    181188 # Grouping the document tree into LaTeX files. List of tuples
    182189 # (source start file, target name, title, author, documentclass [howto/manual]).
    183190 latex_documents = [
    184 ('contents', 'LLVM.tex', u'LLVM Documentation',
    191 ('index', 'LLVM.tex', u'LLVM Documentation',
    185192 u'LLVM project', 'manual'),
    186193 ]
    187194
    211218 # One entry per manual page. List of tuples
    212219 # (source start file, name, description, authors, manual section).
    213220 man_pages = [
    214 ('contents', 'LLVM', u'LLVM Documentation',
    221 ('index', 'LLVM', u'LLVM Documentation',
    215222 [u'LLVM project'], 1)
    216223 ]
    217224
    225232 # (source start file, target name, title, author,
    226233 # dir menu entry, description, category)
    227234 texinfo_documents = [
    228 ('contents', 'LLVM', u'LLVM Documentation',
    235 ('index', 'LLVM', u'LLVM Documentation',
    229236 u'LLVM project', 'LLVM', 'One line description of project.',
    230237 'Miscellaneous'),
    231238 ]
    +0
    -13
    docs/contents.rst less more
    None .. _contents:
    1
    2 Contents
    3 ========
    4
    5 .. toctree::
    6 :maxdepth: 2
    7
    8 Indices and tables
    9 ==================
    10
    11 * :ref:`genindex`
    12 * :ref:`search`
    0 .. _design_and_overview:
    1
    2 LLVM Design & Overview
    3 ======================
    4
    5 * `LLVM Language Reference Manual `_
    6
    7 Defines the LLVM intermediate representation.
    8
    9 * `Introduction to the LLVM Compiler `_
    10
    11 Presentation providing a users introduction to LLVM.
    12
    13 * `Intro to LLVM `_
    14
    15 Book chapter providing a compiler hacker's introduction to LLVM.
    16
    17 * `LLVM: A Compilation Framework forLifelong Program Analysis & Transformation
    18 `_
    19
    20 Design overview.
    21
    22 * `LLVM: An Infrastructure for Multi-Stage Optimization
    23 `_
    24
    25 More details (quite old now).
    26
    27 * `GetElementPtr FAQ `_
    28
    29 Answers to some very frequent questions about LLVM's most frequently
    30 misunderstood instruction.
    0 .. _development_process:
    1
    2 Development Process Documentation
    3 =================================
    4
    5 * `LLVM Project Guide `_
    6
    7 How-to guide and templates for new projects that *use* the LLVM
    8 infrastructure. The templates (directory organization, Makefiles, and test
    9 tree) allow the project code to be located outside (or inside) the ``llvm/``
    10 tree, while using LLVM header files and libraries.
    11
    12 * `LLVMBuild Documentation `_
    13
    14 Describes the LLVMBuild organization and files used by LLVM to specify
    15 component descriptions.
    16
    17 * `LLVM Makefile Guide `_
    18
    19 Describes how the LLVM makefiles work and how to use them.
    20
    21 * `How To Release LLVM To The Public `_
    22
    23 This is a guide to preparing LLVM releases. Most developers can ignore it.
    +0
    -286
    docs/index.html less more
    None
    1 "http://www.w3.org/TR/html4/strict.dtd">
    2
    3
    4
    5 Documentation for the LLVM System at SVN head
    6
    7
    8
    9
    10

    Documentation for the LLVM System at SVN head

    11
    12

    If you are using a released version of LLVM,

    13 see the download page to find
    14 your documentation.

    15
    16
    17
    18
  • LLVM Design
  • 19
  • LLVM Publications
  • 20
  • LLVM User Guides
  • 21
  • LLVM Programming Documentation
  • 22
  • LLVM Subsystem Documentation
  • 23
  • LLVM Development Process Documentation
  • 24
  • LLVM Mailing Lists
  • 25
    26
    27
    28

    29
    30
    31
    32

    33
    34
    35
    36
    37

    Written by The LLVM Team

    38
    39
    40
    41

    LLVM Design & Overview

    42
    43
    44
    45
  • LLVM Language Reference Manual - Defines the LLVM
  • 46 intermediate representation.
    47
  • Introduction to the LLVM Compiler - Presentation providing a users introduction to LLVM.
  • 48
  • Intro to LLVM - book chapter providing a compiler hacker's introduction to LLVM.
  • 49
  • LLVM: A Compilation Framework for
  • 50 Lifelong Program Analysis & Transformation - Design overview.
    51
  • LLVM: An Infrastructure for
  • 52 Multi-Stage Optimization - More details (quite old now).
    53
  • GetElementPtr FAQ - Answers to some very
  • 54 frequent questions about LLVM's most frequently misunderstood instruction.
    55
    56
    57
    58

    LLVM User Guides

    59
    60
    61
    62
  • The LLVM Getting Started Guide -
  • 63 Discusses how to get up and running quickly with the LLVM infrastructure.
    64 Everything from unpacking and compilation of the distribution to execution of
    65 some tools.
    66
    67
  • LLVM CMake guide - An addendum to the main Getting
  • 68 Started guide for those using the CMake build
    69 system.
    70
    71
    72
  • Getting Started with the LLVM System using
  • 73 Microsoft Visual Studio - An addendum to the main Getting Started guide for
    74 those using Visual Studio on Windows.
    75
    76
  • LLVM Tutorial - A walk through the process of using
  • 77 LLVM for a custom language, and the facilities LLVM offers in tutorial form.
    78
  • Developer Policy - The LLVM project's
  • 79 policy towards developers and their contributions.
    80
    81
  • LLVM Command Guide - A reference
  • 82 manual for the LLVM command line utilities ("man" pages for LLVM tools).
    83
    84
  • LLVM's Analysis and Transform Passes - A list of
  • 85 optimizations and analyses implemented in LLVM.
    86
    87
  • Frequently Asked Questions - A list of common
  • 88 questions and problems and their solutions.
    89
    90
  • Release notes for the current release
  • 91 - This describes new features, known bugs, and other limitations.
    92
    93
  • How to Submit A Bug Report -
  • 94 Instructions for properly submitting information about any bugs you run into in
    95 the LLVM system.
    96
    97
  • LLVM Testing Infrastructure Guide - A reference
  • 98 manual for using the LLVM testing infrastructure.
    99
    100
  • How to build the C, C++, ObjC,
  • 101 and ObjC++ front end - Instructions for building the clang front-end from
    102 source.
    103
    104
  • Packaging guide - Advice on packaging
  • 105 LLVM into a distribution.
    106
    107
  • The LLVM Lexicon - Definition of acronyms, terms
  • 108 and concepts used in LLVM.
    109
    110
  • You can probably find help on the unofficial LLVM IRC
  • 111 channel. We often are on irc.oftc.net in the #llvm channel. If you are
    112 using the mozilla browser, and have chatzilla installed, you can
    113 href="irc://irc.oftc.net/llvm">join #llvm on irc.oftc.net directly.
    114
    115
  • How To Add Your Build Configuration
  • 116 To LLVM Buildbot Infrastructure - Instructions for adding new builder to
    117 LLVM buildbot master.
    118
    119
    120
    121
    122
    123

    LLVM Programming Documentation

    124
    125
    126
    127
  • LLVM Language Reference Manual - Defines the LLVM
  • 128 intermediate representation and the assembly form of the different nodes.
    129
    130
  • The LLVM Programmers Manual -
  • 131 Introduction to the general layout of the LLVM sourcebase, important classes
    132 and APIs, and some tips & tricks.
    133
    134
  • CommandLine library Reference Manual -
  • 135 Provides information on using the command line parsing library.
    136
    137
  • LLVM Coding standards -
  • 138 Details the LLVM coding standards and provides useful information on writing
    139 efficient C++ code.
    140
    141
  • Extending LLVM - Look here to see how
  • 142 to add instructions and intrinsics to LLVM.
    143
    144
  • Doxygen generated
  • 145 documentation (
    146 href="http://llvm.org/doxygen/inherits.html">classes)
    147
    148 (tarball)
    149
    150
    151
  • ViewVC Repository Browser
  • 152
    153
    154
    155
    156

    LLVM Subsystem Documentation

    157
    158
    159
    160
    161
  • Writing an LLVM Pass - Information
  • 162 on how to write LLVM transformations and analyses.
    163
    164
  • Writing an LLVM Backend - Information
  • 165 on how to write LLVM backends for machine targets.
    166
    167
  • The LLVM Target-Independent Code
  • 168 Generator - The design and implementation of the LLVM code generator.
    169 Useful if you are working on retargetting LLVM to a new architecture, designing
    170 a new codegen pass, or enhancing existing components.
    171
    172
  • TableGen Fundamentals -
  • 173 Describes the TableGen tool, which is used heavily by the LLVM code
    174 generator.
    175
    176
  • Alias Analysis in LLVM - Information
  • 177 on how to write a new alias analysis implementation or how to use existing
    178 analyses.
    179
    180
  • Accurate Garbage Collection with
  • 181 LLVM - The interfaces source-language compilers should use for compiling
    182 GC'd programs.
    183
    184
  • Source Level Debugging with
  • 185 LLVM - This document describes the design and philosophy behind the LLVM
    186 source-level debugger.
    187
    188
  • Zero Cost Exception handling in LLVM
  • 189 - This document describes the design and implementation of exception handling
    190 in LLVM.
    191
    192
  • Bugpoint - automatic bug finder and test-case
  • 193 reducer description and usage information.
    194
    195
  • LLVM Bitcode File Format - This describes
  • 196 the file format and encoding used for LLVM "bc" files.
    197
    198
  • System Library - This document describes
  • 199 the LLVM System Library (lib/System) and how to keep LLVM source code
    200 portable
    201
    202
  • Link Time Optimization - This
  • 203 document describes the interface between LLVM intermodular optimizer and
    204 the linker and its design
    205
    206
  • The LLVM gold plugin - How to build your
  • 207 programs with link-time optimization on Linux.
    208
    209
  • The GDB JIT interface - How to debug
  • 210 JITed code with GDB.
    211
    212
  • Branch Weight Metadata - Provides
  • 213 information about Branch Prediction Information.
    214
    215
    216
    217
    218

    LLVM Development Process Documentation

    219
    220
    221
    222
    223
  • LLVM Project Guide - How-to guide and
  • 224 templates for new projects that use the LLVM infrastructure. The
    225 templates (directory organization, Makefiles, and test tree) allow the project
    226 code to be located outside (or inside) the llvm/ tree, while using LLVM
    227 header files and libraries.
    228
    229
  • LLVMBuild Documentation - Describes the
  • 230 LLVMBuild organization and files used by LLVM to specify component
    231 descriptions.
    232
    233
  • LLVM Makefile Guide - Describes how the
  • 234 LLVM makefiles work and how to use them.
    235
    236
  • How To Release LLVM To The Public - This
  • 237 is a guide to preparing LLVM releases. Most developers can ignore it.
    238
    239
    240
    241
    242

    LLVM Mailing Lists

    243
    244
    245
    246
  • The
  • 247 LLVM Announcements List: This is a low volume list that provides important
    248 announcements regarding LLVM. It gets email about once a month.
    249
    250
  • The Developer's
  • 251 List: This list is for people who want to be included in technical
    252 discussions of LLVM. People post to this list when they have questions about
    253 writing code for or using the LLVM tools. It is relatively low volume.
    254
    255
  • The Bugs &
  • 256 Patches Archive: This list gets emailed every time a bug is opened and
    257 closed, and when people submit patches to be included in LLVM. It is higher
    258 volume than the LLVMdev list.
    259
    260
  • The Commits
  • 261 Archive: This list contains all commit messages that are made when LLVM
    262 developers commit code changes to the repository. It is useful for those who
    263 want to stay on the bleeding edge of LLVM development. This list is very high
    264 volume.
    265
    266
  • The
  • 267 Test Results Archive: A message is automatically sent to this list by every
    268 active nightly tester when it completes. As such, this list gets email several
    269 times each day, making it a high volume list.
    270
    271
    272
    273
    274
    275
    276
    277
    278 src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="Valid CSS">
    279
    280 src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01">
    281
    282 LLVM Compiler Infrastructure
    283 Last modified: $Date$
    284
    285
    0 .. _contents:
    1
    2 Overview
    3 ========
    4
    5 .. warning::
    6
    7 If you are using a released version of LLVM, see `the download page
    8 `_ to find your documentation.
    9
    10 The LLVM compiler infrastructure supports a wide range of projects, from
    11 industrial strength compilers to specialized JIT applications to small
    12 research projects.
    13
    14 Similarly, documentation is broken down into several high-level groupings
    15 targetted at different audiences:
    16
    17 * **Design & Overview**
    18
    19 Several introductory papers and presentations are available at
    20 :ref:`design_and_overview`.
    21
    22 * **Publications**
    23
    24 The list of `publications `_ based on LLVM.
    25
    26 * **User Guides**
    27
    28 Those new to the LLVM system should first vist the :ref:`userguides`.
    29
    30 NOTE: If you are a user who is only interested in using LLVM-based
    31 compilers, you should look into `Clang `_ or
    32 `DragonEgg `_ instead. The documentation here is
    33 intended for users who have a need to work with the intermediate LLVM
    34 representation.
    35
    36 * **API Clients**
    37
    38 Developers of applications which use LLVM as a library should visit the
    39 :ref:`programming`.
    40
    41 * **Subsystems**
    42
    43 API clients and LLVM developers may be interested in the
    44 :ref:`subsystems` documentation.
    45
    46 * **Development Process**
    47
    48 Additional documentation on the LLVM project can be found at
    49 :ref:`development_process`.
    50
    51 * **Mailing Lists**
    52
    53 For more information, consider consulting the LLVM :ref:`mailing_lists`.
    54
    55 .. toctree::
    56 :maxdepth: 2
    57
    58 design_and_overview
    59 userguides
    60 programming
    61 subsystems
    62 development_process
    63 mailing_lists
    64
    65 Indices and tables
    66 ==================
    67
    68 * :ref:`genindex`
    69 * :ref:`search`
    0 .. _mailing_lists:
    1
    2 Mailing Lists
    3 =============
    4
    5 * `LLVM Announcements List
    6 `_
    7
    8 This is a low volume list that provides important announcements regarding
    9 LLVM. It gets email about once a month.
    10
    11 * `Developer's List `_
    12
    13 This list is for people who want to be included in technical discussions of
    14 LLVM. People post to this list when they have questions about writing code
    15 for or using the LLVM tools. It is relatively low volume.
    16
    17 * `Bugs & Patches Archive `_
    18
    19 This list gets emailed every time a bug is opened and closed, and when people
    20 submit patches to be included in LLVM. It is higher volume than the LLVMdev
    21 list.
    22
    23 * `Commits Archive `_
    24
    25 This list contains all commit messages that are made when LLVM developers
    26 commit code changes to the repository. It is useful for those who want to
    27 stay on the bleeding edge of LLVM development. This list is very high volume.
    28
    29 * `Test Results Archive
    30 `_
    31
    32 A message is automatically sent to this list by every active nightly tester
    33 when it completes. As such, this list gets email several times each day,
    34 making it a high volume list.
    0 .. _programming:
    1
    2 Programming Documentation
    3 =========================
    4
    5 * `LLVM Language Reference Manual `_
    6
    7 Defines the LLVM intermediate representation and the assembly form of the
    8 different nodes.
    9
    10 * `The LLVM Programmers Manual `_
    11
    12 Introduction to the general layout of the LLVM sourcebase, important classes
    13 and APIs, and some tips & tricks.
    14
    15 * `CommandLine library Reference Manual `_
    16
    17 Provides information on using the command line parsing library.
    18
    19 * `LLVM Coding standards `_
    20
    21 Details the LLVM coding standards and provides useful information on writing
    22 efficient C++ code.
    23
    24 * `Extending LLVM `_
    25
    26 Look here to see how to add instructions and intrinsics to LLVM.
    27
    28 * `Doxygen generated documentation `_
    29
    30 (`classes `_)
    31 (`tarball `_)
    32
    33 * `ViewVC Repository Browser `_
    0 .. _subsystems:
    1
    2 Subsystem Documentation
    3 =======================
    4
    5 * `Writing an LLVM Pass `_
    6
    7 Information on how to write LLVM transformations and analyses.
    8
    9 * `Writing an LLVM Backend `_
    10
    11 Information on how to write LLVM backends for machine targets.
    12
    13 * `The LLVM Target-Independent Code Generator `_
    14
    15 The design and implementation of the LLVM code generator. Useful if you are
    16 working on retargetting LLVM to a new architecture, designing a new codegen
    17 pass, or enhancing existing components.
    18
    19 * `TableGen Fundamentals `_
    20
    21 Describes the TableGen tool, which is used heavily by the LLVM code
    22 generator.
    23
    24 * `Alias Analysis in LLVM `_
    25
    26 Information on how to write a new alias analysis implementation or how to
    27 use existing analyses.
    28
    29 * `Accurate Garbage Collection with LLVM `_
    30
    31 The interfaces source-language compilers should use for compiling GC'd
    32 programs.
    33
    34 * `Source Level Debugging with LLVM `_
    35
    36 This document describes the design and philosophy behind the LLVM
    37 source-level debugger.
    38
    39 * `Zero Cost Exception handling in LLVM `_
    40
    41 This document describes the design and implementation of exception handling
    42 in LLVM.
    43
    44 * `Bugpoint `_
    45
    46 Automatic bug finder and test-case reducer description and usage
    47 information.
    48
    49 * `LLVM Bitcode File Format `_
    50
    51 This describes the file format and encoding used for LLVM "bc" files.
    52
    53 * `System Library `_
    54
    55 This document describes the LLVM System Library (lib/System) and
    56 how to keep LLVM source code portable
    57
    58 * `Link Time Optimization `_
    59
    60 This document describes the interface between LLVM intermodular optimizer
    61 and the linker and its design
    62
    63 * `The LLVM gold plugin `_
    64
    65 How to build your programs with link-time optimization on Linux.
    66
    67 * `The GDB JIT interface `_
    68
    69 How to debug JITed code with GDB.
    70
    71 * `Branch Weight Metadata `_
    72
    73 Provides information about Branch Prediction Information.
    0 .. _userguides:
    1
    2 User Guides
    3 ===========
    4
    5 * `The LLVM Getting Started Guide `_
    6
    7 Discusses how to get up and running quickly with the LLVM infrastructure.
    8 Everything from unpacking and compilation of the distribution to execution
    9 of some tools.
    10
    11 * `LLVM CMake guide `_
    12
    13 An addendum to the main Getting Started guide for those using the `CMake
    14 build system `_.
    15
    16 * `Getting Started with the LLVM System using Microsoft Visual Studio
    17 `_
    18
    19 An addendum to the main Getting Started guide for those using Visual Studio
    20 on Windows.
    21
    22 * `LLVM Tutorial `_
    23
    24 A walk through the process of using LLVM for a custom language, and the
    25 facilities LLVM offers in tutorial form.
    26
    27 * `Developer Policy `_
    28
    29 The LLVM project's policy towards developers and their contributions.
    30
    31 * `LLVM Command Guide `_
    32
    33 A reference manual for the LLVM command line utilities ("man" pages for LLVM
    34 tools).
    35
    36 * `LLVM's Analysis and Transform Passes `_
    37
    38 A list of optimizations and analyses implemented in LLVM.
    39
    40 * `Frequently Asked Questions `_
    41
    42 A list of common questions and problems and their solutions.
    43
    44 * `Release notes for the current release `_
    45
    46 This describes new features, known bugs, and other limitations.
    47
    48 * `How to Submit A Bug Report `_
    49
    50 Instructions for properly submitting information about any bugs you run into
    51 in the LLVM system.
    52
    53 * `LLVM Testing Infrastructure Guide `_
    54
    55 A reference manual for using the LLVM testing infrastructure.
    56
    57 * `How to build the C, C++, ObjC, and ObjC++ front end `_
    58
    59 Instructions for building the clang front-end from source.
    60
    61 * `Packaging guide `_
    62
    63 Advice on packaging LLVM into a distribution.
    64
    65 * `The LLVM Lexicon `_
    66
    67 Definition of acronyms, terms and concepts used in LLVM.
    68
    69 * `How To Add Your Build Configuration To LLVM Buildbot Infrastructure `_
    70
    71 Instructions for adding new builder to LLVM buildbot master.
    72
    73 * **IRC** -- You can probably find help on the unofficial LLVM IRC.
    74
    75 We often are on irc.oftc.net in the #llvm channel. If you are using the
    76 mozilla browser, and have chatzilla installed, you can `join #llvm on
    77 irc.oftc.net `_.