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