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