Add some advice
authorChris Lattner <sabre@nondot.org>
Thu, 27 Jul 2006 04:24:14 +0000 (04:24 +0000)
committerChris Lattner <sabre@nondot.org>
Thu, 27 Jul 2006 04:24:14 +0000 (04:24 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29324 91177308-0d34-0410-b5e6-96231b3b80d8

docs/CodingStandards.html

index df6eb90b9bed21f65eea73145bb849fea25775b2..36aced60a01c2ce3921ea924039ccb85ae903ecf 100644 (file)
         </ol></li>
       <li><a href="#micro">The Low Level Issues</a>
         <ol>
-          <li><a href="#hl_assert">Assert Liberally</a></li>
-          <li><a href="#hl_ns_std">Do not use 'using namespace std'</a></li>
-          <li><a href="#hl_preincrement">Prefer Preincrement</a></li>
-          <li><a href="#hl_avoidendl">Avoid <tt>std::endl</tt></a></li>
+          <li><a href="#ll_assert">Assert Liberally</a></li>
+          <li><a href="#ll_ns_std">Do not use 'using namespace std'</a></li>
+          <li><a href="#ll_virtual_anch">Provide a virtual method anchor for clases in headers</a></li>
+          <li><a href="#ll_preincrement">Prefer Preincrement</a></li>
+          <li><a href="#ll_avoidendl">Avoid <tt>std::endl</tt></a></li>
         </ol></li>
     </ol></li>
   <li><a href="#seealso">See Also</a></li>
@@ -489,7 +490,7 @@ class itself... just make them private (or protected), and all is well.</p>
 
 <!-- _______________________________________________________________________ -->
 <div class="doc_subsubsection">
-  <a name="hl_assert">Assert Liberally</a>
+  <a name="ll_assert">Assert Liberally</a>
 </div>
 
 <div class="doc_text">
@@ -537,7 +538,7 @@ assert(isa&lt;PHINode&gt;(Succ-&gt;front()) &amp;&amp; "Only works on PHId BBs!"
 
 <!-- _______________________________________________________________________ -->
 <div class="doc_subsubsection">
-  <a name="hl_ns_std">Do not use 'using namespace std'</a>
+  <a name="ll_ns_std">Do not use 'using namespace std'</a>
 </div>
 
 <div class="doc_text">
@@ -572,7 +573,24 @@ namespace (and its parents), but should not use any others.</p>
 
 <!-- _______________________________________________________________________ -->
 <div class="doc_subsubsection">
-  <a name="hl_preincrement">Prefer Preincrement</a>
+  <a name="ll_virtual_anch">Provide a virtual method anchor for clases in headers</a>
+</div>
+
+<div class="doc_text">
+
+<p>If a class is defined in a header file and has a v-table (either it has 
+virtual methods or it derives from classes with virtual methods), it must 
+always have at least one out-of-line virtual method in the class.  Without 
+this, the compiler will copy the vtable and RTTI into every .o file that
+#includes the header, bloating .o file sizes and increasing link times.
+</p>
+
+</div>
+
+
+<!-- _______________________________________________________________________ -->
+<div class="doc_subsubsection">
+  <a name="ll_preincrement">Prefer Preincrement</a>
 </div>
 
 <div class="doc_text">
@@ -592,7 +610,7 @@ get in the habit of always using preincrement, and you won't have a problem.</p>
 
 <!-- _______________________________________________________________________ -->
 <div class="doc_subsubsection">
-  <a name="hl_avoidendl">Avoid <tt>std::endl</tt></a>
+  <a name="ll_avoidendl">Avoid <tt>std::endl</tt></a>
 </div>
 
 <div class="doc_text">