Avoid creating a redundant zero APInt.
[oota-llvm.git] / docs / Stacker.html
index 51446edfca824a9b8c951be729abf9aea4df32ea..81b623efa9a15eca20c51a6d4b78b7f755147b7c 100644 (file)
@@ -219,8 +219,8 @@ should be constructed. In general, here's what I learned:
 </ol>
 <p>The foregoing is such an important principal, its worth making an idiom:</p>
 <pre>
-BasicBlock* bb = new BasicBlock();
-bb->getInstList().push_back( new Branch( ... ) );
+BasicBlock* bb = BasicBlock::Create();
+bb->getInstList().push_back( BranchInst::Create( ... ) );
 new Instruction(..., bb->getTerminator() );
 </pre>
 <p>To make this clear, consider the typical if-then-else statement
@@ -232,16 +232,16 @@ BasicBlock*
 MyCompiler::handle_if( BasicBlock* bb, ICmpInst* condition )
 {
     // Create the blocks to contain code in the structure of if/then/else
-    BasicBlock* then_bb = new BasicBlock(); 
-    BasicBlock* else_bb = new BasicBlock();
-    BasicBlock* exit_bb = new BasicBlock();
+    BasicBlock* then_bb = BasicBlock::Create(); 
+    BasicBlock* else_bb = BasicBlock::Create();
+    BasicBlock* exit_bb = BasicBlock::Create();
 
     // Insert the branch instruction for the "if"
-    bb->getInstList().push_back( new BranchInst( then_bb, else_bb, condition ) );
+    bb->getInstList().push_back( BranchInst::Create( then_bb, else_bb, condition ) );
 
     // Set up the terminating instructions
-    then->getInstList().push_back( new BranchInst( exit_bb ) );
-    else->getInstList().push_back( new BranchInst( exit_bb ) );
+    then->getInstList().push_back( BranchInst::Create( exit_bb ) );
+    else->getInstList().push_back( BranchInst::Create( exit_bb ) );
 
     // Fill in the then part .. details excised for brevity
     this->fill_in( then_bb );
@@ -310,7 +310,7 @@ things, this leads to the idiom:
 std::vector&lt;Value*&gt; index_vector;
 index_vector.push_back( ConstantInt::get( Type::LongTy, 0 );
 // ... push other indices ...
-GetElementPtrInst* gep = new GetElementPtrInst( ptr, index_vector );
+GetElementPtrInst* gep = GetElementPtrInst::Create( ptr, index_vector );
 </pre>
 <p>For example, suppose we have a global variable whose type is [24 x int]. The
 variable itself represents a <em>pointer</em> to that array. To subscript the
@@ -1296,13 +1296,26 @@ remainder of the story.
 </div>
 <!-- ======================================================================= -->
 <div class="doc_subsection"> <a name="directory">Directory Structure</a></div>
+
 <div class="doc_text">
 <p>The source code, test programs, and sample programs can all be found
-under the LLVM "projects" directory. You will need to obtain the LLVM sources
-to find it (either via anonymous CVS or a tarball. See the 
-<a href="GettingStarted.html">Getting Started</a> document).</p>
-<p>Under the "projects" directory there is a directory named "Stacker". That
-directory contains everything, as follows:</p>
+in the LLVM repository named <tt>llvm-stacker</tt> This should be checked out to
+the <tt>projects</tt> directory so that it will auto-configure. To do that, make
+sure you have the llvm sources in <tt><i>llvm</i></tt> 
+(see <a href="GettingStarted.html">Getting Started</a>) and then use these 
+commands:</p>
+
+<div class="doc_code">
+<pre>
+% svn co http://llvm.org/svn/llvm-project/llvm-top/trunk llvm-top
+% cd llvm-top
+% make build MODULE=stacker
+</pre>
+</div>
+
+<p>Under the <tt>projects/llvm-stacker</tt> directory you will find the
+implementation of the Stacker compiler, as follows:</p>
+
 <ul>
     <li><em>lib</em> - contains most of the source code
     <ul>
@@ -1317,35 +1330,38 @@ directory contains everything, as follows:</p>
     <li><em>sample</em> - contains the sample programs</li>
 </ul>
 </div>
+
 <!-- ======================================================================= -->
 <div class="doc_subsection"><a name="lexer"></a>The Lexer</div>
+
 <div class="doc_text">
-<p>See projects/Stacker/lib/compiler/Lexer.l</p>
+<p>See projects/llvm-stacker/lib/compiler/Lexer.l</p>
 </div>
+
 <!-- ======================================================================= -->
 <div class="doc_subsection"><a name="parser"></a>The Parser</div>
 <div class="doc_text">
-<p>See projects/Stacker/lib/compiler/StackerParser.y</p>
+<p>See projects/llvm-stacker/lib/compiler/StackerParser.y</p>
 </div>
 <!-- ======================================================================= -->
 <div class="doc_subsection"><a name="compiler"></a>The Compiler</div>
 <div class="doc_text">
-<p>See projects/Stacker/lib/compiler/StackerCompiler.cpp</p>
+<p>See projects/llvm-stacker/lib/compiler/StackerCompiler.cpp</p>
 </div>
 <!-- ======================================================================= -->
 <div class="doc_subsection"><a name="runtime"></a>The Runtime</div>
 <div class="doc_text">
-<p>See projects/Stacker/lib/runtime/stacker_rt.c</p>
+<p>See projects/llvm-stacker/lib/runtime/stacker_rt.c</p>
 </div>
 <!-- ======================================================================= -->
 <div class="doc_subsection"><a name="driver"></a>Compiler Driver</div>
 <div class="doc_text">
-<p>See projects/Stacker/tools/stkrc/stkrc.cpp</p>
+<p>See projects/llvm-stacker/tools/stkrc/stkrc.cpp</p>
 </div>
 <!-- ======================================================================= -->
 <div class="doc_subsection"><a name="tests"></a>Test Programs</div>
 <div class="doc_text">
-<p>See projects/Stacker/test/*.st</p>
+<p>See projects/llvm-stacker/test/*.st</p>
 </div>
 <!-- ======================================================================= -->
 <div class="doc_subsection"> <a name="exercise">Exercise</a></div>