OSDN Git Service

[docs] Move GitHub to GitHubSubMod
[android-x86/external-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
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    CMakePrimer
69    AdvancedBuilds
70    HowToBuildOnARM
71    HowToCrossCompileLLVM
72    CommandGuide/index
73    GettingStarted
74    GettingStartedVS
75    FAQ
76    Lexicon
77    HowToAddABuilder
78    yaml2obj
79    HowToSubmitABug
80    SphinxQuickstartTemplate
81    Phabricator
82    TestingGuide
83    tutorial/index
84    ReleaseNotes
85    Passes
86    YamlIO
87    GetElementPtr
88    Frontend/PerformanceTips
89    MCJITDesignAndImplementation
90    CodeOfConduct
91    CompileCudaWithLLVM
92    ReportingGuide
93
94 :doc:`GettingStarted`
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    An addendum to the main Getting Started guide for those using the `CMake
101    build system <http://www.cmake.org>`_.
102
103 :doc:`HowToBuildOnARM`
104    Notes on building and testing LLVM/Clang on ARM.
105
106 :doc:`HowToCrossCompileLLVM`
107    Notes on cross-building and testing LLVM/Clang.
108
109 :doc:`GettingStartedVS`
110    An addendum to the main Getting Started guide for those using Visual Studio
111    on Windows.
112
113 :doc:`tutorial/index`
114    Tutorials about using LLVM. Includes a tutorial about making a custom
115    language with LLVM.
116
117 :doc:`LLVM Command Guide <CommandGuide/index>`
118    A reference manual for the LLVM command line utilities ("man" pages for LLVM
119    tools).
120
121 :doc:`Passes`
122    A list of optimizations and analyses implemented in LLVM.
123
124 :doc:`FAQ`
125    A list of common questions and problems and their solutions.
126
127 :doc:`Release notes for the current release <ReleaseNotes>`
128    This describes new features, known bugs, and other limitations.
129
130 :doc:`HowToSubmitABug`
131    Instructions for properly submitting information about any bugs you run into
132    in the LLVM system.
133
134 :doc:`SphinxQuickstartTemplate`
135   A template + tutorial for writing new Sphinx documentation. It is meant
136   to be read in source form.
137
138 :doc:`LLVM Testing Infrastructure Guide <TestingGuide>`
139    A reference manual for using the LLVM testing infrastructure.
140
141 `How to build the C, C++, ObjC, and ObjC++ front end`__
142    Instructions for building the clang front-end from source.
143
144    .. __: http://clang.llvm.org/get_started.html
145
146 :doc:`Lexicon`
147    Definition of acronyms, terms and concepts used in LLVM.
148
149 :doc:`HowToAddABuilder`
150    Instructions for adding new builder to LLVM buildbot master.
151
152 :doc:`YamlIO`
153    A reference guide for using LLVM's YAML I/O library.
154
155 :doc:`GetElementPtr`
156   Answers to some very frequent questions about LLVM's most frequently
157   misunderstood instruction.
158
159 :doc:`Frontend/PerformanceTips`
160    A collection of tips for frontend authors on how to generate IR 
161    which LLVM is able to effectively optimize.
162
163
164 Programming Documentation
165 =========================
166
167 For developers of applications which use LLVM as a library.
168
169 .. toctree::
170    :hidden:
171
172    Atomics
173    CodingStandards
174    CommandLine
175    CompilerWriterInfo
176    ExtendingLLVM
177    HowToSetUpLLVMStyleRTTI
178    ProgrammersManual
179    Extensions
180    LibFuzzer
181    ScudoHardenedAllocator
182
183 :doc:`LLVM Language Reference Manual <LangRef>`
184   Defines the LLVM intermediate representation and the assembly form of the
185   different nodes.
186
187 :doc:`Atomics`
188   Information about LLVM's concurrency model.
189
190 :doc:`ProgrammersManual`
191   Introduction to the general layout of the LLVM sourcebase, important classes
192   and APIs, and some tips & tricks.
193
194 :doc:`Extensions`
195   LLVM-specific extensions to tools and formats LLVM seeks compatibility with.
196
197 :doc:`CommandLine`
198   Provides information on using the command line parsing library.
199
200 :doc:`CodingStandards`
201   Details the LLVM coding standards and provides useful information on writing
202   efficient C++ code.
203
204 :doc:`HowToSetUpLLVMStyleRTTI`
205   How to make ``isa<>``, ``dyn_cast<>``, etc. available for clients of your
206   class hierarchy.
207
208 :doc:`ExtendingLLVM`
209   Look here to see how to add instructions and intrinsics to LLVM.
210
211 `Doxygen generated documentation <http://llvm.org/doxygen/>`_
212   (`classes <http://llvm.org/doxygen/inherits.html>`_)
213   (`tarball <http://llvm.org/doxygen/doxygen.tar.gz>`_)
214
215 `Documentation for Go bindings <http://godoc.org/llvm.org/llvm/bindings/go/llvm>`_
216
217 `ViewVC Repository Browser <http://llvm.org/viewvc/>`_
218    ..
219
220 :doc:`CompilerWriterInfo`
221   A list of helpful links for compiler writers.
222
223 :doc:`LibFuzzer`
224   A library for writing in-process guided fuzzers.
225
226 :doc:`ScudoHardenedAllocator`
227   A library that implements a security-hardened `malloc()`.
228
229 Subsystem Documentation
230 =======================
231
232 For API clients and LLVM developers.
233
234 .. toctree::
235    :hidden:
236
237    AliasAnalysis
238    BitCodeFormat
239    BlockFrequencyTerminology
240    BranchWeightMetadata
241    Bugpoint
242    CodeGenerator
243    ExceptionHandling
244    LinkTimeOptimization
245    SegmentedStacks
246    TableGenFundamentals
247    TableGen/index
248    DebuggingJITedCode
249    GoldPlugin
250    MarkedUpDisassembly
251    SystemLibrary
252    SourceLevelDebugging
253    Vectorizers
254    WritingAnLLVMBackend
255    GarbageCollection
256    WritingAnLLVMPass
257    HowToUseAttributes
258    NVPTXUsage
259    AMDGPUUsage
260    StackMaps
261    InAlloca
262    BigEndianNEON
263    CoverageMappingFormat
264    Statepoints
265    MergeFunctions
266    TypeMetadata
267    FaultMaps
268    MIRLangRef
269
270 :doc:`WritingAnLLVMPass`
271    Information on how to write LLVM transformations and analyses.
272
273 :doc:`WritingAnLLVMBackend`
274    Information on how to write LLVM backends for machine targets.
275
276 :doc:`CodeGenerator`
277    The design and implementation of the LLVM code generator.  Useful if you are
278    working on retargetting LLVM to a new architecture, designing a new codegen
279    pass, or enhancing existing components.
280
281 :doc:`Machine IR (MIR) Format Reference Manual <MIRLangRef>`
282    A reference manual for the MIR serialization format, which is used to test
283    LLVM's code generation passes.
284
285 :doc:`TableGen <TableGen/index>`
286    Describes the TableGen tool, which is used heavily by the LLVM code
287    generator.
288
289 :doc:`AliasAnalysis`
290    Information on how to write a new alias analysis implementation or how to
291    use existing analyses.
292
293 :doc:`GarbageCollection`
294    The interfaces source-language compilers should use for compiling GC'd
295    programs.
296
297 :doc:`Source Level Debugging with LLVM <SourceLevelDebugging>`
298    This document describes the design and philosophy behind the LLVM
299    source-level debugger.
300
301 :doc:`Vectorizers`
302    This document describes the current status of vectorization in LLVM.
303
304 :doc:`ExceptionHandling`
305    This document describes the design and implementation of exception handling
306    in LLVM.
307
308 :doc:`Bugpoint`
309    Automatic bug finder and test-case reducer description and usage
310    information.
311
312 :doc:`BitCodeFormat`
313    This describes the file format and encoding used for LLVM "bc" files.
314
315 :doc:`System Library <SystemLibrary>`
316    This document describes the LLVM System Library (``lib/System``) and
317    how to keep LLVM source code portable
318
319 :doc:`LinkTimeOptimization`
320    This document describes the interface between LLVM intermodular optimizer
321    and the linker and its design
322
323 :doc:`GoldPlugin`
324    How to build your programs with link-time optimization on Linux.
325
326 :doc:`DebuggingJITedCode`
327    How to debug JITed code with GDB.
328
329 :doc:`MCJITDesignAndImplementation`
330    Describes the inner workings of MCJIT execution engine.
331
332 :doc:`BranchWeightMetadata`
333    Provides information about Branch Prediction Information.
334
335 :doc:`BlockFrequencyTerminology`
336    Provides information about terminology used in the ``BlockFrequencyInfo``
337    analysis pass.
338
339 :doc:`SegmentedStacks`
340    This document describes segmented stacks and how they are used in LLVM.
341
342 :doc:`MarkedUpDisassembly`
343    This document describes the optional rich disassembly output syntax.
344
345 :doc:`HowToUseAttributes`
346   Answers some questions about the new Attributes infrastructure.
347
348 :doc:`NVPTXUsage`
349    This document describes using the NVPTX back-end to compile GPU kernels.
350
351 :doc:`AMDGPUUsage`
352    This document describes how to use the AMDGPU back-end.
353
354 :doc:`StackMaps`
355   LLVM support for mapping instruction addresses to the location of
356   values and allowing code to be patched.
357
358 :doc:`BigEndianNEON`
359   LLVM's support for generating NEON instructions on big endian ARM targets is
360   somewhat nonintuitive. This document explains the implementation and rationale.
361
362 :doc:`CoverageMappingFormat`
363   This describes the format and encoding used for LLVM’s code coverage mapping.
364
365 :doc:`Statepoints`
366   This describes a set of experimental extensions for garbage
367   collection support.
368
369 :doc:`MergeFunctions`
370   Describes functions merging optimization.
371
372 :doc:`InAlloca`
373   Description of the ``inalloca`` argument attribute.
374
375 :doc:`FaultMaps`
376   LLVM support for folding control flow into faulting machine instructions.
377
378 :doc:`CompileCudaWithLLVM`
379   LLVM support for CUDA.
380
381 Development Process Documentation
382 =================================
383
384 Information about LLVM's development process.
385
386 .. toctree::
387    :hidden:
388
389    DeveloperPolicy
390    Projects
391    LLVMBuild
392    HowToReleaseLLVM
393    Packaging
394    ReleaseProcess
395    Phabricator
396
397 :doc:`DeveloperPolicy`
398    The LLVM project's policy towards developers and their contributions.
399
400 :doc:`Projects`
401   How-to guide and templates for new projects that *use* the LLVM
402   infrastructure.  The templates (directory organization, Makefiles, and test
403   tree) allow the project code to be located outside (or inside) the ``llvm/``
404   tree, while using LLVM header files and libraries.
405
406 :doc:`LLVMBuild`
407   Describes the LLVMBuild organization and files used by LLVM to specify
408   component descriptions.
409
410 :doc:`HowToReleaseLLVM`
411   This is a guide to preparing LLVM releases. Most developers can ignore it.
412
413 :doc:`ReleaseProcess`
414   This is a guide to validate a new release, during the release process. Most developers can ignore it.
415
416 :doc:`Packaging`
417    Advice on packaging LLVM into a distribution.
418
419 :doc:`Phabricator`
420    Describes how to use the Phabricator code review tool hosted on
421    http://reviews.llvm.org/ and its command line interface, Arcanist.
422
423 Community
424 =========
425
426 LLVM has a thriving community of friendly and helpful developers.
427 The two primary communication mechanisms in the LLVM community are mailing
428 lists and IRC.
429
430 Mailing Lists
431 -------------
432
433 If you can't find what you need in these docs, try consulting the mailing
434 lists.
435
436 `Developer's List (llvm-dev)`__
437   This list is for people who want to be included in technical discussions of
438   LLVM. People post to this list when they have questions about writing code
439   for or using the LLVM tools. It is relatively low volume.
440
441   .. __: http://lists.llvm.org/mailman/listinfo/llvm-dev
442
443 `Commits Archive (llvm-commits)`__
444   This list contains all commit messages that are made when LLVM developers
445   commit code changes to the repository. It also serves as a forum for
446   patch review (i.e. send patches here). It is useful for those who want to
447   stay on the bleeding edge of LLVM development. This list is very high
448   volume.
449
450   .. __: http://lists.llvm.org/pipermail/llvm-commits/
451
452 `Bugs & Patches Archive (llvm-bugs)`__
453   This list gets emailed every time a bug is opened and closed. It is
454   higher volume than the LLVM-dev list.
455
456   .. __: http://lists.llvm.org/pipermail/llvm-bugs/
457
458 `Test Results Archive (llvm-testresults)`__
459   A message is automatically sent to this list by every active nightly tester
460   when it completes.  As such, this list gets email several times each day,
461   making it a high volume list.
462
463   .. __: http://lists.llvm.org/pipermail/llvm-testresults/
464
465 `LLVM Announcements List (llvm-announce)`__
466   This is a low volume list that provides important announcements regarding
467   LLVM.  It gets email about once a month.
468
469   .. __: http://lists.llvm.org/mailman/listinfo/llvm-announce
470
471 IRC
472 ---
473
474 Users and developers of the LLVM project (including subprojects such as Clang)
475 can be found in #llvm on `irc.oftc.net <irc://irc.oftc.net/llvm>`_.
476
477 This channel has several bots.
478
479 * Buildbot reporters
480
481   * llvmbb - Bot for the main LLVM buildbot master.
482     http://lab.llvm.org:8011/console
483   * bb-chapuni - An individually run buildbot master. http://bb.pgr.jp/console
484   * smooshlab - Apple's internal buildbot master.
485
486 * robot - Bugzilla linker. %bug <number>
487
488 * clang-bot - A `geordi <http://www.eelis.net/geordi/>`_ instance running
489   near-trunk clang instead of gcc.
490
491 Community wide proposals
492 ------------------------
493
494 Proposals for massive changes in how the community behaves and how the work flow
495 can be better.
496
497 .. toctree::
498    :hidden:
499
500    CodeOfConduct
501    Proposals/GitHubSubMod
502
503 :doc:`CodeOfConduct`
504    Proposal to adopt a code of conduct on the LLVM social spaces (lists, events,
505    IRC, etc).
506
507 :doc:`Proposals/GitHubSubMod`
508    Proposal to move from SVN/Git to GitHub.
509
510
511 Indices and tables
512 ==================
513
514 * :ref:`genindex`
515 * :ref:`search`