blob: 9ceb842420419d4a3d56682e7eecb43598e74eb7 [file] [log] [blame]
Daniel Dunbar21e993c2012-04-19 16:31:37 +00001.. _subsystems:
2
3Subsystem Documentation
4=======================
5
Bill Wendling430c3bb2012-06-20 09:49:57 +00006.. toctree::
7 :hidden:
8
9 AliasAnalysis
Bill Wendling707f2fd2012-06-20 10:17:46 +000010 BranchWeightMetadata
Bill Wendlinga3a2eb02012-06-20 10:08:02 +000011 LinkTimeOptimization
Bill Wendling47997e82012-06-20 12:05:05 +000012 SegmentedStacks
Bill Wendling430c3bb2012-06-20 09:49:57 +000013
Bill Wendlingdf870f52012-06-20 09:50:45 +000014* `Writing an LLVM Pass <WritingAnLLVMPass.html>`_
Daniel Dunbar21e993c2012-04-19 16:31:37 +000015
Bill Wendlingdf870f52012-06-20 09:50:45 +000016 Information on how to write LLVM transformations and analyses.
Daniel Dunbar21e993c2012-04-19 16:31:37 +000017
Bill Wendlingdf870f52012-06-20 09:50:45 +000018* `Writing an LLVM Backend <WritingAnLLVMBackend.html>`_
Daniel Dunbar21e993c2012-04-19 16:31:37 +000019
Bill Wendlingdf870f52012-06-20 09:50:45 +000020 Information on how to write LLVM backends for machine targets.
Daniel Dunbar21e993c2012-04-19 16:31:37 +000021
Bill Wendlingdf870f52012-06-20 09:50:45 +000022* `The LLVM Target-Independent Code Generator <CodeGenerator.html>`_
Daniel Dunbar21e993c2012-04-19 16:31:37 +000023
Bill Wendlingdf870f52012-06-20 09:50:45 +000024 The design and implementation of the LLVM code generator. Useful if you are
25 working on retargetting LLVM to a new architecture, designing a new codegen
26 pass, or enhancing existing components.
Daniel Dunbar21e993c2012-04-19 16:31:37 +000027
Bill Wendlingdf870f52012-06-20 09:50:45 +000028* `TableGen Fundamentals <TableGenFundamentals.html>`_
Daniel Dunbar21e993c2012-04-19 16:31:37 +000029
Bill Wendlingdf870f52012-06-20 09:50:45 +000030 Describes the TableGen tool, which is used heavily by the LLVM code
31 generator.
Daniel Dunbar21e993c2012-04-19 16:31:37 +000032
Bill Wendlingdf870f52012-06-20 09:50:45 +000033* :ref:`alias_analysis`
Daniel Dunbar21e993c2012-04-19 16:31:37 +000034
Bill Wendlingdf870f52012-06-20 09:50:45 +000035 Information on how to write a new alias analysis implementation or how to
36 use existing analyses.
Daniel Dunbar21e993c2012-04-19 16:31:37 +000037
Bill Wendlingdf870f52012-06-20 09:50:45 +000038* `Accurate Garbage Collection with LLVM <GarbageCollection.html>`_
Daniel Dunbar21e993c2012-04-19 16:31:37 +000039
Bill Wendlingdf870f52012-06-20 09:50:45 +000040 The interfaces source-language compilers should use for compiling GC'd
41 programs.
Bill Wendling47997e82012-06-20 12:05:05 +000042
Bill Wendlingdf870f52012-06-20 09:50:45 +000043* `Source Level Debugging with LLVM <SourceLevelDebugging.html>`_
Daniel Dunbar21e993c2012-04-19 16:31:37 +000044
Bill Wendlingdf870f52012-06-20 09:50:45 +000045 This document describes the design and philosophy behind the LLVM
46 source-level debugger.
Daniel Dunbar21e993c2012-04-19 16:31:37 +000047
Bill Wendlingdf870f52012-06-20 09:50:45 +000048* `Zero Cost Exception handling in LLVM <ExceptionHandling.html>`_
Daniel Dunbar21e993c2012-04-19 16:31:37 +000049
Bill Wendlingdf870f52012-06-20 09:50:45 +000050 This document describes the design and implementation of exception handling
51 in LLVM.
Daniel Dunbar21e993c2012-04-19 16:31:37 +000052
Bill Wendlingdf870f52012-06-20 09:50:45 +000053* `Bugpoint <Bugpoint.html>`_
Daniel Dunbar21e993c2012-04-19 16:31:37 +000054
Bill Wendlingdf870f52012-06-20 09:50:45 +000055 Automatic bug finder and test-case reducer description and usage
56 information.
Daniel Dunbar21e993c2012-04-19 16:31:37 +000057
Bill Wendlingdf870f52012-06-20 09:50:45 +000058* `LLVM Bitcode File Format <BitCodeFormat.html>`_
Daniel Dunbar21e993c2012-04-19 16:31:37 +000059
Bill Wendlingdf870f52012-06-20 09:50:45 +000060 This describes the file format and encoding used for LLVM "bc" files.
Daniel Dunbar21e993c2012-04-19 16:31:37 +000061
Bill Wendlingdf870f52012-06-20 09:50:45 +000062* `System Library <SystemLibrary.html>`_
Daniel Dunbar21e993c2012-04-19 16:31:37 +000063
Bill Wendlingdf870f52012-06-20 09:50:45 +000064 This document describes the LLVM System Library (<tt>lib/System</tt>) and
65 how to keep LLVM source code portable
Daniel Dunbar21e993c2012-04-19 16:31:37 +000066
Bill Wendlinga3a2eb02012-06-20 10:08:02 +000067* :ref:`lto`
Daniel Dunbar21e993c2012-04-19 16:31:37 +000068
Bill Wendlingdf870f52012-06-20 09:50:45 +000069 This document describes the interface between LLVM intermodular optimizer
70 and the linker and its design
Daniel Dunbar21e993c2012-04-19 16:31:37 +000071
Bill Wendlingdf870f52012-06-20 09:50:45 +000072* `The LLVM gold plugin <GoldPlugin.html>`_
Daniel Dunbar21e993c2012-04-19 16:31:37 +000073
Bill Wendlingdf870f52012-06-20 09:50:45 +000074 How to build your programs with link-time optimization on Linux.
Daniel Dunbar21e993c2012-04-19 16:31:37 +000075
Bill Wendlingdf870f52012-06-20 09:50:45 +000076* `The GDB JIT interface <DebuggingJITedCode.html>`_
Daniel Dunbar21e993c2012-04-19 16:31:37 +000077
Bill Wendlingdf870f52012-06-20 09:50:45 +000078 How to debug JITed code with GDB.
Daniel Dunbar21e993c2012-04-19 16:31:37 +000079
Bill Wendling707f2fd2012-06-20 10:17:46 +000080* :ref:`branch_weight`
Daniel Dunbar21e993c2012-04-19 16:31:37 +000081
Bill Wendlingdf870f52012-06-20 09:50:45 +000082 Provides information about Branch Prediction Information.
Bill Wendling47997e82012-06-20 12:05:05 +000083
84* :ref:`segmented_stacks`
85
86 This document describes segmented stacks and how they are used in LLVM.