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