<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
                      "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>LLVM Developer Policy</title>
  <link rel="stylesheet" href="llvm.css" type="text/css">
</head>
<body>
      
<h1>LLVM Developer Policy</h1>
<ol>
  <li><a href="#introduction">Introduction</a></li>
  <li><a href="#policies">Developer Policies</a>
  <ol>
    <li><a href="#informed">Stay Informed</a></li>
    <li><a href="#patches">Making a Patch</a></li>
    <li><a href="#reviews">Code Reviews</a></li>
    <li><a href="#owners">Code Owners</a></li>
    <li><a href="#testcases">Test Cases</a></li>
    <li><a href="#quality">Quality</a></li>
    <li><a href="#commitaccess">Obtaining Commit Access</a></li>
    <li><a href="#newwork">Making a Major Change</a></li>
    <li><a href="#incremental">Incremental Development</a></li>
    <li><a href="#attribution">Attribution of Changes</a></li>
  </ol></li>
  <li><a href="#clp">Copyright, License, and Patents</a>
  <ol>
    <li><a href="#copyright">Copyright</a></li>
    <li><a href="#license">License</a></li>
    <li><a href="#patents">Patents</a></li>
  </ol></li>
</ol>
<div class="doc_author">Written by the LLVM Oversight Team</div>

<!--=========================================================================-->
<h2><a name="introduction">Introduction</a></h2>
<!--=========================================================================-->
<div>
<p>This document contains the LLVM Developer Policy which defines the project's
   policy towards developers and their contributions. The intent of this policy
   is to eliminate miscommunication, rework, and confusion that might arise from
   the distributed nature of LLVM's development.  By stating the policy in clear
   terms, we hope each developer can know ahead of time what to expect when
   making LLVM contributions.  This policy covers all llvm.org subprojects,
   including Clang, LLDB, etc.</p>
<p>This policy is also designed to accomplish the following objectives:</p>

<ol>
  <li>Attract both users and developers to the LLVM project.</li>

  <li>Make life as simple and easy for contributors as possible.</li>

  <li>Keep the top of Subversion trees as stable as possible.</li>
</ol>
  
<p>This policy is aimed at frequent contributors to LLVM. People interested in
   contributing one-off patches can do so in an informal way by sending them to
   the
   <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits">llvm-commits
   mailing list</a> and engaging another developer to see it through the
   process.</p>
</div>

<!--=========================================================================-->
<h2><a name="policies">Developer Policies</a></h2>
<!--=========================================================================-->
<div>
<p>This section contains policies that pertain to frequent LLVM developers.  We
   always welcome <a href="#patches">one-off patches</a> from people who do not
   routinely contribute to LLVM, but we expect more from frequent contributors
   to keep the system as efficient as possible for everyone.  Frequent LLVM
   contributors are expected to meet the following requirements in order for
   LLVM to maintain a high standard of quality.<p>

<!-- _______________________________________________________________________ -->
<h3><a name="informed">Stay Informed</a></h3>
<div>
<p>Developers should stay informed by reading at least the "dev" mailing list
   for the projects you are interested in, such as 
   <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev">llvmdev</a> for
   LLVM, <a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev">cfe-dev</a>
   for Clang, or <a
   href="http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev">lldb-dev</a>
   for LLDB.  If you are doing anything more than just casual work on LLVM, it
   is suggested that you also subscribe to the "commits" mailing list for the
   subproject you're interested in, such as
  <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits">llvm-commits</a>,
  <a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits">cfe-commits</a>,
  or <a href="http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits">lldb-commits</a>.
   Reading the "commits" list and paying attention to changes being made by
   others is a good way to see what other people are interested in and watching
   the flow of the project as a whole.</p>

<p>We recommend that active developers register an email account with 
   <a href="http://llvm.org/bugs/">LLVM Bugzilla</a> and preferably subscribe to
   the <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmbugs">llvm-bugs</a>
   email list to keep track of bugs and enhancements occurring in LLVM.  We
   really appreciate people who are proactive at catching incoming bugs in their
   components and dealing with them promptly.</p>
</div>

<!-- _______________________________________________________________________ -->
<h3><a name="patches">Making a Patch</a></h3>

<div>
<p>When making a patch for review, the goal is to make it as easy for the
   reviewer to read it as possible.  As such, we recommend that you:</p>

<ol>
  <li>Make your patch against the Subversion trunk, not a branch, and not an old
      version of LLVM.  This makes it easy to apply the patch.  For information
      on how to check out SVN trunk, please see the <a
      href="GettingStarted.html#checkout">Getting Started Guide</a>.</li>
        
  <li>Similarly, patches should be submitted soon after they are generated.  Old
      patches may not apply correctly if the underlying code changes between the
      time the patch was created and the time it is applied.</li>

  <li>Patches should be made with <tt>svn diff</tt>, or similar. If you use
      a different tool, make sure it uses the <tt>diff -u</tt> format and
      that it doesn't contain clutter which makes it hard to read.</li>

  <li>If you are modifying generated files, such as the top-level
      <tt>configure</tt> script, please separate out those changes into
      a separate patch from the rest of your changes.</li>
</ol>
  
<p>When sending a patch to a mailing list, it is a good idea to send it as an
   <em>attachment</em> to the message, not embedded into the text of the
   message.  This ensures that your mailer will not mangle the patch when it
   sends it (e.g. by making whitespace changes or by wrapping lines).</p>

<p><em>For Thunderbird users:</em> Before submitting a patch, please open 
   <em>Preferences &#8594; Advanced &#8594; General &#8594; Config Editor</em>,
   find the key <tt>mail.content_disposition_type</tt>, and set its value to
   <tt>1</tt>. Without this setting, Thunderbird sends your attachment using
   <tt>Content-Disposition: inline</tt> rather than <tt>Content-Disposition:
   attachment</tt>. Apple Mail gamely displays such a file inline, making it
   difficult to work with for reviewers using that program.</p>
</div>

<!-- _______________________________________________________________________ -->
<h3><a name="reviews">Code Reviews</a></h3>
<div>
<p>LLVM has a code review policy. Code review is one way to increase the quality
   of software. We generally follow these policies:</p>

<ol>
  <li>All developers are required to have significant changes reviewed before
      they are committed to the repository.</li>

  <li>Code reviews are conducted by email, usually on the llvm-commits
      list.</li>

  <li>Code can be reviewed either before it is committed or after.  We expect
      major changes to be reviewed before being committed, but smaller changes
      (or changes where the developer owns the component) can be reviewed after
      commit.</li>

  <li>The developer responsible for a code change is also responsible for making
      all necessary review-related changes.</li>

  <li>Code review can be an iterative process, which continues until the patch
      is ready to be committed.</li>
</ol>
  
<p>Developers should participate in code reviews as both reviewers and
   reviewees. If someone is kind enough to review your code, you should return
   the favor for someone else.  Note that anyone is welcome to review and give
   feedback on a patch, but only people with Subversion write access can approve
   it.</p>
</div>

<!-- _______________________________________________________________________ -->
<h3><a name="owners">Code Owners</a></h3>
<div>

<p>The LLVM Project relies on two features of its process to maintain rapid
   development in addition to the high quality of its source base: the
   combination of code review plus post-commit review for trusted maintainers.
   Having both is a great way for the project to take advantage of the fact that
   most people do the right thing most of the time, and only commit patches
   without pre-commit review when they are confident they are right.</p>
     
<p>The trick to this is that the project has to guarantee that all patches that
   are committed are reviewed after they go in: you don't want everyone to
   assume someone else will review it, allowing the patch to go unreviewed.  To
   solve this problem, we have a notion of an 'owner' for a piece of the code.
   The sole responsibility of a code owner is to ensure that a commit to their
   area of the code is appropriately reviewed, either by themself or by someone
   else.  The current code owners are:</p>
  
<ol>
  <li><b>Evan Cheng</b>: Code generator and all targets.</li>

  <li><b>Greg Clayton</b>: LLDB.</li>

  <li><b>Doug Gregor</b>: Clang Frontend Libraries.</li>

  <li><b>Howard Hinnant</b>: libc++.</li>

  <li><b>Anton Korobeynikov</b>: Exception handling, debug information, and
      Windows codegen.</li>

  <li><b>Ted Kremenek</b>: Clang Static Analyzer.</li>

  <li><b>Chris Lattner</b>: Everything not covered by someone else.</li>
  
  <li><b>John McCall</b>: Clang LLVM IR generation.</li>

  <li><b>Jakob Olesen</b>: Register allocators and TableGen.</li>

  <li><b>Duncan Sands</b>: dragonegg and llvm-gcc 4.2.</li>
</ol>
  
<p>Note that code ownership is completely different than reviewers: anyone can
   review a piece of code, and we welcome code review from anyone who is
   interested.  Code owners are the "last line of defense" to guarantee that all
   patches that are committed are actually reviewed.</p>

<p>Being a code owner is a somewhat unglamorous position, but it is incredibly
   important for the ongoing success of the project.  Because people get busy,
   interests change, and unexpected things happen, code ownership is purely
   opt-in, and anyone can choose to resign their "title" at any time. For now,
   we do not have an official policy on how one gets elected to be a code
   owner.</p>
</div>

<!-- _______________________________________________________________________ -->
<h3><a name="testcases">Test Cases</a></h3>
<div>
<p>Developers are required to create test cases for any bugs fixed and any new
   features added.  Some tips for getting your testcase approved:</p>

<ol>
  <li>All feature and regression test cases are added to the 
      <tt>llvm/test</tt> directory. The appropriate sub-directory should be
      selected (see the <a href="TestingGuide.html">Testing Guide</a> for
      details).</li>

  <li>Test cases should be written in <a href="LangRef.html">LLVM assembly
      language</a> unless the feature or regression being tested requires
      another language (e.g. the bug being fixed or feature being implemented is
      in the llvm-gcc C++ front-end, in which case it must be written in
      C++).</li>

  <li>Test cases, especially for regressions, should be reduced as much as
      possible, by <a href="Bugpoint.html">bugpoint</a> or manually. It is
      unacceptable to place an entire failing program into <tt>llvm/test</tt> as
      this creates a <i>time-to-test</i> burden on all developers. Please keep
      them short.</li>
</ol>
  
<p>Note that llvm/test and clang/test are designed for regression and small
   feature tests only. More extensive test cases (e.g., entire applications,
   benchmarks, etc)
   should be added to the <tt>llvm-test</tt> test suite.  The llvm-test suite is
   for coverage (correctness, performance, etc) testing, not feature or
   regression testing.</p>
</div>

<!-- _______________________________________________________________________ -->
<h3><a name="quality">Quality</a></h3>
<div>
<p>The minimum quality standards that any change must satisfy before being
   committed to the main development branch are:</p>

<ol>
  <li>Code must adhere to the <a href="CodingStandards.html">LLVM Coding
      Standards</a>.</li>

  <li>Code must compile cleanly (no errors, no warnings) on at least one
      platform.</li>

  <li>Bug fixes and new features should <a href="#testcases">include a
      testcase</a> so we know if the fix/feature ever regresses in the
      future.</li>

  <li>Code must pass the <tt>llvm/test</tt> test suite.</li>

  <li>The code must not cause regressions on a reasonable subset of llvm-test,
      where "reasonable" depends on the contributor's judgement and the scope of
      the change (more invasive changes require more testing). A reasonable
      subset might be something like
      "<tt>llvm-test/MultiSource/Benchmarks</tt>".</li>
</ol>

<p>Additionally, the committer is responsible for addressing any problems found
   in the future that the change is responsible for.  For example:</p>

<ul>
  <li>The code should compile cleanly on all supported platforms.</li>

  <li>The changes should not cause any correctness regressions in the
      <tt>llvm-test</tt> suite and must not cause any major performance
      regressions.</li>

  <li>The change set should not cause performance or correctness regressions for
      the LLVM tools.</li>

  <li>The changes should not cause performance or correctness regressions in
      code compiled by LLVM on all applicable targets.</li>

  <li>You are expected to address any <a href="http://llvm.org/bugs/">bugzilla
      bugs</a> that result from your change.</li>
</ul>
  
<p>We prefer for this to be handled before submission but understand that it
   isn't possible to test all of this for every submission.  Our build bots and
   nightly testing infrastructure normally finds these problems.  A good rule of
   thumb is to check the nightly testers for regressions the day after your
   change.  Build bots will directly email you if a group of commits that
   included yours caused a failure.  You are expected to check the build bot
   messages to see if they are your fault and, if so, fix the breakage.</p>

<p>Commits that violate these quality standards (e.g. are very broken) may be
   reverted. This is necessary when the change blocks other developers from
   making progress. The developer is welcome to re-commit the change after the
   problem has been fixed.</p>
</div>

<!-- _______________________________________________________________________ -->
<h3><a name="commitaccess">Obtaining Commit Access</a></h3>
<div>

<p>We grant commit access to contributors with a track record of submitting high
   quality patches.  If you would like commit access, please send an email to
   <a href="mailto:sabre@nondot.org">Chris</a> with the following
   information:</p>

<ol>
  <li>The user name you want to commit with, e.g. "hacker".</li>

  <li>The full name and email address you want message to llvm-commits to come
      from, e.g. "J. Random Hacker &lt;hacker@yoyodyne.com&gt;".</li>

  <li>A "password hash" of the password you want to use, e.g. "2ACR96qjUqsyM".  
      Note that you don't ever tell us what your password is, you just give it
      to us in an encrypted form.  To get this, run "htpasswd" (a utility that
      comes with apache) in crypt mode (often enabled with "-d"), or find a web
      page that will do it for you.</li>
</ol>

<p>Once you've been granted commit access, you should be able to check out an
   LLVM tree with an SVN URL of "https://username@llvm.org/..." instead of the
   normal anonymous URL of "http://llvm.org/...".  The first time you commit
   you'll have to type in your password.  Note that you may get a warning from
   SVN about an untrusted key, you can ignore this.  To verify that your commit
   access works, please do a test commit (e.g. change a comment or add a blank
   line).  Your first commit to a repository may require the autogenerated email
   to be approved by a mailing list.  This is normal, and will be done when
   the mailing list owner has time.</p>

<p>If you have recently been granted commit access, these policies apply:</p>

<ol>
  <li>You are granted <i>commit-after-approval</i> to all parts of LLVM.  To get
      approval, submit a <a href="#patches">patch</a> to
      <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits">llvm-commits</a>.
      When approved you may commit it yourself.</li>

  <li>You are allowed to commit patches without approval which you think are
      obvious. This is clearly a subjective decision &mdash; we simply expect
      you to use good judgement.  Examples include: fixing build breakage,
      reverting obviously broken patches, documentation/comment changes, any
      other minor changes.</li>

  <li>You are allowed to commit patches without approval to those portions of
      LLVM that you have contributed or maintain (i.e., have been assigned
      responsibility for), with the proviso that such commits must not break the
      build.  This is a "trust but verify" policy and commits of this nature are
      reviewed after they are committed.</li>

  <li>Multiple violations of these policies or a single egregious violation may
      cause commit access to be revoked.</li>
</ol>

<p>In any case, your changes are still subject to <a href="#reviews">code
   review</a> (either before or after they are committed, depending on the
   nature of the change).  You are encouraged to review other peoples' patches
   as well, but you aren't required to.</p>
</div>

<!-- _______________________________________________________________________ -->
<h3><a name="newwork">Making a Major Change</a></h3>
<div>
<p>When a developer begins a major new project with the aim of contributing it
   back to LLVM, s/he should inform the community with an email to
   the <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev">llvmdev</a>
   email list, to the extent possible. The reason for this is to:

<ol>
  <li>keep the community informed about future changes to LLVM, </li>

  <li>avoid duplication of effort by preventing multiple parties working on the
      same thing and not knowing about it, and</li>

  <li>ensure that any technical issues around the proposed work are discussed
      and resolved before any significant work is done.</li>
</ol>
  
<p>The design of LLVM is carefully controlled to ensure that all the pieces fit
   together well and are as consistent as possible. If you plan to make a major
   change to the way LLVM works or want to add a major new extension, it is a
   good idea to get consensus with the development community before you start
   working on it.</p>
  
<p>Once the design of the new feature is finalized, the work itself should be
   done as a series of <a href="#incremental">incremental changes</a>, not as a
   long-term development branch.</p>
</div>

<!-- _______________________________________________________________________ -->
<h3><a name="incremental">Incremental Development</a></h3>
<div>
<p>In the LLVM project, we do all significant changes as a series of incremental
   patches.  We have a strong dislike for huge changes or long-term development
   branches.  Long-term development branches have a number of drawbacks:</p>

<ol>
  <li>Branches must have mainline merged into them periodically.  If the branch
      development and mainline development occur in the same pieces of code,
      resolving merge conflicts can take a lot of time.</li>

  <li>Other people in the community tend to ignore work on branches.</li>

  <li>Huge changes (produced when a branch is merged back onto mainline) are
      extremely difficult to <a href="#reviews">code review</a>.</li>

  <li>Branches are not routinely tested by our nightly tester
      infrastructure.</li>

  <li>Changes developed as monolithic large changes often don't work until the
      entire set of changes is done.  Breaking it down into a set of smaller
      changes increases the odds that any of the work will be committed to the
      main repository.</li>
</ol>    
  
<p>To address these problems, LLVM uses an incremental development style and we
   require contributors to follow this practice when making a large/invasive
   change.  Some tips:</p>

<ul>
  <li>Large/invasive changes usually have a number of secondary changes that are
      required before the big change can be made (e.g. API cleanup, etc).  These
      sorts of changes can often be done before the major change is done,
      independently of that work.</li>

  <li>The remaining inter-related work should be decomposed into unrelated sets
      of changes if possible.  Once this is done, define the first increment and
      get consensus on what the end goal of the change is.</li>

  <li>Each change in the set can be stand alone (e.g. to fix a bug), or part of
      a planned series of changes that works towards the development goal.</li>
    
  <li>Each change should be kept as small as possible. This simplifies your work
      (into a logical progression), simplifies code review and reduces the
      chance that you will get negative feedback on the change. Small increments
      also facilitate the maintenance of a high quality code base.</li>

  <li>Often, an independent precursor to a big change is to add a new API and
      slowly migrate clients to use the new API.  Each change to use the new API
      is often "obvious" and can be committed without review.  Once the new API
      is in place and used, it is much easier to replace the underlying
      implementation of the API.  This implementation change is logically
      separate from the API change.</li>
</ul>
  
<p>If you are interested in making a large change, and this scares you, please
   make sure to first <a href="#newwork">discuss the change/gather consensus</a>
   then ask about the best way to go about making the change.</p>
</div>

<!-- _______________________________________________________________________ -->
<h3><a name="attribution">Attribution of Changes</a></h3>
<div>
<p>We believe in correct attribution of contributions to their contributors.
   However, we do not want the source code to be littered with random
   attributions "this code written by J. Random Hacker" (this is noisy and
   distracting).  In practice, the revision control system keeps a perfect
   history of who changed what, and the CREDITS.txt file describes higher-level
   contributions.  If you commit a patch for someone else, please say "patch
   contributed by J. Random Hacker!" in the commit message.</p>

<p>Overall, please do not add contributor names to the source code.</p>
</div>

</div>

<!--=========================================================================-->
<h2>
  <a name="clp">Copyright, License, and Patents</a>
</h2>
<!--=========================================================================-->

<div>
<p>This section addresses the issues of copyright, license and patents for the
   LLVM project.  The copyright holder for the code is held by the individual
   contributors of the code and the terms of its license to LLVM users and 
   developers is the
   <a href="http://www.opensource.org/licenses/UoI-NCSA.php">University of 
   Illinois/NCSA Open Source License</a>.</p>

<div class="doc_notes">
<p style="text-align:center;font-weight:bold">NOTE: This section deals with
   legal matters but does not provide legal advice.  We are not lawyers, please
   seek legal counsel from an attorney.</p>
</div>

<!-- _______________________________________________________________________ -->
<h3><a name="copyright">Copyright</a></h3>
<div>

<p>The LLVM project does not require copyright assignments, which means that the
   copyright for the code in the project is held by its respective contributors
   who have each agreed to release their contributed code under the terms of the
   <a href="#license">LLVM License</a>.</p>
   
<p>An implication of this is that the LLVM license is unlikely to ever change:
   changing it would require tracking down all the contributors to LLVM and
   getting them to agree that a license change is acceptable for their
   contribution.  Since there are no plans to change the license, this is not a
   cause for concern.</p>
   
<p>As a contributor to the project, this means that you (or your company) retain
   ownership of the code you contribute, that it cannot be used in a way that
   contradicts the license (which is a liberal BSD-style license), and that the
   license for your contributions won't change without your approval in the
   future.</p>
   
</div>

<!-- _______________________________________________________________________ -->
<h3><a name="license">License</a></h3>
<div>
<p>We intend to keep LLVM perpetually open source and to use a liberal open
   source license. All of the code in LLVM is available under the
   <a href="http://www.opensource.org/licenses/UoI-NCSA.php">University of
   Illinois/NCSA Open Source License</a>, which boils down to this:</p>

<ul>
  <li>You can freely distribute LLVM.</li>
  <li>You must retain the copyright notice if you redistribute LLVM.</li>
  <li>Binaries derived from LLVM must reproduce the copyright notice (e.g. in an
      included readme file).</li>
  <li>You can't use our names to promote your LLVM derived products.</li>
  <li>There's no warranty on LLVM at all.</li>
</ul>
  
<p>We believe this fosters the widest adoption of LLVM because it <b>allows
   commercial products to be derived from LLVM</b> with few restrictions and
   without a requirement for making any derived works also open source (i.e.
   LLVM's license is not a "copyleft" license like the GPL). We suggest that you
   read the <a href="http://www.opensource.org/licenses/UoI-NCSA.php">License</a>
   if further clarification is needed.</p>
   
<p>In addition to the UIUC license, the runtime library components of LLVM
   (<b>compiler_rt and libc++</b>) are also licensed under the <a
   href="http://www.opensource.org/licenses/mit-license.php">MIT license</a>,
   which does not contain the binary redistribution clause.  As a user of these
   runtime libraries, it means that you can choose to use the code under either
   license (and thus don't need the binary redistribution clause), and as a
   contributor to the code that you agree that any contributions to these
   libraries be licensed under both licenses.  We feel that this is important
   for runtime libraries, because they are implicitly linked into applications
   and therefore should not subject those applications to the binary
   redistribution clause. This also means that it is ok to move code from (e.g.)
   libc++ to the LLVM core without concern, but that code cannot be moved from
   the LLVM core to libc++ without the copyright owner's permission.
</p>

<p>Note that the LLVM Project does distribute llvm-gcc, <b>which is GPL.</b>
   This means that anything "linked" into llvm-gcc must itself be compatible
   with the GPL, and must be releasable under the terms of the GPL.  This
   implies that <b>any code linked into llvm-gcc and distributed to others may
   be subject to the viral aspects of the GPL</b> (for example, a proprietary
   code generator linked into llvm-gcc must be made available under the GPL).
   This is not a problem for code already distributed under a more liberal
   license (like the UIUC license), and does not affect code generated by
   llvm-gcc.  It may be a problem if you intend to base commercial development
   on llvm-gcc without redistributing your source code.</p>
  
<p>We have no plans to change the license of LLVM.  If you have questions or
   comments about the license, please contact the
   <a href="mailto:llvmdev@cs.uiuc.edu">LLVM Developer's Mailing List</a>.</p>
</div>

<!-- _______________________________________________________________________ -->
<h3><a name="patents">Patents</a></h3>
<div>
<p>To the best of our knowledge, LLVM does not infringe on any patents (we have
   actually removed code from LLVM in the past that was found to infringe).
   Having code in LLVM that infringes on patents would violate an important goal
   of the project by making it hard or impossible to reuse the code for
   arbitrary purposes (including commercial use).</p>
   
<p>When contributing code, we expect contributors to notify us of any potential
   for patent-related trouble with their changes.  If you or your employer own
   the rights to a patent and would like to contribute code to LLVM that relies
   on it, we require that the copyright owner sign an agreement that allows any
   other user of LLVM to freely use your patent.  Please contact
   the <a href="mailto:llvm-oversight@cs.uiuc.edu">oversight group</a> for more
   details.</p>
</div>

</div>

<!-- *********************************************************************** -->
<hr>
<address>
  <a href="http://jigsaw.w3.org/css-validator/check/referer"><img
  src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="Valid CSS"></a>
  <a href="http://validator.w3.org/check/referer"><img
  src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"></a>
  Written by the 
  <a href="mailto:llvm-oversight@cs.uiuc.edu">LLVM Oversight Group</a><br>
  <a href="http://llvm.org/">The LLVM Compiler Infrastructure</a><br>
  Last modified: $Date: 2011-10-07 13:26:38 -0400 (Fri, 07 Oct 2011) $
</address>
</body>
</html>
