<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
                      "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
  <title>How To Release LLVM To The Public</title>
  <link rel="stylesheet" href="llvm.css" type="text/css">
</head>
<body>

<div class="doc_title">How To Release LLVM To The Public</div>
<p class="doc_warning">NOTE: THIS DOCUMENT IS A WORK IN PROGRESS!</p>
<ol>
  <li><a href="#introduction">Introduction</a></li>
  <li><a href="#process">Release Process</a></li>
  <li><a href="#dist_targets">Distribution Targets</a></li>
</ol>
<div class="doc_author">
  <p>Written by <a href="mailto:rspencer@x10sys.com">Reid Spencer</a>,
  <a href="mailto:criswell@cs.uiuc.edu">John Criswell</a></p>
</div>

<!-- *********************************************************************** -->
<div class="doc_section"><a name="introduction">Introduction</a></div>
<!-- *********************************************************************** -->

<div class="doc_text">
  <p>
  This document collects information about successfully releasing LLVM to the
  public. It is the release manager's guide to ensuring that a high quality
  build of LLVM is released. Mostly, it's just a bunch of reminders of things to
  do at release time so we don't inadvertently ship something that is utility
  deficient.
  </p>

  <p>
  There are three main tasks for building a release of LLVM:
  </p>

  <ol>
    <li>Create the LLVM source distribution.</li>
    <li>Create the LLVM GCC source distribtuion.</li>
    <li>Create a set of LLVM GCC binary distribtuions for each supported
        platform.  These binary distributions must include compiled versions
        of the libraries found in <tt>llvm/runtime</tt> from the LLVM
        source distribution created in Step 1.</li>
  </ol>
</div>

<!-- *********************************************************************** -->
<div class="doc_section"><a name="process">Release Process</a></div>
<!-- *********************************************************************** -->

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="overview">Process Overview</a></div>
<div class="doc_text">
  <ol>
    <li><a href="#updocs">Update Documentation</a></li>
    <li><a href="#merge">Merge Branches</a></li>
    <li><a href="#deps">Make LibDeps.txt</a></li>
    <li><a href="#settle">Settle LLVM HEAD</a></li>
    <li><a href="#tag">Tag LLVM and Create the Release Branch</a></li>
    <li><a href="#verchanges">Update LLVM Version </a></li>
    <li><a href="#build">Build LLVM</a></li>
    <li><a href="#check">Run 'make check'</a></li>
    <li><a href="#test">Run LLVM Test Suite</a></li>
    <li><a href="#dist">Build the LLVM Source Distributions</a></li>
    <li><a href="#rpm">Build RPM Packages (optional)</a></li>
    <li><a href="#llvmgccbin">Build the LLVM GCC Binary Distribution</a></li>
    <li><a href="#webupdates">Update the LLVM Website</a></li>
  </ol>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="updocs">Update Documentation</a></div>
<div class="doc_text">
  <p>
  Review the documentation and ensure that it is up to date.  The Release Notes
  must be updated to reflect bug fixes, new known issues, and changes in the
  list of supported platforms.  The Getting Started Guide should be updated to
  reflect the new release version number tag avaiable from Subversion and
  changes in basic system requirements.
  </p>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="merge">Merge Branches</a></div>
<div class="doc_text">
  <p>
  Merge any work done on branches intended for release into mainline. Finish and
  commit all new features or bug fixes that are scheduled to go into the
  release.  Work that is not to be incorporated into the release should not be
  merged from branchs or commited from developer's working directories.
  </p>

  <p>
  From this point until the release branch is created, developers should
  <em>not</em> commit changes to the <tt>llvm</tt> and <tt>llvm-gcc</tt>
  Subversion repositories unless it is a bug fix <em>for the release</em>.
  </p>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="deps">Make LibDeps.txt</a></div>
<div class="doc_text">
  <p>
  Rebuild the <tt>LibDeps.txt</tt> target in <tt>utils/llvm-config</tt>. This
  makes sure that the <tt>llvm-config</tt> utility remains relevant for the
  release, reflecting any changes in the library dependencies.
  </p>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="settle">Settle Subversion HEAD</a></div>
<div class="doc_text">
  <p>
  Use the nightly test reports and 'make check' (deja-gnu based tests) to 
  ensure that recent changes and merged branches have not destabilized LLVM.
  Platforms which are used less often should be given special attention as they
  are the most likely to break from commits from the previous step.
  </p>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="tag">Subversion Tag And Branch</a></div>
<div class="doc_text">
  <p>Tag and branch the Subversion HEAD using the following procedure:</p>
  <ol>
    <li>
    <p>Request all developers to refrain from committing. Offenders get commit
    rights taken away (temporarily).</p></li>

    <li>
    <p>The Release Manager updates his/her <tt>llvm</tt>, <tt>llvm-test</tt>,
    and <tt>llvm-gcc</tt> source trees with the latest sources from mainline
    Subversion.  The Release Manager may want to consider using a new working
    directory for this to keep current uncommitted work separate from release
    work.</p></li>

    <li>
    <p>The Release Manager tags his/her <tt>llvm</tt>, <tt>llvm-test</tt>, and
    <tt>llvm-gcc</tt> working directories with "<tt>RELEASE_XX</tt>" where
    <tt>XX</tt> is the major and minor release numbers. So, for Release 1.2,
    <tt>XX=12</tt> and for Release 1.10, <tt>XX=110</tt>.</p>

<div class="doc_code">
<pre>
svn copy https://llvm.org/svn/llvm-project/llvm/trunk \
         https://llvm.org/svn/llvm-project/llvm/tags/RELEASE_<i>XX</i>
svn copy https://llvm.org/svn/llvm-project/llvm-gcc-4.0/trunk \
         https://llvm.org/svn/llvm-project/llvm-gcc-4.0/tags/RELEASE_<i>XX</i>
svn copy https://llvm.org/svn/llvm-project/test-suite/trunk \
         https://llvm.org/svn/llvm-project/test-suite/tags/RELEASE_<i>XX</i>
</pre>
</div>
    </li>

    <li>
    <p>Immediately create Subversion branches based on the
    <tt>RELEASE_<i>XX</i></tt> tag. The tag should be
    "<tt>release_<i>XX</i></tt>" (where XX matches that used for the
    <tt>RELEASE_<i>XX</i></tt> tag).  This is where the release distribution
    will be created.</p>

<div class="doc_code">
<pre>
svn copy https://llvm.org/svn/llvm-project/llvm/tags/RELEASE_<i>XX</i> \
         https://llvm.org/svn/llvm-project/llvm/branches/release_<i>XX</i>
svn copy https://llvm.org/svn/llvm-project/llvm-gcc-4.0/tags/RELEASE_<i>XX</i> \
         https://llvm.org/svn/llvm-project/llvm-gcc-4.0/branches/release_<i>XX</i>
svn copy https://llvm.org/svn/llvm-project/test-suite/tags/RELEASE_<i>XX</i> \
         https://llvm.org/svn/llvm-project/test-suite/branches/release_<i>XX</i>
</pre>
</div>
    </li>

    <li>
    <p>Advise developers they can work on Subversion HEAD again.</p></li>

    <li>
    <p>The Release Manager and any developers working on the release should switch
    to the release branch (as all changes to the release will now be done in
    the branch).  The easiest way to do this is to grab another working copy
    using the following commands:</p>

<div class="doc_code">
<pre>
svn co https://llvm.org/svn/llvm-project/llvm/branches/release_<i>XX</i>
svn co https://llvm.org/svn/llvm-project/llvm-gcc-4.0/branches/release_<i>XX</i>
svn co https://llvm.org/svn/llvm-project/test-suite/branches/release_<i>XX</i>
</pre>
</div></li>
  </ol>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="verchanges">Update LLVM Version</a></div>
<div class="doc_text">
  <p>
  After creating the LLVM release branch, update the release branchs'
  autoconf/configure.ac version from X.Xsvn to just X.X. Update it on mainline
  as well to be the next version (X.X+1svn).
  </p>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="build">Build LLVM</a></div>
<div class="doc_text">
  <p>
  Build both debug and release (optimized) versions of LLVM on all
  platforms. Ensure the build is warning and error free on each platform.
  </p>

  <p>
  Build a new version of the LLVM GCC front-end after building the LLVM tools.
  Once that is complete, go back to the LLVM source tree and build and install
  the <tt>llvm/runtime</tt> libraries.
  </p>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="check">Run 'make check'</a></div>
<div class="doc_text">
  <p>
  Run <tt>make check</tt> and ensure there are no unexpected failures. If there
  are, resolve the failures, commit them back into the release branch, and
  restart testing by <a href="#build">re-building LLVM</a>.
  </p>

  <p>
  Ensure that '<tt>make check</tt>' passes on all platforms for all targets. If
  certain failures cannot be resolved before release time, determine if marking
  them <tt>XFAIL</tt> is appropriate. If not, fix the bug and go back. The test
  suite must complete with "0 unexpected failures" for release.
  </p>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="test">LLVM Test Suite</a></div>
<div class="doc_text">
  <p>
  Run the <tt>llvm-test</tt> suite and ensure there are no unacceptable
  failures.  If there are, resolve the failures and go back to <a
  href="#build">re-building LLVM</a>. The test suite should be run in Nightly
  Test mode. All tests must pass.
  </p>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="dist">Build the LLVM Source Distributions</a></div>
<div class="doc_text">
  <p>
  Create source distributions for LLVM, LLVM GCC, and the LLVM Test Suite by
  exporting the source from Subversion and archiving it.  This can be done with
  the following commands:
  </p>

<div class="doc_code">
<pre>
svn export https://llvm.org/svn/llvm-project/llvm/branches/release_<i>XX</i> llvm
svn export https://llvm.org/svn/llvm-project/llvm-gcc-4.0/branches/release_<i>XX</i> llvm-gcc
svn export https://llvm.org/svn/llvm-project/test-suite/branches/release_<i>XX</i> llvm-test
mkdir cfrontend; mv llvm-gcc cfrontend/src
tar -cvf - llvm          | gzip &gt; llvm-X.X.tar.gz
tar -cvf - llvm-test     | gzip &gt; llvm-test-X.X.tar.gz
tar -cvf - cfrontend/src | gzip &gt; cfrontend-X.X.source.tar.gz
</pre>
</div>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="rpm">Building RPM packages (optional)</a></div>
<div class="doc_text">
  <p>
  You can, optionally, create source and binary RPM packages for LLVM. These may
  make it easier to get LLVM into a distribution. This can be done with the
  following commands:
  </p>

<div class="doc_code">
<pre>
make dist        # Build the distribution source tarball
make dist-check  # Check that the source tarball can build itself.
cp llvm-M.m.tar.gz /usr/src/redhat/SOURCES  # Required by rpmbuild
make srpm # for source rpm
make rpm  # for binary rpm
</pre>
</div>

  <p>
  First, use <tt>make dist</tt> to simply build the distribution. Any failures
  need to be corrected (on the branch). Once <tt>make dist</tt> can be
  successful, do <tt>make dist-check</tt>. This target will do the same thing as
  the 'dist' target but also test that distribution to make sure it can build
  itself and runs <tt>make check</tt> as well. This ensures that needed files
  are not missing and that the src tarball can be successfully unpacked, built,
  installed, and cleaned. Once you have a reliable tarball, you need to copy it
  to the <tt>/usr/src/redhat/SOURCES</tt> directory which is a requirement of
  the rpmbuild tool. The last two <tt>make</tt> invocations just run rpmbuild to
  build either a source (<tt>srpm</tt>) or binary (<tt>rpm</tt>) RPM package.
  </p>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="llvmgccbin">Build the LLVM GCC Binary Distribution</a></div>
<div class="doc_text">
  <p>
  Creating the LLVM GCC binary distribution requires performing the following
  steps for each supported platform:
  </p>

  <ol>
    <li>
    Build the LLVM GCC front-end.  The LLVM GCC front-end must be installed in
    a directory named <tt>cfrontend/&lt;platform&gt;/llvm-gcc</tt>.  For
    example, the Sparc/Solaris directory is named
    <tt>cfrontend/sparc/llvm-gcc</tt>.
    </li>

    <li>
    Build the libraries in <tt>llvm/runtime</tt> and install them into the 
    created LLVM GCC installation directory.
    </li>

    <li>
    For systems with non-distributable header files (e.g. Solaris), manually
    remove header files that the GCC build process has "fixed."  This process
    is admittedly painful, but not as bad as it looks; these header files are
    almost always easily identifiable with simple grep expressions and are
    installed in only a few directories in the GCC installation directory.
    </li>

    <li>
    Add the copyright files and header file fix script.
    </li>

    <li>
    Archive and compress the installation directory.  These can be found in
    previous releases of the LLVM-GCC front-end.
    </li>
  </ol>
</div>


<!-- ======================================================================= -->
<div class="doc_subsection"><a name="webupdates">Update the LLVM Website</a></div>
<div class="doc_text">
  <p>
  Check out the <tt>website</tt> module from Subversion. Create a new
  subdirectory X.X in the releases directory. Place the <tt>llvm</tt>,
  <tt>llvm-test</tt>, <tt>llvm-gcc</tt> source, and <tt>llvm-gcc</tt> binaries
  in this new directory. Copy the <tt>llvm/docs</tt> and <tt>LICENSE.txt</tt>
  files into this new directory. Update the <tt>releases/download.html</tt> file
  with the new release.  Update the <tt>releases/index.html</tt> with the new
  release. Finally, update the main page (<tt>index.html</tt> and sidebar) to
  point to the new release and release announcement. Make sure this all gets
  commited back into Subversion.
  </p>
</div>

<!--
<div class="doc_subsection"><a name="release">Release</a></div>
<div class="doc_text">
  <p>Release the distribution tarball to the public. This consists of generating
  several tarballs. The first set, the source distributions, are automatically
  generated by the "make dist" and "make dist-check". There are gzip, bzip2, and
  zip versions of these bundles.</p>
  <p>The second set of tarballs is the binary release. When "make dist-check"
  succeeds, it will have created an _install directory into which it installed
  the binary release. You need to rename that directory as "llvm" and then
  create tarballs from the contents of that "llvm" directory.</p>
  <p>Finally, use rpm to make an rpm package based on the llvm.spec file. Don't
  forget to update the version number, documentation, etc. in the llvm.spec
  file.</p>
</div>
-->

<!-- *********************************************************************** -->
<div class="doc_section"><a name="dist_targets">Distribution Targets</a></div>
<!-- *********************************************************************** -->

<!-- ======================================================================= -->
<div class="doc_subsection">Overview</div>
<div class="doc_text">
  <p>
  The first thing you need to understand is that there are multiple make targets
  to support this feature. Here's an overview, we'll delve into the details
  later.
  </p>

  <ul>
    <li><b>distdir</b> - builds the distribution directory from which the 
        distribution will be packaged</li>
    <li><b>dist</b> - builds each of the distribution tarballs (tar.gz, 
        tar.bzip2, .zip). These can be built individually as well, with separate
        targets.</li>
    <li><b>dist-check</b> - this is identical to <tt>dist</tt> but includes a
        check on the distribution that ensures the tarball can: unpack
         successfully, compile correctly, pass '<tt>make check</tt>', and pass
         '<tt>make clean</tt>'.</li>
    <li><b>dist-clean</b>- this just does a normal clean but also cleans up the
        stuff generated by the other three <tt>dist</tt> targets (above).</li>
  </ul>

  <p>
  Okay, that's the basic functionality. When making a release, we want to ensure
  that the tree you build the distribution from passes
  <tt>dist-check</tt>. Beyond fixing the usual bugs, there is generally one
  impediment to making the release in this fashion: missing files. The
  <tt>dist-check</tt> process guards against that possibility. It will either
  fail and that failure will indicate what's missing, or it will succeed meaning
  that it has proved that the tarballs can actually succeed in building LLVM
  correctly and that it passes <tt>make check</tt>.
  </p>
</div>

<!-- ======================================================================= -->

<div class="doc_subsection">distdir</div>
<div class="doc_text">
  <p>
  This target builds the distribution directory which is the directory from 
  which the tarballs are generated. The distribution directory has the same 
  name as the release, e.g. LLVM-1.7). This target goes through the following 
  process:
  </p>

  <ol>
    <li>First, if there was an old distribution directory (for the current 
        release), it is removed in its entirety and you see <tt>Removing old 
        LLVM-1.7</tt></li>
    <li>Second, it issues a <tt>make all ENABLE_OPTIMIZED=3D1</tt> to ensure 
        that the everything in your tree can be built in release mode. Often
        times there are discrepancies in building between debug and release
        modes so it enforces release mode first. If that fails, the
        <tt>distdir</tt> target fails too. This is preceded by the message
        <tt>Making 'all' to verify build</tt>.</li>
    <li>Next, it traverses your source tree and copies it to a new directory 
        that has the name of the release (<tt>LLVM-M.m</tt> in our current
        case). This is the directory that will get tar'd. It contains all the
        software that needs to be in the distribution. During the copying
        process, it omits generated files, SVN directories, and any other
        "cruft" that's in your build tree. This is done to eliminate the
        possibility of huge distribution tarballs that include useless or
        irrelevant stuff in them. This is the trickiest part of making the
        distribution. Done manually you will either include stuff that
        shouldn't be in the distribution or exclude stuff that should. This
        step is preceded by the message <tt>Building Distribution Directory
        LLVM-1.7</tt></li>
    <li>The distribution directory is then traversed and all <tt>CVS</tt> or 
        <tt>.svn</tt> directories are removed. You see: <tt>Eliminating CVS/.svn
        directories from distribution</tt></li>
    <li>The recursive <tt>dist-hook</tt> target is executed. This gives each 
        directory a chance to modify the distribution in some way (more on this 
        below).</li>
    <li>The distribution directory is traversed and the correct file
        permissions and modes are set based on the type of file.</li>
  </ol>

  <p>
  To control the process of making the distribution directory correctly, each
  Makefile can utilize two features:
  </p>

  <ol>
    <li><b><tt>EXTRA_DIST</tt></B> - this make variable specifies which files 
        it should distribute. By default, all source files are automatically 
        included for distribution as well as certain <tt>well known</tt> files 
        (see DistAlways variable in Makefile.rules for details). Each Makefile 
        specifies, via the <tt>EXTRA_DIST</tt> variable, which additional files 
        need to be distributed. Only those files that are needed to build LLVM 
        should be added to <tt>EXTRA_DIST</tt>. <tt>EXTRA_DIST</tt> contains a 
        list of file or directory names that should be distributed. For example, 
        the top level Makefile contains <tt>EXTRA_DIST := test llvm.spec
        include</tt>. This means that in addition to regular things that are
        distributed at the top level (<tt>CREDITS.txt, LICENSE.txt</tt>, etc.)
        the distribution should contain the entire <tt>test</tt> and
        <tt>include</tt> directories as well as the <tt>llvm.spec</tt> file.</li>
    <li><b><tt>dist-hook</tt></B> - this make target can be used to alter the 
        content of the distribution directory. For example, in the top level 
        Makefile there is some logic to eliminate files in the <tt>include</tt> 
        subtree that are generated by the configure script. These should not be 
        distributed. Similarly, any <tt>dist-hook</tt> target found in any 
        directory can add or remove or modify things just before it gets
        packaged. Any transformation is permitted. Generally, not much is
        needed.</li>
  </ol>

  <p>
  You will see various messages if things go wrong:
  </p>

  <ol>
    <li>During the copying process, any files that are missing will be flagged 
        with: <tt>===== WARNING: Distribution Source 'dir/file' Not Found!</tt>
        These must be corrected by either adding the file or removing it from 
        <tt>EXTRA_DIST</tt>.</li>
    <li>If you build the distribution with <tt>VERBOSE=1</tt>, then you might 
        also see: <tt>Skipping non-existent 'dir/file'</tt> in certain cases
        where it's okay to skip the file.</li>
    <li>The target can fail if any of the things it does fail. Error messages 
        should indicate what went wrong.</li>
  </ol>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection">dist</div>
<div class="doc_text">
  <p>
  This target does exactly what <tt>distdir</tt> target does, but also includes
  assembling the tarballs. There are actually four related targets here:
  </p>

  <ul>
    <li><b><tt>dist-gzip</tt></b>: package the gzipped distribution tar 
        file. The distribution directory is packaged into a single file ending
        in <tt>.tar.gz</tt> which is gzip compressed.</li>
    <li><b><tt>dist-bzip2</tt></b>: package the bzip2 distribution tar file. 
        The distribution directory is packaged into a single file ending in 
        <tt>.tar.bzip2</tt> which is bzip2 compressed.</li>
    <li><b><tt>dist-zip</tt></b>: package the zip distribution file. The 
        distribution directory is packaged into a single file ending in 
        <tt>.zip</tt> which is zip compressed.</li>
    <li><b><tt>dist</tt></b>: does all three, dist-gzip, dist-bzip2,
        dist-zip</li>
  </ul>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection">dist-check</div>
<div class="doc_text">
  <p>
  This target checks the distribution. The basic idea is that it unpacks the 
  distribution tarball and ensures that it can build. It takes the following 
  actions:
  </p>

  <ol>
    <li>It depends on the <tt>dist-gzip</tt> target which, if it hasn't already 
        been built, builds the gzip tar bundle (see dist and distdir
        above).</li>
    <li>removes any pre-existing <tt>_distcheckdir</tt> at the top level.</li>
    <li>creates a new <tt>_distcheckdir</tt> directory at the top level.</li>
    <li>creates a <tt>build</tt> subdirectory and an <tt>install</tt> 
        subdirectory under <tt>_distcheckdir</tt>.</li>
    <li>unzips and untars the release tarball into <tt>_distcheckdir</tt>, 
        creating <tt>LLVM-1.7</tt> directory (from the tarball).</li>
    <li>in the build subdirectory, it configures with appropriate options to
        build from the unpacked source tarball into the <tt>build</tt> directory
        with installation in the <tt>install</tt> directory.</li>
    <li>runs <tt>make all</tt></li>
    <li>runs <tt>make </tt><tt>check</tt></li>
    <li>runs <tt>make install</tt></li>
    <li>runs <tt>make uninstall</tt></li>
    <li>runs <tt>make dist</tt></li>
    <li>runs <tt>make clean</tt></li>
    <li>runs <tt>make dist-clean</tt></li>
  </ol>

  <p>
  If it can pass all that, the distribution will be deemed distribution worth y
  and you will see:
  </p>

  <pre>===== LLVM-1.7.tar.gz Ready For Distribution =====</pre>

  <p>
  This means the tarball should then be tested on other platforms and have the
  nightly test run against it. If those all pass, THEN it is ready for
  distribution.
  </p>
 
  <p>
  A note about disk space: using <tt>dist-check</tt> will easily triple the
  amount of disk space your build tree is using. You might want to check
  available space before you begin.
  </p>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection">dist-clean</div>
<div class="doc_text">
  <p>
  In addition to doing a normal <tt>clean</tt>, this target will clean up the
  files and directories created by the distribution targets. In particular the
  distribution directory (<tt>LLVM-X.X</tt>), check directory
  (<tt>_distcheckdir</tt>), and the various tarballs will be removed. You do
  this after the release has shipped and you no longer need this stuff in your
  build tree.
  </p>
</div>

<!-- *********************************************************************** -->
<hr>
<address>
  <a href="http://jigsaw.w3.org/css-validator/check/referer"><img
  src="http://jigsaw.w3.org/css-validator/images/vcss" alt="Valid CSS!"></a>
  <a href="http://validator.w3.org/check/referer"><img
  src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01!" /></a>

  <a href="mailto:rspencer@x10sys.com">Reid Spencer</a><br>
  <a href="http://llvm.cs.uiuc.edu">The LLVM Compiler Infrastructure</a>
  <br/>
  Last modified: $Date$
</address>
</body>
</html>
