blob: c4c3b6d59504038fa09e676b07764035cba2dfd8 [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 Wendling0ca99272012-06-28 08:43:12 +000010 BitCodeFormat
Bill Wendling707f2fd2012-06-20 10:17:46 +000011 BranchWeightMetadata
Bill Wendlingd372ee22012-06-26 11:37:00 +000012 Bugpoint
Bill Wendling7d85f872012-06-27 07:20:57 +000013 ExceptionHandling
Bill Wendlinga3a2eb02012-06-20 10:08:02 +000014 LinkTimeOptimization
Bill Wendling47997e82012-06-20 12:05:05 +000015 SegmentedStacks
Bill Wendlingbd96e0d2012-06-21 06:58:24 +000016 TableGenFundamentals
Bill Wendling430c3bb2012-06-20 09:49:57 +000017
Bill Wendlingdf870f52012-06-20 09:50:45 +000018* `Writing an LLVM Pass <WritingAnLLVMPass.html>`_
Daniel Dunbar21e993c2012-04-19 16:31:37 +000019
Bill Wendlingdf870f52012-06-20 09:50:45 +000020 Information on how to write LLVM transformations and analyses.
Daniel Dunbar21e993c2012-04-19 16:31:37 +000021
Bill Wendlingdf870f52012-06-20 09:50:45 +000022* `Writing an LLVM Backend <WritingAnLLVMBackend.html>`_
Daniel Dunbar21e993c2012-04-19 16:31:37 +000023
Bill Wendlingdf870f52012-06-20 09:50:45 +000024 Information on how to write LLVM backends for machine targets.
Daniel Dunbar21e993c2012-04-19 16:31:37 +000025
Bill Wendlingdf870f52012-06-20 09:50:45 +000026* `The LLVM Target-Independent Code Generator <CodeGenerator.html>`_
Daniel Dunbar21e993c2012-04-19 16:31:37 +000027
Bill Wendlingdf870f52012-06-20 09:50:45 +000028 The design and implementation of the LLVM code generator. Useful if you are
29 working on retargetting LLVM to a new architecture, designing a new codegen
30 pass, or enhancing existing components.
Daniel Dunbar21e993c2012-04-19 16:31:37 +000031
Bill Wendlingbd96e0d2012-06-21 06:58:24 +000032* :ref:`tablegen`
33
Bill Wendlingdf870f52012-06-20 09:50:45 +000034 Describes the TableGen tool, which is used heavily by the LLVM code
35 generator.
Daniel Dunbar21e993c2012-04-19 16:31:37 +000036
Bill Wendlingdf870f52012-06-20 09:50:45 +000037* :ref:`alias_analysis`
Daniel Dunbar21e993c2012-04-19 16:31:37 +000038
Bill Wendlingdf870f52012-06-20 09:50:45 +000039 Information on how to write a new alias analysis implementation or how to
40 use existing analyses.
Daniel Dunbar21e993c2012-04-19 16:31:37 +000041
Bill Wendlingdf870f52012-06-20 09:50:45 +000042* `Accurate Garbage Collection with LLVM <GarbageCollection.html>`_
Daniel Dunbar21e993c2012-04-19 16:31:37 +000043
Bill Wendlingdf870f52012-06-20 09:50:45 +000044 The interfaces source-language compilers should use for compiling GC'd
45 programs.
Bill Wendling47997e82012-06-20 12:05:05 +000046
Bill Wendlingdf870f52012-06-20 09:50:45 +000047* `Source Level Debugging with LLVM <SourceLevelDebugging.html>`_
Daniel Dunbar21e993c2012-04-19 16:31:37 +000048
Bill Wendlingdf870f52012-06-20 09:50:45 +000049 This document describes the design and philosophy behind the LLVM
50 source-level debugger.
Daniel Dunbar21e993c2012-04-19 16:31:37 +000051
Bill Wendling7d85f872012-06-27 07:20:57 +000052* :ref:`exception_handling`
Daniel Dunbar21e993c2012-04-19 16:31:37 +000053
Bill Wendlingdf870f52012-06-20 09:50:45 +000054 This document describes the design and implementation of exception handling
55 in LLVM.
Daniel Dunbar21e993c2012-04-19 16:31:37 +000056
Bill Wendlingd372ee22012-06-26 11:37:00 +000057* :ref:`bugpoint`
Daniel Dunbar21e993c2012-04-19 16:31:37 +000058
Bill Wendlingdf870f52012-06-20 09:50:45 +000059 Automatic bug finder and test-case reducer description and usage
60 information.
Daniel Dunbar21e993c2012-04-19 16:31:37 +000061
Bill Wendling0ca99272012-06-28 08:43:12 +000062* :ref:`bitcode_format`
Daniel Dunbar21e993c2012-04-19 16:31:37 +000063
Bill Wendlingdf870f52012-06-20 09:50:45 +000064 This describes the file format and encoding used for LLVM "bc" files.
Daniel Dunbar21e993c2012-04-19 16:31:37 +000065
Bill Wendlingdf870f52012-06-20 09:50:45 +000066* `System Library <SystemLibrary.html>`_
Daniel Dunbar21e993c2012-04-19 16:31:37 +000067
Bill Wendlingdf870f52012-06-20 09:50:45 +000068 This document describes the LLVM System Library (<tt>lib/System</tt>) and
69 how to keep LLVM source code portable
Daniel Dunbar21e993c2012-04-19 16:31:37 +000070
Bill Wendlinga3a2eb02012-06-20 10:08:02 +000071* :ref:`lto`
Daniel Dunbar21e993c2012-04-19 16:31:37 +000072
Bill Wendlingdf870f52012-06-20 09:50:45 +000073 This document describes the interface between LLVM intermodular optimizer
74 and the linker and its design
Daniel Dunbar21e993c2012-04-19 16:31:37 +000075
Bill Wendlingdf870f52012-06-20 09:50:45 +000076* `The LLVM gold plugin <GoldPlugin.html>`_
Daniel Dunbar21e993c2012-04-19 16:31:37 +000077
Bill Wendlingdf870f52012-06-20 09:50:45 +000078 How to build your programs with link-time optimization on Linux.
Daniel Dunbar21e993c2012-04-19 16:31:37 +000079
Bill Wendlingdf870f52012-06-20 09:50:45 +000080* `The GDB JIT interface <DebuggingJITedCode.html>`_
Daniel Dunbar21e993c2012-04-19 16:31:37 +000081
Bill Wendlingdf870f52012-06-20 09:50:45 +000082 How to debug JITed code with GDB.
Daniel Dunbar21e993c2012-04-19 16:31:37 +000083
Bill Wendling707f2fd2012-06-20 10:17:46 +000084* :ref:`branch_weight`
Daniel Dunbar21e993c2012-04-19 16:31:37 +000085
Bill Wendlingdf870f52012-06-20 09:50:45 +000086 Provides information about Branch Prediction Information.
Bill Wendling47997e82012-06-20 12:05:05 +000087
88* :ref:`segmented_stacks`
89
90 This document describes segmented stacks and how they are used in LLVM.