xref: /minix3/external/bsd/llvm/dist/llvm/docs/index.rst (revision 0b98e8aad89f2bd4ba80b523d73cf29e9dd82ce1)
1Overview
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
9The LLVM compiler infrastructure supports a wide range of projects, from
10industrial strength compilers to specialized JIT applications to small
11research projects.
12
13Similarly, documentation is broken down into several high-level groupings
14targeted at different audiences:
15
16LLVM Design & Overview
17======================
18
19Several 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
53User Guides
54===========
55
56For those new to the LLVM system.
57
58NOTE: If you are a user who is only interested in using LLVM-based
59compilers, you should look into `Clang <http://clang.llvm.org>`_ or
60`DragonEgg <http://dragonegg.llvm.org>`_ instead. The documentation here is
61intended for users who have a need to work with the intermediate LLVM
62representation.
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
153Programming Documentation
154=========================
155
156For 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
208Subsystem Documentation
209=======================
210
211For API clients and LLVM developers.
212
213.. toctree::
214   :hidden:
215
216   AliasAnalysis
217   BitCodeFormat
218   BranchWeightMetadata
219   Bugpoint
220   CodeGenerator
221   ExceptionHandling
222   LinkTimeOptimization
223   SegmentedStacks
224   TableGenFundamentals
225   DebuggingJITedCode
226   GoldPlugin
227   MarkedUpDisassembly
228   SystemLibrary
229   SourceLevelDebugging
230   Vectorizers
231   WritingAnLLVMBackend
232   GarbageCollection
233   WritingAnLLVMPass
234   TableGen/LangRef
235   HowToUseAttributes
236   NVPTXUsage
237
238:doc:`WritingAnLLVMPass`
239   Information on how to write LLVM transformations and analyses.
240
241:doc:`WritingAnLLVMBackend`
242   Information on how to write LLVM backends for machine targets.
243
244:doc:`CodeGenerator`
245   The design and implementation of the LLVM code generator.  Useful if you are
246   working on retargetting LLVM to a new architecture, designing a new codegen
247   pass, or enhancing existing components.
248
249:doc:`TableGenFundamentals`
250   Describes the TableGen tool, which is used heavily by the LLVM code
251   generator.
252
253:doc:`AliasAnalysis`
254   Information on how to write a new alias analysis implementation or how to
255   use existing analyses.
256
257:doc:`GarbageCollection`
258   The interfaces source-language compilers should use for compiling GC'd
259   programs.
260
261:doc:`Source Level Debugging with LLVM <SourceLevelDebugging>`
262   This document describes the design and philosophy behind the LLVM
263   source-level debugger.
264
265:doc:`Vectorizers`
266   This document describes the current status of vectorization in LLVM.
267
268:doc:`ExceptionHandling`
269   This document describes the design and implementation of exception handling
270   in LLVM.
271
272:doc:`Bugpoint`
273   Automatic bug finder and test-case reducer description and usage
274   information.
275
276:doc:`BitCodeFormat`
277   This describes the file format and encoding used for LLVM "bc" files.
278
279:doc:`System Library <SystemLibrary>`
280   This document describes the LLVM System Library (``lib/System``) and
281   how to keep LLVM source code portable
282
283:doc:`LinkTimeOptimization`
284   This document describes the interface between LLVM intermodular optimizer
285   and the linker and its design
286
287:doc:`GoldPlugin`
288   How to build your programs with link-time optimization on Linux.
289
290:doc:`DebuggingJITedCode`
291   How to debug JITed code with GDB.
292
293:doc:`MCJITDesignAndImplementation`
294   Describes the inner workings of MCJIT execution engine.
295
296:doc:`BranchWeightMetadata`
297   Provides information about Branch Prediction Information.
298
299:doc:`SegmentedStacks`
300   This document describes segmented stacks and how they are used in LLVM.
301
302:doc:`MarkedUpDisassembly`
303   This document describes the optional rich disassembly output syntax.
304
305:doc:`HowToUseAttributes`
306  Answers some questions about the new Attributes infrastructure.
307
308:doc:`NVPTXUsage`
309   This document describes using the NVPTX back-end to compile GPU kernels.
310
311
312Development Process Documentation
313=================================
314
315Information about LLVM's development process.
316
317.. toctree::
318   :hidden:
319
320   DeveloperPolicy
321   MakefileGuide
322   Projects
323   LLVMBuild
324   HowToReleaseLLVM
325   Packaging
326   ReleaseProcess
327
328:doc:`DeveloperPolicy`
329   The LLVM project's policy towards developers and their contributions.
330
331:doc:`Projects`
332  How-to guide and templates for new projects that *use* the LLVM
333  infrastructure.  The templates (directory organization, Makefiles, and test
334  tree) allow the project code to be located outside (or inside) the ``llvm/``
335  tree, while using LLVM header files and libraries.
336
337:doc:`LLVMBuild`
338  Describes the LLVMBuild organization and files used by LLVM to specify
339  component descriptions.
340
341:doc:`MakefileGuide`
342  Describes how the LLVM makefiles work and how to use them.
343
344:doc:`HowToReleaseLLVM`
345  This is a guide to preparing LLVM releases. Most developers can ignore it.
346
347:doc:`ReleaseProcess`
348  This is a validate a new release, during the release process. Most developers can ignore it.
349
350:doc:`Packaging`
351   Advice on packaging LLVM into a distribution.
352
353Community
354=========
355
356LLVM has a thriving community of friendly and helpful developers.
357The two primary communication mechanisms in the LLVM community are mailing
358lists and IRC.
359
360Mailing Lists
361-------------
362
363If you can't find what you need in these docs, try consulting the mailing
364lists.
365
366`Developer's List (llvmdev)`__
367  This list is for people who want to be included in technical discussions of
368  LLVM. People post to this list when they have questions about writing code
369  for or using the LLVM tools. It is relatively low volume.
370
371  .. __: http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
372
373`Commits Archive (llvm-commits)`__
374  This list contains all commit messages that are made when LLVM developers
375  commit code changes to the repository. It also serves as a forum for
376  patch review (i.e. send patches here). It is useful for those who want to
377  stay on the bleeding edge of LLVM development. This list is very high
378  volume.
379
380  .. __: http://lists.cs.uiuc.edu/pipermail/llvm-commits/
381
382`Bugs & Patches Archive (llvmbugs)`__
383  This list gets emailed every time a bug is opened and closed. It is
384  higher volume than the LLVMdev list.
385
386  .. __: http://lists.cs.uiuc.edu/pipermail/llvmbugs/
387
388`Test Results Archive (llvm-testresults)`__
389  A message is automatically sent to this list by every active nightly tester
390  when it completes.  As such, this list gets email several times each day,
391  making it a high volume list.
392
393  .. __: http://lists.cs.uiuc.edu/pipermail/llvm-testresults/
394
395`LLVM Announcements List (llvm-announce)`__
396  This is a low volume list that provides important announcements regarding
397  LLVM.  It gets email about once a month.
398
399  .. __: http://lists.cs.uiuc.edu/mailman/listinfo/llvm-announce
400
401IRC
402---
403
404Users and developers of the LLVM project (including subprojects such as Clang)
405can be found in #llvm on `irc.oftc.net <irc://irc.oftc.net/llvm>`_.
406
407This channel has several bots.
408
409* Buildbot reporters
410
411  * llvmbb - Bot for the main LLVM buildbot master.
412    http://lab.llvm.org:8011/console
413  * bb-chapuni - An individually run buildbot master. http://bb.pgr.jp/console
414  * smooshlab - Apple's internal buildbot master.
415
416* robot - Bugzilla linker. %bug <number>
417
418* clang-bot - A `geordi <http://www.eelis.net/geordi/>`_ instance running
419  near-trunk clang instead of gcc.
420
421
422Indices and tables
423==================
424
425* :ref:`genindex`
426* :ref:`search`
427