Fixed a bug in LiveInterval scaling (failure to scale VNI defs correctly), removed...
[oota-llvm.git] / docs / CodingStandards.html
index 9a93278c56a13a0dff23ac79a30d36131e8121c7..b1199778b0f23ebe82da772ed94b02ee45d74cb1 100644 (file)
@@ -3,12 +3,12 @@
 <html>
 <head>
   <link rel="stylesheet" href="llvm.css" type="text/css">
-  <title>A Few Coding Standards</title>
+  <title>LLVM Coding Standards</title>
 </head>
 <body>
 
 <div class="doc_title">
-  A Few Coding Standards
+  LLVM Coding Standards
 </div>
 
 <ol>
@@ -131,12 +131,12 @@ this:</p>
 <div class="doc_code">
 <pre>
 //===-- llvm/Instruction.h - Instruction class definition -------*- C++ -*-===//
-// 
+//
 //                     The LLVM Compiler Infrastructure
 //
 // This file is distributed under the University of Illinois Open Source
 // License. See LICENSE.TXT for details.
-// 
+//
 //===----------------------------------------------------------------------===//
 //
 // This file contains the declaration of the Instruction class, which is the
@@ -238,7 +238,7 @@ order:</p>
   <li>System <tt>#includes</tt></li>
 </ol>
 
-<p>... and each catagory should be sorted by name.</p>
+<p>... and each category should be sorted by name.</p>
 
 <p><a name="mmheader">The "Main Module Header"</a> file applies to .cpp file
 which implement an interface defined by a .h file.  This <tt>#include</tt>
@@ -379,9 +379,8 @@ code, isolate it behind a well defined (and well documented) interface.</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>
+specialization of templates.  If these features are used, they should only be
+an implementation detail of a library which has a simple exposed API.</p>
 
 </div>
 
@@ -526,63 +525,9 @@ library. There are two problems with this:</p>
 example) is allowed normally, it is just <tt>&lt;iostream&gt;</tt> that is
 causing problems.</p>
 
-<div align="center">
-<table>
-  <tbody>
-    <tr>
-      <th>Old Way</th>
-      <th>New Way</th>
-    </tr>
-    <tr>
-      <td align="left"><pre>#include &lt;iostream&gt;</pre></td>
-      <td align="left"><pre>#include "llvm/Support/Streams.h"</pre></td>
-    </tr>
-    <tr>
-      <td align="left"><pre>DEBUG(std::cerr &lt;&lt; ...);
-DEBUG(dump(std::cerr));</pre></td>
-      <td align="left"><pre>DOUT &lt;&lt; ...;
-DEBUG(dump(DOUT));</pre></td>
-    </tr>
-    <tr>
-      <td align="left"><pre>std::cerr &lt;&lt; "Hello world\n";</pre></td>
-      <td align="left"><pre>llvm::cerr &lt;&lt; "Hello world\n";</pre></td>
-    </tr>
-    <tr>
-      <td align="left"><pre>std::cout &lt;&lt; "Hello world\n";</pre></td>
-      <td align="left"><pre>llvm::cout &lt;&lt; "Hello world\n";</pre></td>
-    </tr>
-    <tr>
-      <td align="left"><pre>std::cin &gt;&gt; Var;</pre></td>
-      <td align="left"><pre>llvm::cin &gt;&gt; Var;</pre></td>
-    </tr>
-    <tr>
-      <td align="left"><pre>std::ostream</pre></td>
-      <td align="left"><pre>llvm::OStream</pre></td>
-    </tr>
-    <tr>
-      <td align="left"><pre>std::istream</pre></td>
-      <td align="left"><pre>llvm::IStream</pre></td>
-    </tr>
-    <tr>
-      <td align="left"><pre>std::stringstream</pre></td>
-      <td align="left"><pre>llvm::StringStream</pre></td>
-    </tr>
-    <tr>
-      <td align="left"><pre>void print(std::ostream &amp;Out);
-// ...
-print(std::cerr);</pre></td>
-      <td align="left"><pre>void print(llvm::OStream Out);<sup>1</sup>
-// ...
-print(llvm::cerr);</pre>
-
-</td> </tbody> </table>
-</div>
-
-<div class="doc_text">
-<p><sup>1</sup><tt>llvm::OStream</tt> is a light-weight class so it should never
-be passed by reference. This is important because in some configurations,
-<tt>DOUT</tt> is an rvalue.</p>
-</div>
+<p>The preferred replacement for stream functionality is the
+<tt>llvm::raw_ostream</tt> class (for writing to output streams of various
+sorts) and the <tt>llvm::MemoryBuffer</tt> API (for reading in files).</p>
 
 </div>
 
@@ -645,7 +590,7 @@ code that should not be reached.  These are typically of the form:</p>
 
 <div class="doc_code">
 <pre>
-assert(0 && "Some helpful error message");
+assert(0 &amp;&amp; "Some helpful error message");
 </pre>
 </div>
 
@@ -656,7 +601,7 @@ generating a warning.</p>
 
 <div class="doc_code">
 <pre>
-assert(0 && "Some helpful error message");
+assert(0 &amp;&amp; "Some helpful error message");
 // Not reached
 return 0;
 </pre>
@@ -675,8 +620,8 @@ namespace with an "<tt>std::</tt>" prefix, rather than rely on
 "<tt>using namespace std;</tt>".</p>
 
 <p> In header files, adding a '<tt>using namespace XXX</tt>' directive pollutes
-the namespace of any source file that includes the header.  This is clearly a
-bad thing.</p>
+the namespace of any source file that <tt>#include</tt>s the header.  This is
+clearly a bad thing.</p>
 
 <p>In implementation files (e.g. .cpp files), the rule is more of a stylistic
 rule, but is still important.  Basically, using explicit namespace prefixes
@@ -710,9 +655,9 @@ others.</p>
 <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>
+this, the compiler will copy the vtable and RTTI into every <tt>.o</tt> file
+that <tt>#include</tt>s the header, bloating <tt>.o</tt> file sizes and
+increasing link times.</p>
 
 </div>
 
@@ -793,9 +738,9 @@ something.</p>
 <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>
+  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" alt="Valid HTML 4.01!"></a>
+  src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"></a>
 
   <a href="mailto:sabre@nondot.org">Chris Lattner</a><br>
   <a href="http://llvm.org">LLVM Compiler Infrastructure</a><br>