The CHECK: and CHECK-NOT: directives both take a pattern to match. For most
uses of FileCheck, fixed string matching is perfectly sufficient. For some
things, a more flexible form of matching is desired. To support this, FileCheck
@@ -650,6 +652,8 @@ braces like you would in C. In the rare case that you want to match double
braces explicitly from the input, you can use something ugly like
{{[{][{]}} as your pattern.
+
+
@@ -659,6 +663,9 @@ braces explicitly from the input, you can use something ugly like
+
+
+
It is often useful to match a pattern and then verify that it occurs again
later in the file. For codegen tests, this can be useful to allow any register,
but verify that that register is used consistently later. To do this, FileCheck
@@ -690,6 +697,8 @@ that FileCheck is not actually line-oriented when it matches, this allows you to
define two separate CHECK lines that match on the same line.
+
+
diff --git a/docs/_templates/index.html b/docs/_templates/index.html
deleted file mode 100644
index efd2a157269..00000000000
--- a/docs/_templates/index.html
+++ /dev/null
@@ -1,50 +0,0 @@
-{# This template defines the 'index.html' page which we currently only use as
- the entry point to the HTML-based documentation, but later can use to provide
- an entry point for a Sphinx based LLVM website.
-
- Conceptually, this page is not supposed to be part of the documentation per
- se (i.e., the content that would be rendered into a PDF, for example), but
- rather provides entry points into the documentation and links to other
- content which would only be part of the website. #}
-
-{% extends "layout.html" %}
-{% set title = 'lld' %}
-{% block body %}
-
LLVM System Documentation
-
-
- This is the front page for the Sphinx-based LLVM documentation. This is
- currently a work in progress.
-
The LLVM Getting Started Guide -
-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.
The LLVM Target-Independent Code
-Generator - 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.
-
-
TableGen Fundamentals -
-Describes the TableGen tool, which is used heavily by the LLVM code
-generator.
-
-
Alias Analysis in LLVM - Information
-on how to write a new alias analysis implementation or how to use existing
-analyses.
LLVM Project Guide - 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.
-
-
LLVMBuild Documentation - Describes the
-LLVMBuild organization and files used by LLVM to specify component
-descriptions.
-
-
LLVM Makefile Guide - Describes how the
-LLVM makefiles work and how to use them.
The
-LLVM Announcements List: This is a low volume list that provides important
-announcements regarding LLVM. It gets email about once a month.
-
-
The Developer's
-List: 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.
-
-
The Bugs &
-Patches Archive: This list gets emailed every time a bug is opened and
-closed, and when people submit patches to be included in LLVM. It is higher
-volume than the LLVMdev list.
-
-
The Commits
-Archive: This list contains all commit messages that are made when LLVM
-developers commit code changes to the repository. It is useful for those who
-want to stay on the bleeding edge of LLVM development. This list is very high
-volume.
-
-
The
-Test Results Archive: 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.
-
-
-
-
-
-
-
-
-
-
- LLVM Compiler Infrastructure
- Last modified: $Date$
-
-
diff --git a/docs/index.rst b/docs/index.rst
new file mode 100644
index 00000000000..ca31efaf174
--- /dev/null
+++ b/docs/index.rst
@@ -0,0 +1,70 @@
+.. _contents:
+
+Overview
+========
+
+.. warning::
+
+ If you are using a released version of LLVM, see `the download page
+ `_ 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
+targetted at different audiences:
+
+ * **Design & Overview**
+
+ Several introductory papers and presentations are available at
+ :ref:`design_and_overview`.
+
+ * **Publications**
+
+ The list of `publications `_ based on LLVM.
+
+ * **User Guides**
+
+ Those new to the LLVM system should first vist the :ref:`userguides`.
+
+ NOTE: If you are a user who is only interested in using LLVM-based
+ compilers, you should look into `Clang `_ or
+ `DragonEgg `_ instead. The documentation here is
+ intended for users who have a need to work with the intermediate LLVM
+ representation.
+
+ * **API Clients**
+
+ Developers of applications which use LLVM as a library should visit the
+ :ref:`programming`.
+
+ * **Subsystems**
+
+ API clients and LLVM developers may be interested in the
+ :ref:`subsystems` documentation.
+
+ * **Development Process**
+
+ Additional documentation on the LLVM project can be found at
+ :ref:`development_process`.
+
+ * **Mailing Lists**
+
+ For more information, consider consulting the LLVM :ref:`mailing_lists`.
+
+.. toctree::
+ :maxdepth: 2
+
+ design_and_overview
+ userguides
+ programming
+ subsystems
+ development_process
+ mailing_lists
+
+Indices and tables
+==================
+
+* :ref:`genindex`
+* :ref:`search`
diff --git a/docs/mailing_lists.rst b/docs/mailing_lists.rst
new file mode 100644
index 00000000000..106f1da48f8
--- /dev/null
+++ b/docs/mailing_lists.rst
@@ -0,0 +1,35 @@
+.. _mailing_lists:
+
+Mailing Lists
+=============
+
+ * `LLVM Announcements List
+ `_
+
+ This is a low volume list that provides important announcements regarding
+ LLVM. It gets email about once a month.
+
+ * `Developer's List `_
+
+ 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.
+
+ * `Bugs & Patches Archive `_
+
+ This list gets emailed every time a bug is opened and closed, and when people
+ submit patches to be included in LLVM. It is higher volume than the LLVMdev
+ list.
+
+ * `Commits Archive `_
+
+ This list contains all commit messages that are made when LLVM developers
+ commit code changes to the repository. It is useful for those who want to
+ stay on the bleeding edge of LLVM development. This list is very high volume.
+
+ * `Test Results Archive
+ `_
+
+ 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.
diff --git a/docs/programming.rst b/docs/programming.rst
new file mode 100644
index 00000000000..b198d97cd1d
--- /dev/null
+++ b/docs/programming.rst
@@ -0,0 +1,34 @@
+.. _programming:
+
+Programming Documentation
+=========================
+
+ * `LLVM Language Reference Manual `_
+
+ Defines the LLVM intermediate representation and the assembly form of the
+ different nodes.
+
+ * `The LLVM Programmers Manual `_
+
+ Introduction to the general layout of the LLVM sourcebase, important classes
+ and APIs, and some tips & tricks.
+
+ * `CommandLine library Reference Manual `_
+
+ Provides information on using the command line parsing library.
+
+ * `LLVM Coding standards `_
+
+ Details the LLVM coding standards and provides useful information on writing
+ efficient C++ code.
+
+ * `Extending LLVM `_
+
+ Look here to see how to add instructions and intrinsics to LLVM.
+
+ * `Doxygen generated documentation `_
+
+ (`classes `_)
+ (`tarball `_)
+
+ * `ViewVC Repository Browser `_
diff --git a/docs/subsystems.rst b/docs/subsystems.rst
new file mode 100644
index 00000000000..3a0db7878d9
--- /dev/null
+++ b/docs/subsystems.rst
@@ -0,0 +1,74 @@
+.. _subsystems:
+
+Subsystem Documentation
+=======================
+
+ * `Writing an LLVM Pass `_
+
+ Information on how to write LLVM transformations and analyses.
+
+ * `Writing an LLVM Backend `_
+
+ Information on how to write LLVM backends for machine targets.
+
+ * `The LLVM Target-Independent Code Generator `_
+
+ 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.
+
+ * `TableGen Fundamentals `_
+
+ Describes the TableGen tool, which is used heavily by the LLVM code
+ generator.
+
+ * `Alias Analysis in LLVM `_
+
+ Information on how to write a new alias analysis implementation or how to
+ use existing analyses.
+
+ * `Accurate Garbage Collection with LLVM `_
+
+ The interfaces source-language compilers should use for compiling GC'd
+ programs.
+
+ * `Source Level Debugging with LLVM `_
+
+ This document describes the design and philosophy behind the LLVM
+ source-level debugger.
+
+ * `Zero Cost Exception handling in LLVM `_
+
+ This document describes the design and implementation of exception handling
+ in LLVM.
+
+ * `Bugpoint `_
+
+ Automatic bug finder and test-case reducer description and usage
+ information.
+
+ * `LLVM Bitcode File Format `_
+
+ This describes the file format and encoding used for LLVM "bc" files.
+
+ * `System Library `_
+
+ This document describes the LLVM System Library (lib/System) and
+ how to keep LLVM source code portable
+
+ * `Link Time Optimization `_
+
+ This document describes the interface between LLVM intermodular optimizer
+ and the linker and its design
+
+ * `The LLVM gold plugin `_
+
+ How to build your programs with link-time optimization on Linux.
+
+ * `The GDB JIT interface `_
+
+ How to debug JITed code with GDB.
+
+ * `Branch Weight Metadata `_
+
+ Provides information about Branch Prediction Information.
diff --git a/docs/userguides.rst b/docs/userguides.rst
new file mode 100644
index 00000000000..96102dd25eb
--- /dev/null
+++ b/docs/userguides.rst
@@ -0,0 +1,78 @@
+.. _userguides:
+
+User Guides
+===========
+
+ * `The LLVM Getting Started Guide `_
+
+ 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.
+
+ * `LLVM CMake guide `_
+
+ An addendum to the main Getting Started guide for those using the `CMake
+ build system `_.
+
+ * `Getting Started with the LLVM System using Microsoft Visual Studio
+ `_
+
+ An addendum to the main Getting Started guide for those using Visual Studio
+ on Windows.
+
+ * `LLVM Tutorial `_
+
+ A walk through the process of using LLVM for a custom language, and the
+ facilities LLVM offers in tutorial form.
+
+ * `Developer Policy `_
+
+ The LLVM project's policy towards developers and their contributions.
+
+ * `LLVM Command Guide `_
+
+ A reference manual for the LLVM command line utilities ("man" pages for LLVM
+ tools).
+
+ * `LLVM's Analysis and Transform Passes `_
+
+ A list of optimizations and analyses implemented in LLVM.
+
+ * `Frequently Asked Questions `_
+
+ A list of common questions and problems and their solutions.
+
+ * `Release notes for the current release `_
+
+ This describes new features, known bugs, and other limitations.
+
+ * `How to Submit A Bug Report `_
+
+ Instructions for properly submitting information about any bugs you run into
+ in the LLVM system.
+
+ * `LLVM Testing Infrastructure Guide `_
+
+ 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.
+
+ * `Packaging guide `_
+
+ Advice on packaging LLVM into a distribution.
+
+ * `The LLVM Lexicon `_
+
+ Definition of acronyms, terms and concepts used in LLVM.
+
+ * `How To Add Your Build Configuration To LLVM Buildbot Infrastructure `_
+
+ Instructions for adding new builder to LLVM buildbot master.
+
+ * **IRC** -- You can probably find help on the unofficial LLVM IRC.
+
+ We often are on irc.oftc.net in the #llvm channel. If you are using the
+ mozilla browser, and have chatzilla installed, you can `join #llvm on
+ irc.oftc.net `_.