blob: 92421aaafc848a8a41ee5f333954a855bcaaccc0 [file] [log] [blame]
Daniel Dunbarfbb80412012-04-19 16:31:37 +00001Overview
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
Benjamin Kramerbde91762012-06-02 10:20:22 +000014targeted at different audiences:
Daniel Dunbarfbb80412012-04-19 16:31:37 +000015
Sean Silva12159ff2013-01-20 02:19:36 +000016LLVM Design & Overview
17======================
Daniel Dunbarfbb80412012-04-19 16:31:37 +000018
Sean Silva12159ff2013-01-20 02:19:36 +000019Several introductory papers and presentations.
Daniel Dunbarfbb80412012-04-19 16:31:37 +000020
21.. toctree::
Sean Silva12159ff2013-01-20 02:19:36 +000022 :hidden:
Daniel Dunbarfbb80412012-04-19 16:31:37 +000023
Sean Silva12159ff2013-01-20 02:19:36 +000024 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
54Publications
55============
56
57The list of `publications <http://llvm.org/pubs>`_ based on LLVM.
58
59User Guides
60===========
61
62For those new to the LLVM system.
63
64NOTE: If you are a user who is only interested in using LLVM-based
65compilers, you should look into `Clang <http://clang.llvm.org>`_ or
66`DragonEgg <http://dragonegg.llvm.org>`_ instead. The documentation here is
67intended for users who have a need to work with the intermediate LLVM
68representation.
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
172IRC
173===
174
175You can probably find help on the unofficial LLVM IRC.
176
177We often are on irc.oftc.net in the #llvm channel. If you are using the
178mozilla browser, and have chatzilla installed, you can `join #llvm on
179irc.oftc.net <irc://irc.oftc.net/llvm>`_.
180
181Programming Documentation
182=========================
183
184For 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
240Subsystem Documentation
241=======================
242
243For 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
351Development Process Documentation
352=================================
353
354
355Information 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
385Mailing Lists
386=============
387
388If you can't find what you need in these docs, try consulting the mailing
389lists.
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
Daniel Dunbarfbb80412012-04-19 16:31:37 +0000422Indices and tables
423==================
424
425* :ref:`genindex`
426* :ref:`search`