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