mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-10-30 16:17:05 +00:00 
			
		
		
		
	Summary: Move lib/Fuzzer docs from a README.txt to a proper .rst file. This change does not add any content, just formatting. Test Plan: n/a Reviewers: samsonov Reviewed By: samsonov Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D8710 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233638 91177308-0d34-0410-b5e6-96231b3b80d8
		
			
				
	
	
		
			485 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			485 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
| Overview
 | ||
| ========
 | ||
| 
 | ||
| .. warning::
 | ||
| 
 | ||
|    If you are using a released version of LLVM, see `the download page
 | ||
|    <http://llvm.org/releases/>`_ to find your documentation.
 | ||
| 
 | ||
| The LLVM compiler infrastructure supports a wide range of projects, from
 | ||
| industrial strength compilers to specialized JIT applications to small
 | ||
| research projects.
 | ||
| 
 | ||
| Similarly, documentation is broken down into several high-level groupings
 | ||
| targeted at different audiences:
 | ||
| 
 | ||
| LLVM Design & Overview
 | ||
| ======================
 | ||
| 
 | ||
| Several introductory papers and presentations.
 | ||
| 
 | ||
| .. toctree::
 | ||
|    :hidden:
 | ||
| 
 | ||
|    LangRef
 | ||
| 
 | ||
| :doc:`LangRef`
 | ||
|   Defines the LLVM intermediate representation.
 | ||
| 
 | ||
| `Introduction to the LLVM Compiler`__
 | ||
|   Presentation providing a users introduction to LLVM.
 | ||
| 
 | ||
|   .. __: http://llvm.org/pubs/2008-10-04-ACAT-LLVM-Intro.html
 | ||
| 
 | ||
| `Intro to LLVM`__
 | ||
|   Book chapter providing a compiler hacker's introduction to LLVM.
 | ||
| 
 | ||
|   .. __: http://www.aosabook.org/en/llvm.html
 | ||
| 
 | ||
| 
 | ||
| `LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation`__
 | ||
|   Design overview.
 | ||
| 
 | ||
|   .. __: http://llvm.org/pubs/2004-01-30-CGO-LLVM.html
 | ||
| 
 | ||
| `LLVM: An Infrastructure for Multi-Stage Optimization`__
 | ||
|   More details (quite old now).
 | ||
| 
 | ||
|   .. __: http://llvm.org/pubs/2002-12-LattnerMSThesis.html
 | ||
| 
 | ||
| `Publications mentioning LLVM <http://llvm.org/pubs>`_
 | ||
|    ..
 | ||
| 
 | ||
| User Guides
 | ||
| ===========
 | ||
| 
 | ||
| For those new to the LLVM system.
 | ||
| 
 | ||
| NOTE: If you are a user who is only interested in using LLVM-based
 | ||
| compilers, you should look into `Clang <http://clang.llvm.org>`_ or
 | ||
| `DragonEgg <http://dragonegg.llvm.org>`_ instead. The documentation here is
 | ||
| intended for users who have a need to work with the intermediate LLVM
 | ||
| representation.
 | ||
| 
 | ||
| .. toctree::
 | ||
|    :hidden:
 | ||
| 
 | ||
|    CMake
 | ||
|    HowToBuildOnARM
 | ||
|    HowToCrossCompileLLVM
 | ||
|    CommandGuide/index
 | ||
|    GettingStarted
 | ||
|    GettingStartedVS
 | ||
|    BuildingLLVMWithAutotools
 | ||
|    FAQ
 | ||
|    Lexicon
 | ||
|    HowToAddABuilder
 | ||
|    yaml2obj
 | ||
|    HowToSubmitABug
 | ||
|    SphinxQuickstartTemplate
 | ||
|    Phabricator
 | ||
|    TestingGuide
 | ||
|    tutorial/index
 | ||
|    ReleaseNotes
 | ||
|    Passes
 | ||
|    YamlIO
 | ||
|    GetElementPtr
 | ||
|    Frontend/PerformanceTips
 | ||
|    MCJITDesignAndImplementation
 | ||
| 
 | ||
| :doc:`GettingStarted`
 | ||
|    Discusses how to get up and running quickly with the LLVM infrastructure.
 | ||
|    Everything from unpacking and compilation of the distribution to execution
 | ||
|    of some tools.
 | ||
| 
 | ||
| :doc:`CMake`
 | ||
|    An addendum to the main Getting Started guide for those using the `CMake
 | ||
|    build system <http://www.cmake.org>`_.
 | ||
| 
 | ||
| :doc:`HowToBuildOnARM`
 | ||
|    Notes on building and testing LLVM/Clang on ARM.
 | ||
| 
 | ||
| :doc:`HowToCrossCompileLLVM`
 | ||
|    Notes on cross-building and testing LLVM/Clang.
 | ||
| 
 | ||
| :doc:`GettingStartedVS`
 | ||
|    An addendum to the main Getting Started guide for those using Visual Studio
 | ||
|    on Windows.
 | ||
| 
 | ||
| :doc:`BuildingLLVMWithAutotools`
 | ||
|    An addendum to the Getting Started guide with instructions for building LLVM
 | ||
|    with the Autotools build system.
 | ||
| 
 | ||
| :doc:`tutorial/index`
 | ||
|    Tutorials about using LLVM. Includes a tutorial about making a custom
 | ||
|    language with LLVM.
 | ||
| 
 | ||
| :doc:`LLVM Command Guide <CommandGuide/index>`
 | ||
|    A reference manual for the LLVM command line utilities ("man" pages for LLVM
 | ||
|    tools).
 | ||
| 
 | ||
| :doc:`Passes`
 | ||
|    A list of optimizations and analyses implemented in LLVM.
 | ||
| 
 | ||
| :doc:`FAQ`
 | ||
|    A list of common questions and problems and their solutions.
 | ||
| 
 | ||
| :doc:`Release notes for the current release <ReleaseNotes>`
 | ||
|    This describes new features, known bugs, and other limitations.
 | ||
| 
 | ||
| :doc:`HowToSubmitABug`
 | ||
|    Instructions for properly submitting information about any bugs you run into
 | ||
|    in the LLVM system.
 | ||
| 
 | ||
| :doc:`SphinxQuickstartTemplate`
 | ||
|   A template + tutorial for writing new Sphinx documentation. It is meant
 | ||
|   to be read in source form.
 | ||
| 
 | ||
| :doc:`LLVM Testing Infrastructure Guide <TestingGuide>`
 | ||
|    A reference manual for using the LLVM testing infrastructure.
 | ||
| 
 | ||
| `How to build the C, C++, ObjC, and ObjC++ front end`__
 | ||
|    Instructions for building the clang front-end from source.
 | ||
| 
 | ||
|    .. __: http://clang.llvm.org/get_started.html
 | ||
| 
 | ||
| :doc:`Lexicon`
 | ||
|    Definition of acronyms, terms and concepts used in LLVM.
 | ||
| 
 | ||
| :doc:`HowToAddABuilder`
 | ||
|    Instructions for adding new builder to LLVM buildbot master.
 | ||
| 
 | ||
| :doc:`YamlIO`
 | ||
|    A reference guide for using LLVM's YAML I/O library.
 | ||
| 
 | ||
| :doc:`GetElementPtr`
 | ||
|   Answers to some very frequent questions about LLVM's most frequently
 | ||
|   misunderstood instruction.
 | ||
| 
 | ||
| :doc:`Frontend/PerformanceTips`
 | ||
|    A collection of tips for frontend authors on how to generate IR 
 | ||
|    which LLVM is able to effectively optimize.
 | ||
| 
 | ||
| 
 | ||
| Programming Documentation
 | ||
| =========================
 | ||
| 
 | ||
| For developers of applications which use LLVM as a library.
 | ||
| 
 | ||
| .. toctree::
 | ||
|    :hidden:
 | ||
| 
 | ||
|    Atomics
 | ||
|    CodingStandards
 | ||
|    CommandLine
 | ||
|    CompilerWriterInfo
 | ||
|    ExtendingLLVM
 | ||
|    HowToSetUpLLVMStyleRTTI
 | ||
|    ProgrammersManual
 | ||
|    Extensions
 | ||
|    LibFuzzer
 | ||
| 
 | ||
| :doc:`LLVM Language Reference Manual <LangRef>`
 | ||
|   Defines the LLVM intermediate representation and the assembly form of the
 | ||
|   different nodes.
 | ||
| 
 | ||
| :doc:`Atomics`
 | ||
|   Information about LLVM's concurrency model.
 | ||
| 
 | ||
| :doc:`ProgrammersManual`
 | ||
|   Introduction to the general layout of the LLVM sourcebase, important classes
 | ||
|   and APIs, and some tips & tricks.
 | ||
| 
 | ||
| :doc:`Extensions`
 | ||
|   LLVM-specific extensions to tools and formats LLVM seeks compatibility with.
 | ||
| 
 | ||
| :doc:`CommandLine`
 | ||
|   Provides information on using the command line parsing library.
 | ||
| 
 | ||
| :doc:`CodingStandards`
 | ||
|   Details the LLVM coding standards and provides useful information on writing
 | ||
|   efficient C++ code.
 | ||
| 
 | ||
| :doc:`HowToSetUpLLVMStyleRTTI`
 | ||
|   How to make ``isa<>``, ``dyn_cast<>``, etc. available for clients of your
 | ||
|   class hierarchy.
 | ||
| 
 | ||
| :doc:`ExtendingLLVM`
 | ||
|   Look here to see how to add instructions and intrinsics to LLVM.
 | ||
| 
 | ||
| `Doxygen generated documentation <http://llvm.org/doxygen/>`_
 | ||
|   (`classes <http://llvm.org/doxygen/inherits.html>`_)
 | ||
|   (`tarball <http://llvm.org/doxygen/doxygen.tar.gz>`_)
 | ||
| 
 | ||
| `Documentation for Go bindings <http://godoc.org/llvm.org/llvm/bindings/go/llvm>`_
 | ||
| 
 | ||
| `ViewVC Repository Browser <http://llvm.org/viewvc/>`_
 | ||
|    ..
 | ||
| 
 | ||
| :doc:`CompilerWriterInfo`
 | ||
|   A list of helpful links for compiler writers.
 | ||
| 
 | ||
| :doc:`LibFuzzer`
 | ||
|   A library for writing in-process guided fuzzers.
 | ||
| 
 | ||
| Subsystem Documentation
 | ||
| =======================
 | ||
| 
 | ||
| For API clients and LLVM developers.
 | ||
| 
 | ||
| .. toctree::
 | ||
|    :hidden:
 | ||
| 
 | ||
|    AliasAnalysis
 | ||
|    BitCodeFormat
 | ||
|    BlockFrequencyTerminology
 | ||
|    BranchWeightMetadata
 | ||
|    Bugpoint
 | ||
|    CodeGenerator
 | ||
|    ExceptionHandling
 | ||
|    LinkTimeOptimization
 | ||
|    SegmentedStacks
 | ||
|    TableGenFundamentals
 | ||
|    TableGen/index
 | ||
|    DebuggingJITedCode
 | ||
|    GoldPlugin
 | ||
|    MarkedUpDisassembly
 | ||
|    SystemLibrary
 | ||
|    SourceLevelDebugging
 | ||
|    Vectorizers
 | ||
|    WritingAnLLVMBackend
 | ||
|    GarbageCollection
 | ||
|    WritingAnLLVMPass
 | ||
|    HowToUseAttributes
 | ||
|    NVPTXUsage
 | ||
|    R600Usage
 | ||
|    StackMaps
 | ||
|    InAlloca
 | ||
|    BigEndianNEON
 | ||
|    CoverageMappingFormat
 | ||
|    Statepoints
 | ||
|    MergeFunctions
 | ||
|    BitSets
 | ||
| 
 | ||
| :doc:`WritingAnLLVMPass`
 | ||
|    Information on how to write LLVM transformations and analyses.
 | ||
| 
 | ||
| :doc:`WritingAnLLVMBackend`
 | ||
|    Information on how to write LLVM backends for machine targets.
 | ||
| 
 | ||
| :doc:`CodeGenerator`
 | ||
|    The design and implementation of the LLVM code generator.  Useful if you are
 | ||
|    working on retargetting LLVM to a new architecture, designing a new codegen
 | ||
|    pass, or enhancing existing components.
 | ||
| 
 | ||
| :doc:`TableGen <TableGen/index>`
 | ||
|    Describes the TableGen tool, which is used heavily by the LLVM code
 | ||
|    generator.
 | ||
| 
 | ||
| :doc:`AliasAnalysis`
 | ||
|    Information on how to write a new alias analysis implementation or how to
 | ||
|    use existing analyses.
 | ||
| 
 | ||
| :doc:`GarbageCollection`
 | ||
|    The interfaces source-language compilers should use for compiling GC'd
 | ||
|    programs.
 | ||
| 
 | ||
| :doc:`Source Level Debugging with LLVM <SourceLevelDebugging>`
 | ||
|    This document describes the design and philosophy behind the LLVM
 | ||
|    source-level debugger.
 | ||
| 
 | ||
| :doc:`Vectorizers`
 | ||
|    This document describes the current status of vectorization in LLVM.
 | ||
| 
 | ||
| :doc:`ExceptionHandling`
 | ||
|    This document describes the design and implementation of exception handling
 | ||
|    in LLVM.
 | ||
| 
 | ||
| :doc:`Bugpoint`
 | ||
|    Automatic bug finder and test-case reducer description and usage
 | ||
|    information.
 | ||
| 
 | ||
| :doc:`BitCodeFormat`
 | ||
|    This describes the file format and encoding used for LLVM "bc" files.
 | ||
| 
 | ||
| :doc:`System Library <SystemLibrary>`
 | ||
|    This document describes the LLVM System Library (``lib/System``) and
 | ||
|    how to keep LLVM source code portable
 | ||
| 
 | ||
| :doc:`LinkTimeOptimization`
 | ||
|    This document describes the interface between LLVM intermodular optimizer
 | ||
|    and the linker and its design
 | ||
| 
 | ||
| :doc:`GoldPlugin`
 | ||
|    How to build your programs with link-time optimization on Linux.
 | ||
| 
 | ||
| :doc:`DebuggingJITedCode`
 | ||
|    How to debug JITed code with GDB.
 | ||
| 
 | ||
| :doc:`MCJITDesignAndImplementation`
 | ||
|    Describes the inner workings of MCJIT execution engine.
 | ||
| 
 | ||
| :doc:`BranchWeightMetadata`
 | ||
|    Provides information about Branch Prediction Information.
 | ||
| 
 | ||
| :doc:`BlockFrequencyTerminology`
 | ||
|    Provides information about terminology used in the ``BlockFrequencyInfo``
 | ||
|    analysis pass.
 | ||
| 
 | ||
| :doc:`SegmentedStacks`
 | ||
|    This document describes segmented stacks and how they are used in LLVM.
 | ||
| 
 | ||
| :doc:`MarkedUpDisassembly`
 | ||
|    This document describes the optional rich disassembly output syntax.
 | ||
| 
 | ||
| :doc:`HowToUseAttributes`
 | ||
|   Answers some questions about the new Attributes infrastructure.
 | ||
| 
 | ||
| :doc:`NVPTXUsage`
 | ||
|    This document describes using the NVPTX back-end to compile GPU kernels.
 | ||
| 
 | ||
| :doc:`R600Usage`
 | ||
|    This document describes how to use the R600 back-end.
 | ||
| 
 | ||
| :doc:`StackMaps`
 | ||
|   LLVM support for mapping instruction addresses to the location of
 | ||
|   values and allowing code to be patched.
 | ||
| 
 | ||
| :doc:`BigEndianNEON`
 | ||
|   LLVM's support for generating NEON instructions on big endian ARM targets is
 | ||
|   somewhat nonintuitive. This document explains the implementation and rationale.
 | ||
| 
 | ||
| :doc:`CoverageMappingFormat`
 | ||
|   This describes the format and encoding used for LLVM’s code coverage mapping.
 | ||
| 
 | ||
| :doc:`Statepoints`
 | ||
|   This describes a set of experimental extensions for garbage
 | ||
|   collection support.
 | ||
| 
 | ||
| :doc:`MergeFunctions`
 | ||
|   Describes functions merging optimization.
 | ||
| 
 | ||
| :doc:`InAlloca`
 | ||
|   Description of the ``inalloca`` argument attribute.
 | ||
| 
 | ||
| Development Process Documentation
 | ||
| =================================
 | ||
| 
 | ||
| Information about LLVM's development process.
 | ||
| 
 | ||
| .. toctree::
 | ||
|    :hidden:
 | ||
| 
 | ||
|    DeveloperPolicy
 | ||
|    MakefileGuide
 | ||
|    Projects
 | ||
|    LLVMBuild
 | ||
|    HowToReleaseLLVM
 | ||
|    Packaging
 | ||
|    ReleaseProcess
 | ||
|    Phabricator
 | ||
| 
 | ||
| :doc:`DeveloperPolicy`
 | ||
|    The LLVM project's policy towards developers and their contributions.
 | ||
| 
 | ||
| :doc:`Projects`
 | ||
|   How-to guide and templates for new projects that *use* the LLVM
 | ||
|   infrastructure.  The templates (directory organization, Makefiles, and test
 | ||
|   tree) allow the project code to be located outside (or inside) the ``llvm/``
 | ||
|   tree, while using LLVM header files and libraries.
 | ||
| 
 | ||
| :doc:`LLVMBuild`
 | ||
|   Describes the LLVMBuild organization and files used by LLVM to specify
 | ||
|   component descriptions.
 | ||
| 
 | ||
| :doc:`MakefileGuide`
 | ||
|   Describes how the LLVM makefiles work and how to use them.
 | ||
| 
 | ||
| :doc:`HowToReleaseLLVM`
 | ||
|   This is a guide to preparing LLVM releases. Most developers can ignore it.
 | ||
| 
 | ||
| :doc:`ReleaseProcess`
 | ||
|   This is a guide to validate a new release, during the release process. Most developers can ignore it.
 | ||
| 
 | ||
| :doc:`Packaging`
 | ||
|    Advice on packaging LLVM into a distribution.
 | ||
| 
 | ||
| :doc:`Phabricator`
 | ||
|    Describes how to use the Phabricator code review tool hosted on
 | ||
|    http://reviews.llvm.org/ and its command line interface, Arcanist.
 | ||
| 
 | ||
| Community
 | ||
| =========
 | ||
| 
 | ||
| LLVM has a thriving community of friendly and helpful developers.
 | ||
| The two primary communication mechanisms in the LLVM community are mailing
 | ||
| lists and IRC.
 | ||
| 
 | ||
| Mailing Lists
 | ||
| -------------
 | ||
| 
 | ||
| If you can't find what you need in these docs, try consulting the mailing
 | ||
| lists.
 | ||
| 
 | ||
| `Developer's List (llvmdev)`__
 | ||
|   This list is for people who want to be included in technical discussions of
 | ||
|   LLVM. People post to this list when they have questions about writing code
 | ||
|   for or using the LLVM tools. It is relatively low volume.
 | ||
| 
 | ||
|   .. __: http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
 | ||
| 
 | ||
| `Commits Archive (llvm-commits)`__
 | ||
|   This list contains all commit messages that are made when LLVM developers
 | ||
|   commit code changes to the repository. It also serves as a forum for
 | ||
|   patch review (i.e. send patches here). It is useful for those who want to
 | ||
|   stay on the bleeding edge of LLVM development. This list is very high
 | ||
|   volume.
 | ||
| 
 | ||
|   .. __: http://lists.cs.uiuc.edu/pipermail/llvm-commits/
 | ||
| 
 | ||
| `Bugs & Patches Archive (llvmbugs)`__
 | ||
|   This list gets emailed every time a bug is opened and closed. It is
 | ||
|   higher volume than the LLVMdev list.
 | ||
| 
 | ||
|   .. __: http://lists.cs.uiuc.edu/pipermail/llvmbugs/
 | ||
| 
 | ||
| `Test Results Archive (llvm-testresults)`__
 | ||
|   A message is automatically sent to this list by every active nightly tester
 | ||
|   when it completes.  As such, this list gets email several times each day,
 | ||
|   making it a high volume list.
 | ||
| 
 | ||
|   .. __: http://lists.cs.uiuc.edu/pipermail/llvm-testresults/
 | ||
| 
 | ||
| `LLVM Announcements List (llvm-announce)`__
 | ||
|   This is a low volume list that provides important announcements regarding
 | ||
|   LLVM.  It gets email about once a month.
 | ||
| 
 | ||
|   .. __: http://lists.cs.uiuc.edu/mailman/listinfo/llvm-announce
 | ||
| 
 | ||
| IRC
 | ||
| ---
 | ||
| 
 | ||
| Users and developers of the LLVM project (including subprojects such as Clang)
 | ||
| can be found in #llvm on `irc.oftc.net <irc://irc.oftc.net/llvm>`_.
 | ||
| 
 | ||
| This channel has several bots.
 | ||
| 
 | ||
| * Buildbot reporters
 | ||
| 
 | ||
|   * llvmbb - Bot for the main LLVM buildbot master.
 | ||
|     http://lab.llvm.org:8011/console
 | ||
|   * bb-chapuni - An individually run buildbot master. http://bb.pgr.jp/console
 | ||
|   * smooshlab - Apple's internal buildbot master.
 | ||
| 
 | ||
| * robot - Bugzilla linker. %bug <number>
 | ||
| 
 | ||
| * clang-bot - A `geordi <http://www.eelis.net/geordi/>`_ instance running
 | ||
|   near-trunk clang instead of gcc.
 | ||
| 
 | ||
| 
 | ||
| Indices and tables
 | ||
| ==================
 | ||
| 
 | ||
| * :ref:`genindex`
 | ||
| * :ref:`search`
 |