diff --git a/llvm/docs/CodingStandards.html b/llvm/docs/CodingStandards.html
index d469d63..0785448 100644
--- a/llvm/docs/CodingStandards.html
+++ b/llvm/docs/CodingStandards.html
@@ -1,104 +1,125 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><title>A Few Coding Standards</title></head>
-<body bgcolor=white>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+                      "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+  <link rel="stylesheet" href="llvm.css" type="text/css">
+  <title>A Few Coding Standards</title>
+</head>
+<body>
 
-<table width="100%" bgcolor="#330077" border=0 cellpadding=4 cellspacing=0>
-<tr><td>&nbsp; <font size=+5 color="#EEEEFF" face="Georgia,Palatino,Times,Roman"><b>A Few Coding Standards</b></font></td>
-</tr></table>
+<div class="doc_title">
+  A Few Coding Standards
+</div>
 
 <ol>
-  <li><a href="#introduction">Introduction</a>
+  <li><a href="#introduction">Introduction</a></li>
   <li><a href="#mechanicalissues">Mechanical Source Issues</a>
     <ol>
       <li><a href="#sourceformating">Source Code Formatting</a>
-	<ol>
-          <li><a href="#scf_commenting">Commenting</a>
-          <li><a href="#scf_commentformat">Comment Formatting</a>
-          <li><a href="#scf_includes">#include Style</a>
-          <li><a href="#scf_codewidth">Source Code Width</a>
-          <li><a href="#scf_spacestabs">Use Spaces Instead of Tabs</a>
-          <li><a href="#scf_indentation">Indent Code Consistently</a>
-        </ol>
+        <ol>
+          <li><a href="#scf_commenting">Commenting</a></li>
+          <li><a href="#scf_commentformat">Comment Formatting</a></li>
+          <li><a href="#scf_includes">#include Style</a></li>
+          <li><a href="#scf_codewidth">Source Code Width</a></li>
+          <li><a href="#scf_spacestabs">Use Spaces Instead of Tabs</a></li>
+          <li><a href="#scf_indentation">Indent Code Consistently</a></li>
+        </ol></li>
       <li><a href="#compilerissues">Compiler Issues</a>
         <ol>
-          <li><a href="#ci_warningerrors">Treat Compiler Warnings Like Errors</a>
-          <li><a href="#ci_cpp_features">Which C++ features can I use?</a>
-          <li><a href="#ci_portable_code">Write Portable Code</a>
-        </ol>
-    </ol>
+          <li><a href="#ci_warningerrors">Treat Compiler Warnings Like
+              Errors</a></li>
+          <li><a href="#ci_cpp_features">Which C++ features can I use?</a></li>
+          <li><a href="#ci_portable_code">Write Portable Code</a></li>
+        </ol></li>
+    </ol></li>
   <li><a href="#styleissues">Style Issues</a>
     <ol>
       <li><a href="#macro">The High Level Issues</a>
         <ol>
-          <li><a href="#hl_module">A Public Header File <b>is</b> a Module</a>
-          <li><a href="#hl_dontinclude">#include as Little as Possible</a>
-          <li><a href="#hl_privateheaders">Keep "internal" Headers Private</a>
-        </ol>
+          <li><a href="#hl_module">A Public Header File <b>is</b> a
+              Module</a></li>
+          <li><a href="#hl_dontinclude">#include as Little as Possible</a></li>
+          <li><a href="#hl_privateheaders">Keep "internal" Headers
+              Private</a></li>
+        </ol></li>
       <li><a href="#micro">The Low Level Issues</a>
         <ol>
-          <li><a href="#hl_assert">Assert Liberally</a>
-          <li><a href="#hl_preincrement">Prefer Preincrement</a>
-          <li><a href="#hl_avoidendl">Avoid endl</a>
-          <li><a href="#hl_exploitcpp">Exploit C++ to its Fullest</a>
-        </ol>
-      <li><a href="#iterators">Writing Iterators</a>
-    </ol>
-  <li><a href="#seealso">See Also</a>
-</ol><p>
+          <li><a href="#hl_assert">Assert Liberally</a></li>
+          <li><a href="#hl_preincrement">Prefer Preincrement</a></li>
+          <li><a href="#hl_avoidendl">Avoid endl</a></li>
+          <li><a href="#hl_exploitcpp">Exploit C++ to its Fullest</a></li>
+        </ol></li>
+      <li><a href="#iterators">Writing Iterators</a></li>
+    </ol></li>
+  <li><a href="#seealso">See Also</a></li>
+</ol>
 
 
 <!-- *********************************************************************** -->
-</ul><table width="100%" bgcolor="#330077" border=0 cellpadding=4 cellspacing=0><tr><td align=center><font color="#EEEEFF" size=+2 face="Georgia,Palatino"><b>
-<a name="introduction">Introduction
-</b></font></td></tr></table><ul>
+<div class="doc_section">
+  <a name="introduction">Introduction</a>
+</div>
 <!-- *********************************************************************** -->
 
-This document attempts to describe a few coding standards that are being used in
-the LLVM source tree.  Although no coding standards should be regarded as
+<div class="doc_text">
+
+<p>This document attempts to describe a few coding standards that are being used
+in the LLVM source tree.  Although no coding standards should be regarded as
 absolute requirements to be followed in all instances, coding standards can be
-useful.<p>
+useful.</p>
 
-This document intentionally does not prescribe fixed standards for religious
+<p>This document intentionally does not prescribe fixed standards for religious
 issues such as brace placement and space usage.  For issues like this, follow
-the golden rule:
+the golden rule:</p>
 
-<a name="goldenrule">
-<blockquote><b>If you are adding a significant body of source to a project, feel
-free to use whatever style you are most comfortable with.  If you are extending,
-enhancing, or bug fixing already implemented code, use the style that is already
-being used so that the source is uniform and easy to follow.</b></blockquote>
+<blockquote>
 
-The ultimate goal of these guidelines is the increase readability and
+<p><b><a name="goldenrule">If you are adding a significant body of source to a
+project, feel free to use whatever style you are most comfortable with.  If you
+are extending, enhancing, or bug fixing already implemented code, use the style
+that is already being used so that the source is uniform and easy to
+follow.</a></b></p>
+
+</blockquote>
+
+<p>The ultimate goal of these guidelines is the increase readability and
 maintainability of our common source base. If you have suggestions for topics to
-be included, please mail them to <a href="mailto:sabre@nondot.org">Chris</a>.<p>
+be included, please mail them to <a
+href="mailto:sabre@nondot.org">Chris</a>.</p>
 
+</div>
 
 <!-- *********************************************************************** -->
-</ul><table width="100%" bgcolor="#330077" border=0 cellpadding=4 cellspacing=0><tr><td align=center><font color="#EEEEFF" size=+2 face="Georgia,Palatino"><b>
-<a name="mechanicalissues">Mechanical Source Issues
-</b></font></td></tr></table><ul>
+<div class="doc_section">
+  <a name="mechanicalissues">Mechanical Source Issues</a>
+</div>
 <!-- *********************************************************************** -->
 
 <!-- ======================================================================= -->
-</ul><table width="100%" bgcolor="#441188" border=0 cellpadding=4 cellspacing=0><tr><td>&nbsp;</td><td width="100%">&nbsp; <font color="#EEEEFF" face="Georgia,Palatino"><b>
-<a name="sourceformating">Source Code Formatting
-</b></font></td></tr></table><ul>
-
+<div class="doc_subsection">
+  <a name="sourceformating">Source Code Formatting</a>
+</div>
 
 <!-- _______________________________________________________________________ -->
-</ul><a name="scf_commenting"><h4><hr size=0>Commenting</h4><ul>
+<div class="doc_subsubsection">
+  <a name="scf_commenting">Commenting</a>
+</div>
 
-Comments are one critical part of readability and maintainability.  Everyone
+<div class="doc_text">
+
+<p>Comments are one critical part of readability and maintainability.  Everyone
 knows they should comment, so should you.  :)  Although we all should probably
 comment our code more than we do, there are a few very critical places that
-documentation is very useful:<p>
+documentation is very useful:</p>
 
 <ol>
-<h4><li>File Headers</h4>
-Every source file should have a header on it that describes the basic purpose of
-the file.  If a file does not have a header, it should not be checked into CVS.
-Most source trees will probably have a standard file header format.  The
-standard format for the LLVM source tree looks like this:<p>
+<li><h4>File Headers</h4> 
+
+<p>Every source file should have a header on it that
+describes the basic purpose of the file.  If a file does not have a header, it
+should not be checked into CVS.  Most source trees will probably have a standard
+file header format.  The standard format for the LLVM source tree looks like
+this:</p>
 
 <pre>
 //===-- llvm/Instruction.h - Instruction class definition -------*- C++ -*-===//
@@ -109,399 +130,487 @@
 //===----------------------------------------------------------------------===//
 </pre>
 
-A few things to note about this particular format.  The "<tt>-*- C++ -*-</tt>"
-string on the first line is there to tell Emacs that the source file is a C++
-file, not a C file (Emacs assumes .h files are C files by default [Note that tag
-this is not necessary in .cpp files]).  The name of the file is also on the
-first line, along with a very short description of the purpose of the file.
-This is important when printing out code and flipping though lots of pages.<p>
+<p>A few things to note about this particular format.  The "<tt>-*- C++
+-*-</tt>" string on the first line is there to tell Emacs that the source file
+is a C++ file, not a C file (Emacs assumes .h files are C files by default [Note
+that tag this is not necessary in .cpp files]).  The name of the file is also on
+the first line, along with a very short description of the purpose of the file.
+This is important when printing out code and flipping though lots of pages.</p>
 
-The main body of the description does not have to be very long in most cases.
+<p>The main body of the description does not have to be very long in most cases.
 Here it's only two lines.  If an algorithm is being implemented or something
 tricky is going on, a reference to the paper where it is published should be
-included, as well as any notes or "gotchas" in the code to watch out for.<p>
+included, as well as any notes or "gotchas" in the code to watch out for.</p>
 
+</li>
 
-<h4><li>Class overviews</h4>
+<li><h4>Class overviews</h4>
 
-Classes are one fundemental part of a good object oriented design.  As such, a
-class definition should have a comment block that explains what the class is
+<p>Classes are one fundemental part of a good object oriented design.  As such,
+a class definition should have a comment block that explains what the class is
 used for... if it's not obvious.  If it's so completely obvious your grandma
 could figure it out, it's probably safe to leave it out.  Naming classes
-something sane goes a long ways towards avoiding writing documentation.  :)<p>
+something sane goes a long ways towards avoiding writing documentation. :)</p>
 
+</li>
 
-<h4><li>Method information</h4>
+<li><h4>Method information</h4>
 
-Methods defined in a class (as well as any global functions) should also be
+<p>Methods defined in a class (as well as any global functions) should also be
 documented properly.  A quick note about what it does any a description of the
 borderline behaviour is all that is necessary here (unless something
 particularly tricky or insideous is going on).  The hope is that people can
 figure out how to use your interfaces without reading the code itself... that is
-the goal metric.<p>
+the goal metric.</p>
 
-Good things to talk about here are what happens when something unexpected
-happens: does the method return null?  Abort?  Format your hard disk?<p>
+<p>Good things to talk about here are what happens when something unexpected
+happens: does the method return null?  Abort?  Format your hard disk?</p>
+
+</li>
 </ol>
 
+</div>
 
 <!-- _______________________________________________________________________ -->
-</ul><a name="scf_commentformat"><h4><hr size=0>Comment Formatting</h4><ul>
+<div class="doc_subsubsection">
+  <a name="scf_commentformat">Comment Formatting</a>
+</div>
 
-In general, prefer C++ style (<tt>//</tt>) comments.  They take less space,
+<div class="doc_text">
+
+<p>In general, prefer C++ style (<tt>//</tt>) comments.  They take less space,
 require less typing, don't have nesting problems, etc.  There are a few cases
-when it is useful to use C style (<tt>/* */</tt>) comments however:<p>
+when it is useful to use C style (<tt>/* */</tt>) comments however:</p>
 
 <ol>
-<li>When writing a C code: Obviously if you are writing C code, use C style
-comments.  :)
-<li>When writing a header file that may be #included by a C source file.
-<li>When writing a source file that is used by a tool that only accepts C style
-comments.
-</ol><p>
+  <li>When writing a C code: Obviously if you are writing C code, use C style
+      comments.  :)</li>
+  <li>When writing a header file that may be #included by a C source file.</li>
+  <li>When writing a source file that is used by a tool that only accepts C
+      style comments.</li>
+</ol>
 
-To comment out a large block of code, use <tt>#if 0</tt> and <tt>#endif</tt>.
-These nest properly and are better behaved in general than C style comments.<p>
+<p>To comment out a large block of code, use <tt>#if 0</tt> and <tt>#endif</tt>.
+These nest properly and are better behaved in general than C style comments.</p>
+
+</div>
 
 <!-- _______________________________________________________________________ -->
-</ul><a name="scf_includes"><h4><hr size=0>#include Style</h4><ul>
+<div class="doc_subsubsection">
+  <a name="scf_includes">#include Style</a>
+</div>
 
-Immediately after the <a href="#scf_commenting">header file comment</a> (and
+<div class="doc_text">
+
+<p>Immediately after the <a href="#scf_commenting">header file comment</a> (and
 include guards if working on a header file), the <a
 href="hl_dontinclude">minimal</a> list of #includes required by the file should
-be listed.  We prefer these #includes to be listed in this order:<p>
+be listed.  We prefer these #includes to be listed in this order:</p>
 
 <ol>
-<li><a href="#mmheader">Main Module header</a>
-<li><a href="#hl_privateheaders">Local/Private Headers</a>
-<li>llvm/*
-<li>llvm/Analysis/*
-<li>llvm/Assembly/*
-<li>llvm/Bytecode/*
-<li>llvm/CodeGen/*
-<li>...
-<li>Support/*
-<li>Config/*
-<li>System #includes
+  <li><a href="#mmheader">Main Module header</a></li>
+  <li><a href="#hl_privateheaders">Local/Private Headers</a></li>
+  <li>llvm/*</li>
+  <li>llvm/Analysis/*</li>
+  <li>llvm/Assembly/*</li>
+  <li>llvm/Bytecode/*</li>
+  <li>llvm/CodeGen/*</li>
+  <li>...</li>
+  <li>Support/*</li>
+  <li>Config/*</li>
+  <li>System #includes</li>
 </ol>
 
-... and each catagory should be sorted by name.<p>
+<p>... and each catagory should be sorted by name.</p>
 
-<a name="mmheader">The "Main Module Header" file applies to .cpp file which
-implement an interface defined by a .h file.  This #include should always be
-included <b>first</b> regardless of where it lives on the file system.  By
+<p><a name="mmheader">The "Main Module Header"</a> file applies to .cpp file
+which implement an interface defined by a .h file.  This #include should always
+be included <b>first</b> regardless of where it lives on the file system.  By
 including a header file first in the .cpp files that implement the interfaces,
 we ensure that the header does not have any hidden dependencies which are not
 explicitly #included in the header, but should be.  It is also a form of
 documentation in the .cpp file to indicate where the interfaces it implements
-are defined.<p>
+are defined.</p>
 
+</div>
 
 <!-- _______________________________________________________________________ -->
-</ul><a name="scf_codewidth"><h4><hr size=0>Source Code Width</h4><ul>
+<div class="doc_subsubsection">
+  <a name="scf_codewidth">Source Code Width</a>
+</div>
 
-Write your code to fit within 80 columns of text.  This helps those of us who like to print out code and look at your code in an xterm without resizing it.  
+<div class="doc_text">
 
+<p>Write your code to fit within 80 columns of text.  This helps those of us who
+like to print out code and look at your code in an xterm without resizing
+it.</p>
+
+</div>
 
 <!-- _______________________________________________________________________ -->
-</ul><a name="scf_spacestabs"><h4><hr size=0>Use Spaces Instead of Tabs</h4><ul>
+<div class="doc_subsubsection">
+  <a name="scf_spacestabs">Use Spaces Instead of Tabs</a>
+</div>
 
-In all cases, prefer spaces to tabs in source files.  People have different
+<div class="doc_text">
+
+<p>In all cases, prefer spaces to tabs in source files.  People have different
 prefered indentation levels, and different styles of indentation that they
 like... this is fine.  What isn't is that different editors/viewers expand tabs
 out to different tab stops.  This can cause your code to look completely
-unreadable, and it is not worth dealing with.<p>
+unreadable, and it is not worth dealing with.</p>
 
-As always, follow the <a href="#goldenrule">Golden Rule</a> above: follow the
+<p>As always, follow the <a href="#goldenrule">Golden Rule</a> above: follow the
 style of existing code if your are modifying and extending it.  If you like four
 spaces of indentation, <b>DO NOT</b> do that in the middle of a chunk of code
 with two spaces of indentation.  Also, do not reindent a whole source file: it
-makes for incredible diffs that are absolutely worthless.<p>
+makes for incredible diffs that are absolutely worthless.</p>
 
+</div>
 
 <!-- _______________________________________________________________________ -->
-</ul><a name="scf_indentation"><h4><hr size=0>Indent Code Consistently</h4><ul>
+<div class="doc_subsubsection">
+  <a name="scf_indentation">Indent Code Consistently</a>
+</div>
 
-Okay, your first year of programming you were told that indentation is
+<div class="doc_text">
+
+<p>Okay, your first year of programming you were told that indentation is
 important.  If you didn't believe and internalize this then, now is the time.
-Just do it.<p>
+Just do it.</p>
 
-
+</div>
 
 
 <!-- ======================================================================= -->
-</ul><table width="100%" bgcolor="#441188" border=0 cellpadding=4 cellspacing=0><tr><td>&nbsp;</td><td width="100%">&nbsp; <font color="#EEEEFF" face="Georgia,Palatino"><b>
-<a name="compilerissues">Compiler Issues
-</b></font></td></tr></table><ul>
+<div class="doc_subsection">
+  <a name="compilerissues">Compiler Issues</a>
+</div>
 
 
 <!-- _______________________________________________________________________ -->
-</ul><a name="ci_warningerrors"><h4><hr size=0>Treat Compiler Warnings Like Errors</h4><ul>
+<div class="doc_subsubsection">
+  <a name="ci_warningerrors">Treat Compiler Warnings Like Errors</a>
+</div>
 
-If your code has compiler warnings in it, something is wrong: you aren't casting
-values correctly, your have "questionable" constructs in your code, or you are
-doing something legitimately wrong.  Compiler warnings can cover up legitimate
-errors in output and make dealing with a translation unit difficult.<p>
+<div class="doc_text">
 
-It is not possible to prevent all warnings from all compilers, nor is it
+<p>If your code has compiler warnings in it, something is wrong: you aren't
+casting values correctly, your have "questionable" constructs in your code, or
+you are doing something legitimately wrong.  Compiler warnings can cover up
+legitimate errors in output and make dealing with a translation unit
+difficult.</p>
+
+<p>It is not possible to prevent all warnings from all compilers, nor is it
 desirable.  Instead, pick a standard compiler (like <tt>gcc</tt>) that provides
 a good thorough set of warnings, and stick to them.  At least in the case of
 <tt>gcc</tt>, it is possible to work around any spurious errors by changing the
 syntax of the code slightly.  For example, an warning that annoys me occurs when
-I write code like this:<p>
+I write code like this:</p>
 
 <pre>
   if (V = getValue()) {
     ..
   }
-</pre><p>
+</pre>
 
-<tt>gcc</tt> will warn me that I probably want to use the <tt>==</tt> operator,
-and that I probably mistyped it.  In most cases, I haven't, and I really don't
-want the spurious errors.  To fix this particular problem, I rewrite the code
-like this:<p>
+<p><tt>gcc</tt> will warn me that I probably want to use the <tt>==</tt>
+operator, and that I probably mistyped it.  In most cases, I haven't, and I
+really don't want the spurious errors.  To fix this particular problem, I
+rewrite the code like this:</p>
 
 <pre>
   if ((V = getValue())) {
     ..
   }
-</pre><p>
+</pre>
 
-...which shuts <tt>gcc</tt> up.  Any <tt>gcc</tt> warning that annoys you can be
-fixed by massaging the code appropriately.<p>
+<p>...which shuts <tt>gcc</tt> up.  Any <tt>gcc</tt> warning that annoys you can
+be fixed by massaging the code appropriately.</p>
 
-These are the <tt>gcc</tt> warnings that I prefer to enable: <tt>-Wall -Winline
--W -Wwrite-strings -Wno-unused</tt><p>
+<p>These are the <tt>gcc</tt> warnings that I prefer to enable: <tt>-Wall
+-Winline -W -Wwrite-strings -Wno-unused</tt></p>
 
+</div>
 
 <!-- _______________________________________________________________________ -->
-</ul><a name="ci_cpp_features"><h4><hr size=0>Which C++ features can I use?</h4><ul>
+<div class="doc_subsubsection">
+  <a name="ci_cpp_features">Which C++ features can I use?</a>
+</div>
 
-Compilers are finally catching up to the C++ standard.  Most compilers implement
-most features, so you can use just about any features that you would like.  In
-the LLVM source tree, I have chosen to not use these features:<p>
+<div class="doc_text">
+
+<p>Compilers are finally catching up to the C++ standard.  Most compilers
+implement most features, so you can use just about any features that you would
+like.  In the LLVM source tree, I have chosen to not use these features:</p>
 
 <ol>
-<li>Exceptions: Exceptions are very useful for error reporting and handling
+<li><p>Exceptions: Exceptions are very useful for error reporting and handling
 exceptional conditions.  I do not use them in LLVM because they do have an
 associated performance impact (by restricting restructuring of code), and parts
-of LLVM are designed for performance critical purposes.<p>
+of LLVM are designed for performance critical purposes.</p>
 
-Just like most of the rules in this document, this isn't a hard and fast
+<p>Just like most of the rules in this document, this isn't a hard and fast
 requirement.  Exceptions are used in the Parser, because it simplifies error
 reporting <b>significantly</b>, and the LLVM parser is not at all in the
-critical path.<p>
+critical path.</p>
+</li>
 
 <li>RTTI: RTTI has a large cost in terms of executable size, and compilers are
 not yet very good at stomping out "dead" class information blocks.  Because of
-this, typeinfo and dynamic cast are not used.
-</ol><p>
+this, typeinfo and dynamic cast are not used.</li>
+</ol>
 
-Other features, such as templates (without partial specialization) can be used
-freely.  The general goal is to have clear, consise, performant code... if a
-technique assists with that then use it.<p>
+<p>Other features, such as templates (without partial specialization) can be
+used freely.  The general goal is to have clear, consise, performant code... if
+a technique assists with that then use it.</p>
 
+</div>
 
 <!-- _______________________________________________________________________ -->
-</ul><a name="ci_portable_code"><h4><hr size=0>Write Portable Code</h4><ul>
+<div class="doc_subsubsection">
+  <a name="ci_portable_code">Write Portable Code</a>
+</div>
 
-In almost all cases, it is possible and within reason to write completely
+<div class="doc_text">
+
+<p>In almost all cases, it is possible and within reason to write completely
 portable code.  If there are cases where it isn't possible to write portable
-code, isolate it behind a well defined (and well documented) interface.<p>
+code, isolate it behind a well defined (and well documented) interface.</p>
 
-In practice, this means that you shouldn't assume much about the host compiler,
-including its support for "high tech" features like partial specialization of
-templates.  In fact, Visual C++ 6 could be an important target for our work in
-the future, and we don't want to have to rewrite all of our code to support
-it.<p>
+<p>In practice, this means that you shouldn't assume much about the host
+compiler, including its support for "high tech" features like partial
+specialization of templates.  In fact, Visual C++ 6 could be an important target
+for our work in the future, and we don't want to have to rewrite all of our code
+to support it.</p>
 
-
+</div>
 
 <!-- *********************************************************************** -->
-</ul><table width="100%" bgcolor="#330077" border=0 cellpadding=4 cellspacing=0><tr><td align=center><font color="#EEEEFF" size=+2 face="Georgia,Palatino"><b>
-<a name="styleissues">Style Issues
-</b></font></td></tr></table><ul>
+<div class="doc_section">
+  <a name="styleissues">Style Issues</a>
+</div>
 <!-- *********************************************************************** -->
 
 
 <!-- ======================================================================= -->
-</ul><table width="100%" bgcolor="#441188" border=0 cellpadding=4 cellspacing=0><tr><td>&nbsp;</td><td width="100%">&nbsp; <font color="#EEEEFF" face="Georgia,Palatino"><b>
-<a name="macro">The High Level Issues
-</b></font></td></tr></table><ul>
+<div class="doc_subsection">
+  <a name="macro">The High Level Issues</a>
+</div>
 
 
 <!-- _______________________________________________________________________ -->
-</ul><a name="hl_module"><h4><hr size=0>A Public Header File <b>is</b> a Module</h4><ul>
+<div class="doc_subsubsection">
+  <a name="hl_module">A Public Header File <b>is</b> a Module</a>
+</div>
 
-C++ doesn't do too well in the modularity department.  There is no real
+<div class="doc_text">
+
+<p>C++ doesn't do too well in the modularity department.  There is no real
 encapsulation or data hiding (unless you use expensive protocol classes), but it
 is what we have to work with.  When you write a public header file (in the LLVM
 source tree, they live in the top level "include" directory), you are defining a
-module of functionality.<p>
+module of functionality.</p>
 
-Ideally, modules should be completely independent of each other, and their
+<p>Ideally, modules should be completely independent of each other, and their
 header files should only include the absolute minimum number of headers
 possible. A module is not just a class, a function, or a namespace: <a
 href="http://www.cuj.com/articles/2000/0002/0002c/0002c.htm">it's a collection
 of these</a> that defines an interface.  This interface may be several
 functions, classes or data structures, but the important issue is how they work
-together.<p>
+together.</p>
 
-In general, a module should be implemented with one or more <tt>.cpp</tt> files.
-Each of these <tt>.cpp</tt> files should include the header that defines their
-interface first.  This ensure that all of the dependences of the module header
-have been properly added to the module header itself, and are not implicit.
-System headers should be included after user headers for a translation unit.<p>
+<p>In general, a module should be implemented with one or more <tt>.cpp</tt>
+files.  Each of these <tt>.cpp</tt> files should include the header that defines
+their interface first.  This ensure that all of the dependences of the module
+header have been properly added to the module header itself, and are not
+implicit.  System headers should be included after user headers for a
+translation unit.</p>
 
+</div>
 
 <!-- _______________________________________________________________________ -->
-</ul><a name="hl_dontinclude"><h4><hr size=0>#include as Little as Possible</h4><ul>
+<div class="doc_subsubsection">
+  <a name="hl_dontinclude">#include as Little as Possible</a>
+</div>
 
-<tt>#include</tt> hurts compile time performance.  Don't do it unless you have
-to, especially in header files.<p>
+<div class="doc_text">
 
-But wait, sometimes you need to have the definition of a class to use it, or to
-inherit from it.  In these cases go ahead and #include that header file.  Be
+<p><tt>#include</tt> hurts compile time performance.  Don't do it unless you
+have to, especially in header files.</p>
+
+<p>But wait, sometimes you need to have the definition of a class to use it, or
+to inherit from it.  In these cases go ahead and #include that header file.  Be
 aware however that there are many cases where you don't need to have the full
 definition of a class.  If you are using a pointer or reference to a class, you
 don't need the header file.  If you are simply returning a class instance from a
 prototyped function or method, you don't need it.  In fact, for most cases, you
 simply don't need the definition of a class... and not <tt>#include</tt>'ing
-speeds up compilation.<p>
+speeds up compilation.</p>
 
-It is easy to try to go too overboard on this recommendation, however.  You
+<p>It is easy to try to go too overboard on this recommendation, however.  You
 <b>must</b> include all of the header files that you are using, either directly
 or indirectly (through another header file).  To make sure that you don't
 accidently forget to include a header file in your module header, make sure to
 include your module header <b>first</b> in the implementation file (as mentioned
 above).  This way there won't be any hidden dependencies that you'll find out
-about later...<p>
+about later...</p>
 
+</div>
 
 <!-- _______________________________________________________________________ -->
-</ul><a name="hl_privateheaders"><h4><hr size=0>Keep "internal" Headers Private</h4><ul>
+<div class="doc_subsubsection">
+  <a name="hl_privateheaders">Keep "internal" Headers Private</a>
+</div>
 
-Many modules have a complex implementation that causes them to use more than one
-implementation (<tt>.cpp</tt>) file.  It is often tempting to put the internal
-communication interface (helper classes, extra functions, etc) in the public
-module header file.  Don't do this.  :)<p>
+<div class="doc_text">
 
-If you really need to do something like this, put a private header file in the
-same directory as the source files, and include it locally.  This ensures that
-your private interface remains private and undisturbed by outsiders.<p>
+<p>Many modules have a complex implementation that causes them to use more than
+one implementation (<tt>.cpp</tt>) file.  It is often tempting to put the
+internal communication interface (helper classes, extra functions, etc) in the
+public module header file.  Don't do this.  :)</p>
 
-Note however, that it's okay to put extra implementation methods a public class
-itself... just make them private (or protected), and all is well.<p>
+<p>If you really need to do something like this, put a private header file in
+the same directory as the source files, and include it locally.  This ensures
+that your private interface remains private and undisturbed by outsiders.</p>
 
+<p>Note however, that it's okay to put extra implementation methods a public
+class itself... just make them private (or protected), and all is well.</p>
+
+</div>
 
 <!-- ======================================================================= -->
-</ul><table width="100%" bgcolor="#441188" border=0 cellpadding=4 cellspacing=0><tr><td>&nbsp;</td><td width="100%">&nbsp; <font color="#EEEEFF" face="Georgia,Palatino"><b>
-<a name="micro">The Low Level Issues
-</b></font></td></tr></table><ul>
+<div class="doc_text">
+  <a name="micro">The Low Level Issues</a>
+</div>
 
 
 <!-- _______________________________________________________________________ -->
-</ul><a name="hl_assert"><h4><hr size=0>Assert Liberally</h4><ul>
+<div class="doc_subsubsection">
+  <a name="hl_assert">Assert Liberally</a>
+</div>
 
-Use the "<tt>assert</tt>" function to its fullest.  Check all of your
+<div class="doc_text">
+
+<p>Use the "<tt>assert</tt>" function to its fullest.  Check all of your
 preconditions and assumptions, you never know when a bug (not neccesarily even
 yours) might be caught early by an assertion, which reduces debugging time
 dramatically.  The "<tt>&lt;cassert&gt;</tt>" header file is probably already
 included by the header files you are using, so it doesn't cost anything to use
-it.<p>
+it.</p>
 
-To further assist with debugging, make sure to put some kind of error message in
-the assertion statement (which is printed if the assertion is tripped). This
+<p>To further assist with debugging, make sure to put some kind of error message
+in the assertion statement (which is printed if the assertion is tripped). This
 helps the poor debugging make sense of why an assertion is being made and
-enforced, and hopefully what to do about it.  Here is one complete example:<p>
+enforced, and hopefully what to do about it.  Here is one complete example:</p>
 
 <pre>
   inline Value *getOperand(unsigned i) { 
-    assert(i &lt; Operands.size() && "getOperand() out of range!");
+    assert(i &lt; Operands.size() &amp;&amp; "getOperand() out of range!");
     return Operands[i]; 
   }
 </pre>
 
-Here are some examples:
+<p>Here are some examples:</p>
 
 <pre>
-  assert(Ty-&gt;isPointerType() && "Can't allocate a non pointer type!");
+  assert(Ty-&gt;isPointerType() &amp;&amp; "Can't allocate a non pointer type!");
 
-  assert((Opcode == Shl || Opcode == Shr) && "ShiftInst Opcode invalid!");
+  assert((Opcode == Shl || Opcode == Shr) &amp;&amp; "ShiftInst Opcode invalid!");
 
-  assert(idx &lt; getNumSuccessors() && "Successor # out of range!");
+  assert(idx &lt; getNumSuccessors() &amp;&amp; "Successor # out of range!");
 
-  assert(V1.getType() == V2.getType() && "Constant types must be identical!");
+  assert(V1.getType() == V2.getType() &amp;&amp; "Constant types must be identical!");
 
-  assert(isa&lt;PHINode&gt;(Succ-&gt;front()) && "Only works on PHId BBs!");
-</pre><p>
+  assert(isa&lt;PHINode&gt;(Succ-&gt;front()) &amp;&amp; "Only works on PHId BBs!");
+</pre>
 
-You get the idea...<p>
+<p>You get the idea...</p>
+
+</div>
 
 
 <!-- _______________________________________________________________________ -->
-</ul><a name="hl_preincrement"><h4><hr size=0>Prefer Preincrement</h4><ul>
+<div class="doc_subsubsection">
+  <a name="hl_preincrement">Prefer Preincrement</a>
+</div>
 
-Hard fast rule: Preincrement (++X) may be no slower than postincrement (X++) and
-could very well be a lot faster than it.  Use preincrementation whenever
-possible.<p>
+<div class="doc_text">
 
-The semantics of postincrement include making a copy of the value being
+<p>Hard fast rule: Preincrement (++X) may be no slower than postincrement (X++)
+and could very well be a lot faster than it.  Use preincrementation whenever
+possible.</p>
+
+<p>The semantics of postincrement include making a copy of the value being
 incremented, returning it, and then preincrementing the "work value".  For
 primitive types, this isn't a big deal... but for iterators, it can be a huge
 issue (for example, some iterators contains stack and set objects in them...
 copying an iterator could invoke the copy ctor's of these as well).  In general,
-get in the habit of always using preincrement, and you won't have a problem.<p>
+get in the habit of always using preincrement, and you won't have a problem.</p>
+
+</div>
 
 
 <!-- _______________________________________________________________________ -->
-</ul><a name="hl_avoidendl"><h4><hr size=0>Avoid endl</h4><ul>
+<div class="doc_subsubsection">
+  <a name="hl_avoidendl">Avoid endl</a>
+</div>
 
-The <tt>endl</tt> modifier, when used with iostreams outputs a newline to the
+<div class="doc_text">
+
+<p>The <tt>endl</tt> modifier, when used with iostreams outputs a newline to the
 output stream specified.  In addition to doing this, however, it also flushes
-the output stream.  In other words, these are equivalent:<p>
+the output stream.  In other words, these are equivalent:</p>
 
 <pre>
-  cout << endl;
-  cout << "\n" << flush;
+  cout &lt;&lt; endl;
+  cout &lt;&lt; "\n" &lt;&lt; flush;
 </pre>
 
-Most of the time, you probably have no reason to flush the output stream, so it's better to use a literal <tt>"\n"</tt>.<p>
+<p>Most of the time, you probably have no reason to flush the output stream, so
+it's better to use a literal <tt>"\n"</tt>.</p>
 
+</div>
 
 <!-- _______________________________________________________________________ -->
-</ul><a name="hl_exploitcpp"><h4><hr size=0>Exploit C++ to its Fullest</h4><ul>
+<div class="doc_subsubsection">
+  <a name="hl_exploitcpp">Exploit C++ to its Fullest</a>
+</div>
 
-C++ is a powerful language.  With a firm grasp on its capabilities, you can make
+<div class="doc_text">
+
+<p>C++ is a powerful language.  With a firm grasp on its capabilities, you can make
 write effective, consise, readable and maintainable code all at the same time.
 By staying consistent, you reduce the amount of special cases that need to be
 remembered.  Reducing the total number of lines of code you write is a good way
-to avoid documentation, and avoid giving bugs a place to hide.<p>
+to avoid documentation, and avoid giving bugs a place to hide.</p>
 
-For these reasons, come to know and love the contents of your local
+<p>For these reasons, come to know and love the contents of your local
 &lt;algorithm&gt; header file.  Know about &lt;functional&gt; and what it can do
-for you.  C++ is just a tool that wants you to master it. :)<p>
+for you.  C++ is just a tool that wants you to master it. :)</p>
 
-
+</div>
 
 <!-- ======================================================================= -->
-</ul><table width="100%" bgcolor="#441188" border=0 cellpadding=4 cellspacing=0><tr><td>&nbsp;</td><td width="100%">&nbsp; <font color="#EEEEFF" face="Georgia,Palatino"><b>
-<a name="iterators">Writing Iterators
-</b></font></td></tr></table><ul>
+<div class="doc_subsection">
+  <a name="iterators">Writing Iterators</a>
+</div>
 
-Here's a pretty good summary of how to write your own data structure iterators
+<div class="doc_text">
+
+<p>Here's a pretty good summary of how to write your own data structure iterators
 in a way that is compatible with the STL, and with a lot of other code out there
-(slightly edited by Chris):<p>
+(slightly edited by Chris):</p>
 
 <pre>
-From: Ross Smith <ross.s@ihug.co.nz>
+From: Ross Smith &lt;ross.s@ihug.co.nz&gt;
 Newsgroups: comp.lang.c++.moderated
 Subject: Writing iterators (was: Re: Non-template functions that take iterators)
 Date: 28 Jun 2001 12:07:10 -0400
 
 Andre Majorel wrote:
-> Any pointers handy on "writing STL-compatible iterators for
-> dummies ?"
+&gt; Any pointers handy on "writing STL-compatible iterators for
+&gt; dummies ?"
 
 I'll give it a try...
 
@@ -550,7 +659,7 @@
           friend class container;
           public:
             const value_type&amp; operator*() const;
-            const value_type* operator->() const;
+            const value_type* operator-&gt;() const;
             const_iterator&amp; operator++();
             const_iterator operator++(int);
             friend bool operator==(const_iterator lhs,
@@ -585,7 +694,7 @@
     }
 
   const container::value_type*
-    container::const_iterator::operator->() const {
+    container::const_iterator::operator-&gt;() const {
       return &amp;**this;
     }
 
@@ -599,7 +708,7 @@
 might choose the "lazy" approach and only generate the actual value
 when one of the dereferencing operators is called.
 
-The operator->() function is just boilerplate around a call to
+The operator-&gt;() function is just boilerplate around a call to
 operator*().
 
   container::const_iterator&amp;
@@ -663,7 +772,7 @@
           friend class container::const_iterator;
           public:
             value_type&amp; operator*() const;
-            value_type* operator->() const;
+            value_type* operator-&gt;() const;
             iterator&amp; operator++();
             iterator operator++(int);
             friend bool operator==(iterator lhs, iterator rhs);
@@ -678,7 +787,7 @@
             const_iterator();
             const_iterator(const iterator&amp; i);
             const value_type&amp; operator*() const;
-            const value_type* operator->() const;
+            const value_type* operator-&gt;() const;
             const_iterator&amp; operator++();
             const_iterator operator++(int);
             friend bool operator==(const_iterator lhs,
@@ -805,35 +914,44 @@
 Ross Smith &lt;ross.s@ihug.co.nz&gt; The Internet Group, Auckland, New Zealand
 </pre>
 
+</div>
 
 <!-- *********************************************************************** -->
-</ul><table width="100%" bgcolor="#330077" border=0 cellpadding=4 cellspacing=0><tr><td align=center><font color="#EEEEFF" size=+2 face="Georgia,Palatino"><b>
-<a name="seealso">See Also
-</b></font></td></tr></table><ul>
+<div class="doc_section">
+  <a name="seealso">See Also</a>
+</div>
 <!-- *********************************************************************** -->
 
-A lot of these comments and recommendations have been culled for other sources.
-Two particularly important books for our work are:<p>
+<div class="doc_text">
+
+<p>A lot of these comments and recommendations have been culled for other
+sources.  Two particularly important books for our work are:</p>
 
 <ol>
-<li><a href="http://www.aw.com/product/0,2627,0201924889,00.html">Effective C++</a> by Scott Meyers.  There is an online version of the book (only some chapters though) <a href="http://www.awlonline.com/cseng/meyerscddemo/">available as well</a>.
-<li><a href="http://cseng.aw.com/book/0,3828,0201633620,00.html">Large-Scale C++ Software Design</a> by John Lakos
-</ol><p>
 
-If you get some free time, and you haven't read them: do so, you might learn
-something. :)
+<li><a href="http://www.aw.com/product/0,2627,0201924889,00.html">Effective
+C++</a> by Scott Meyers.  There is an online version of the book (only some
+chapters though) <a
+href="http://www.awlonline.com/cseng/meyerscddemo/">available as well</a>.</li>
 
+<li><a href="http://cseng.aw.com/book/0,3828,0201633620,00.html">Large-Scale C++
+Software Design</a> by John Lakos</li>
 
-<!-- *********************************************************************** -->
-</ul>
+</ol>
+
+<p>If you get some free time, and you haven't read them: do so, you might learn
+something. :)</p>
+
+</div>
+
 <!-- *********************************************************************** -->
 
 <hr>
-<font size=-1>
-<address><a href="mailto:sabre@nondot.org">Chris Lattner</a></address>
-<!-- Created: Tue Jan 23 15:19:28 CST 2001 -->
-<!-- hhmts start -->
-Last modified: Sun Oct 12 22:12:43 CDT 2003
-<!-- hhmts end -->
-</font>
-</body></html>
+
+<div class="doc_footer">
+  <address><a href="mailto:sabre@nondot.org">Chris Lattner</a></address>
+  Last modified: $Date$
+</div>
+
+</body>
+</html>
