<!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>
<ol>
  <li><a href="#introduction">Introduction</a></li>
  <li><a href="#introduction">Release Timeline</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>,
  <a href="mailto:tonic@nondot.org">Tanya Lattner</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. 
  </p>

  <p>
  The following is the basic criteria for releasing LLVM:
  </p>

  <ol>
    <li>Successful configure and build.</li>
    <li>Clean 'make check'.</li>
    <li>No regressions in the testsuite from the previous release. This may 
    include performance regressions for major benchmarks.</li>
  </ol>
</div>

<!-- *********************************************************************** -->
<div class="doc_section"><a name="process">Release Timeline</a></div>
<!-- *********************************************************************** -->
<div class="doc_text">
The release manager should attempt to have a release every 3-4 months because LLVM 
does time based releases (instead of feature based). The release schedule should
be roughly as follows:
<ol>
<li>Set code freeze and branch creation date for 3 months after last release 
date. Announce release schedule to the LLVM community and update the website.</li>
<li>Create release branch and begin release process. </li>
<li>Send out pre-release for first round of testing. Testing will last 7-10 days.
During the first round of testing, regressions should be found and fixed. Patches
are merged from mainline to the release branch.</li>
<li>Generate and send out second pre-release. Bugs found during this time will
not be fixed unless absolutely critical. Bugs introduce by patches merged in
will be fixed and if so, a 3rd round of testing is needed.</li>
<li>The release notes should be updated during the first and second round of
pre-release testing.</li>
<li>Finally, release!</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="#branch">Create Release Branch</a></li>
    <li><a href="#verchanges">Update LLVM Version </a></li>
    <li><a href="#dist">Build the LLVM Source Distributions</a></li>
    <li><a href="#build">Build LLVM</a></li>
    <li><a href="#llvmgccbin">Build the LLVM GCC Binary Distribution</a></li>
     <li><a href="#rpm">Build RPM Packages (optional)</a></li>
    <li><a href="#check">Run 'make check'</a></li>
    <li><a href="#test">Run LLVM Test Suite</a></li>
    <li><a href="#prerelease">Pre-Release Testing</a></li>
    <li><a href="#tag">Tag the LLVM Release Branch</a></li>
    <li><a href="#updocs">Update Documentation</a></li>
    <li><a href="#updemo">Update the LLVM Demo Page</a></li>
    <li><a href="#webupdates">Update the LLVM Website</a></li>
    <li><a href="#announce">Announce the Release</a></li>
    
  </ol>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="branch">Create Release Branch</a></div>
<div class="doc_text">
<p>Branch the Subversion HEAD using the following procedure:</p>
  <ol>
    <li>
    <p>Verify that the current Subversion HEAD is in decent shape by examining nightly
  tester results.</p></li>
    <li>
    <p>Request all developers to refrain from committing. Offenders get commit
    rights taken away (temporarily).</p></li>
  <li>
  <p> Create the release branch for <tt>llvm</tt>, <tt>llvm-gcc4.2</tt>, and
  the <tt>test-suite</tt>. The branch name will be <tt>release_XX</tt>,
  where <tt>XX</tt> is the major and minor release numbers. These branches can
  be created without checking out anything from subversion.
  </p>
  
  <div class="doc_code">
<pre>
svn copy https://llvm.org/svn/llvm-project/llvm/trunk \
         https://llvm.org/svn/llvm-project/llvm/branches/release_<i>XX</i>
svn copy https://llvm.org/svn/llvm-project/llvm-gcc-4.2/trunk \
         https://llvm.org/svn/llvm-project/llvm-gcc-4.2/branches/release_<i>XX</i>
svn copy https://llvm.org/svn/llvm-project/test-suite/trunk \
         https://llvm.org/svn/llvm-project/test-suite/branches/release_<i>XX</i>
</pre>
  </div>

  <li>
    <p>Advise developers they can work on Subversion HEAD again.</p></li>
  
  <li>
    <p>The Release Manager 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.2/branches/release_<i>XX</i>
svn co https://llvm.org/svn/llvm-project/test-suite/branches/release_<i>XX</i>
</pre>
</div></li>

</div>
  </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 branches'
  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). Regenerated the configure script
  for both. This must be done for both llvm and the test-suite.
  </p>
  <p>In addition, the version number of all the Bugzilla components must be
  updated for the next release.
  </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-X.X
svn export https://llvm.org/svn/llvm-project/llvm-gcc-4.2/branches/release_<i>XX</i> llvm-gcc4.2-X.X.source
svn export https://llvm.org/svn/llvm-project/test-suite/branches/release_<i>XX</i> llvm-test-X.X
tar -cvf - llvm-X.X          | gzip &gt; llvm-X.X.tar.gz
tar -cvf - llvm-test-X.X     | gzip &gt; llvm-test-X.X.tar.gz
tar -cvf - llvm-gcc4.2-X.X.source | gzip &gt; llvm-gcc-4.2-X.X.source.tar.gz
</pre>
</div>
</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.
  Note that when building the LLVM GCC Binary, use a release build of LLVM.
  </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 (release/optimized) requires 
  performing the following steps for each supported platform:
  </p>

  <ol>
    <li>
    Build the LLVM GCC front-end by following the directions in the README.LLVM
    file. Be sure to build with LLVM_VERSION_INFO=X.X, where X is the major and
    minor release numbers.
    </li>

    <li>
    Copy the installation directory to a directory named for the specific target.
    For example on Red Hat Enterprise Linux, the directory would be named
    <tt>llvm-gcc4.0-2.1-x86-linux-RHEL4</tt>. Archive and compress the new directory.  
    </li>
  </ol>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="check">Run 'make check'</a></div>
<div class="doc_text">
  <p>
  Using the newly built llvm-gcc and llvm, reconfigure llvm to locate llvm-gcc.
  Run <tt>make check</tt> and ensure there are no unexpected failures. If there
  are, resolve the failures or file a bug. If there is a fix commited to mainline,
  merge back into the release branch, and restart testing by 
  <a href="#build">re-building LLVM</a> and <a href="#build">llvm-gcc</a>. If no
  fix will be made, XFAIL the test and commit back to the release branch.
  </p>

  <p>
  Ensure that '<tt>make check</tt>' passes on all platforms for all targets. The 
  test suite must complete with "0 unexpected failures" before sending out the
  pre-releases for testing.
  </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. Unacceptable failures are regression from the previous release
  and (optionally) major performance regressions from the previous release. 
  If a regression is found a bug is filled, but the pre-releases may still go
  out.</p>
</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="prerelease">Pre-Release Testing</a></div>
<div class="doc_text">
  <p>
  Once all testing has been completed and appropriate bugs filed, the pre-release
  tar balls may be put on the website and the LLVM community is notified. Ask that
  all LLVM developers test the release in 2 ways:</p>
  <ol>
  <li>Download llvm-X.X, llvm-test-X.X, and the appropriate llvm-gcc4 binary. 
  Run "make check" and the full llvm-test suite (make TEST=nightly report).<li>
  <li>Download llvm-X.X, llvm-test-X.X, and the llvm-gcc4 source. Compile 
  everything. Run "make check" and the full llvm-test suite (make TEST=nightly 
  report).</li>
  </ol>
  <p>Ask LLVM developers to submit the report and make check results to the list.
  Verify that there are no regressions from the previous release. For
  unsupported targets, verify that make check at least is clean.</p>
  
  <p>The first round of pre-release testing will be the longest. During this time,
  all regressions must be fixed before the second pre-release is created (repeat
  steps 4-8).</p>
  
  <p>If this is the second round of testing, this is only to ensure the bug fixes
  previously merged in have not created new major problems. This is not the time
  to solve additional and unrelated bugs. If no patches are merged in, the release
  is determined to be ready and the release manager may move onto the next step.</p>
</div>


<!-- ======================================================================= -->
<div class="doc_subsection"><a name="tag">Tag the Release Branch</a></div>
<div class="doc_text">
  <p>Tag the release branch using the following procedure:</p>
<div class="doc_code">
<pre>
svn copy https://llvm.org/svn/llvm-project/llvm/branches/release_XX \
         https://llvm.org/svn/llvm-project/llvm/tags/RELEASE_<i>XX</i>
svn copy https://llvm.org/svn/llvm-project/llvm-gcc-4.2/branches/release_XX \
         https://llvm.org/svn/llvm-project/llvm-gcc-4.2/tags/RELEASE_<i>XX</i>
svn copy https://llvm.org/svn/llvm-project/test-suite/branches/release_XX \
         https://llvm.org/svn/llvm-project/test-suite/tags/RELEASE_<i>XX</i>
</pre>
</div>
</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. Merge both changes from mainline into 
  the release branch.
  </p>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="updemo">Update the LLVM Demo Page</a></div>
<div class="doc_text">
  <p>
  The LLVM demo page must be updated to use the new release. This consists of
  using the llvm-gcc binary and building LLVM. Update the website demo page
  configuration to use the new release.</p>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="webupdates">Update the LLVM Website</a></div>
<div class="doc_text">
  <p>
  The website must be updated before the release announcement is sent out. Here is
  what to do:</p>
  <ol>
  <li> Check out the <tt>website</tt> module from CVS. </li> 
  <li> Create a new subdirectory X.X in the releases directory. </li> 
  <li> Commit the <tt>llvm</tt>, <tt>test-suite</tt>, <tt>llvm-gcc</tt> source, 
  and <tt>llvm-gcc</tt> binaries in this new directory. </li>
  <li> Copy and commit the <tt>llvm/docs</tt> and <tt>LICENSE.txt</tt>
  files into this new directory. The docs should be built with BUILD_FOR_WEBSITE=1.</li>
  <li> Commit the index.html to the release/X.X directory to redirect (use from previous
  release. </li>
  <li> Update the <tt>releases/download.html</tt> file with the new release. </li>
  <li>Update the <tt>releases/index.html</tt> with the new release and link to 
  release documentation.</li>
  <li> 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.</li>
  </ol>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="announce">Announce the Release</a></div>
<div class="doc_text">
  <p>Have Chris send out the release announcement when everything is finished.</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="http://llvm.cs.uiuc.edu">The LLVM Compiler Infrastructure</a>
  <br/>
  Last modified: $Date$
</address>
</body>
</html>
