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