Shift and setcc types default to the pointer type.
[oota-llvm.git] / docs / CFEBuildInstrs.html
index 68541ed2830148278495182d1dfb27eb7f162fc1..86d239659de967d426903a690608e0a36c154bf9 100644 (file)
@@ -66,14 +66,23 @@ located in a top-level directory (like <tt>/cygdrive/c/llvm</tt> and
 (which includes your "home directory", because it lives under the "Documents 
 and Settings" directory).  We welcome patches to fix this issue.
 </p>
-</div>
+<p>It has been found that the GCC 3.3.3 compiler provided with recent Cygwin
+versions is incapable of compiling the LLVM CFE correctly. If your Cygwin
+installation includes GCC 3.3.3 we <i>strongly</i> recommend that you download
+GCC 3.4.3, build it separately, and use it for compiling LLVM CFE. This has been
+shown to work correctly.</p>
+<p>Some versions of Cygwin utilize an experimental version of GNU binutils that
+will cause the GNU <tt>ld</tt> linker to fail an assertion when linking
+components of the libstdc++. It is recommended that you replace the entire
+binutils package with version 2.15 such that "<tt>ld --version</tt>" responds
+with<br/>
+<pre>GNU ld version 2.15</pre>
+not with:<br/>
+<pre>GNU ld version 2.15.91 20040725</pre>
+</p></div>
 
 <!--=========================================================================-->
-<div class="doc_subsection">
-  <a name="aix">Building under AIX</a>
-</div>
-<!--=========================================================================-->
-
+<div class="doc_subsection"><a name="aix">Building under AIX</a></div>
 <div class="doc_text">
 <p>If you are building LLVM and the GCC front-end under AIX, do NOT use GNU
 Binutils.  They are not stable under AIX and may produce incorrect and/or
@@ -90,17 +99,26 @@ invalid code.  Instead, use the system assembler and linker.
 <div class="doc_text">
 <p>
 <ol>
-<li><p>Configure and build the LLVM libraries and tools using:</p>
-<pre>
+<li><p>Configure and build the LLVM libraries and tools. There are two ways to
+do this: either with <i>objdir</i> == <i>srcdir</i> or not. It is recommended 
+that <i>srcdir</i> not be the same as <i>objdir</i>:</p>
+<ul>
+  <li>With <i>objdir</i> != <i>srcdir</i>:<pre>
+ % cd <i>objdir</i>
+ % <i>srcdir</i>/configure --prefix=/some/path/you/can/install/to [options...]
+ % gmake tools-only
+  </pre></li>
+  <li>With <i>objdir</i> == <i>srcdir</i>:<pre>
  % cd llvm
  % ./configure --prefix=/some/path/you/can/install/to [options...]
  % gmake tools-only
-</pre>
-  <p>This will build all of the LLVM tools and libraries. The <tt>--prefix</tt> 
-  option defaults to /usr/local (per configure standards) but unless you are a 
-  system administrator, you probably won't be able to install LLVM there because
-  of permissions. Specify a path into which LLVM can be installed (e.g.
-  <tt>--prefix=/home/user/llvm</tt>).</p>
+  </pre></li>
+</ul>
+<p>This will build all of the LLVM tools and libraries. The <tt>--prefix</tt> 
+option defaults to /usr/local (per configure standards) but unless you are a 
+system administrator, you probably won't be able to install LLVM there because
+of permissions. Specify a path into which LLVM can be installed (e.g.
+<tt>--prefix=/home/user/llvm</tt>).</p>
 </li>
 
 <li><p>Add the directory containing the tools to your PATH.</p>
@@ -131,7 +149,7 @@ invalid code.  Instead, use the system assembler and linker.
 <pre>
  % cd build
  % ../src/configure --prefix=$CFEINSTALL --disable-threads --disable-nls \
-   --disable-shared --enable-languages=c,c++
+   --disable-shared --enable-languages=c,c++ --program-prefix=llvm-
  % gmake all; gmake install
 </pre>
 
@@ -140,7 +158,8 @@ invalid code.  Instead, use the system assembler and linker.
 <pre>
  % cd build
  % ../src/configure --prefix=$CFEINSTALL --disable-threads --disable-nls \
-   --disable-shared --enable-languages=c,c++ --disable-c-mbchar
+   --disable-shared --enable-languages=c,c++ --disable-c-mbchar \
+   --program-prefix=llvm-
  % gmake all; gmake install
 </pre>
 
@@ -158,7 +177,7 @@ functions from C as referenced from C++, so we typically configure with
  % cd build
  % ../src/configure --prefix=$CFEINSTALL --disable-threads --disable-nls \
    --disable-shared --enable-languages=c,c++ --host=sparcv9-sun-solaris2.8 \
-   --disable-c-mbchar
+   --disable-c-mbchar --program-prefix=llvm-
  % gmake all; gmake install
 </pre>
 
@@ -207,17 +226,17 @@ functions from C as referenced from C++, so we typically configure with
  </ul>
 </li>
 
-<li><p>Go back into the LLVM source tree proper.  Rerun configure, using
-the <code>--with-llvmgccdir=$CFEINSTALL</code> option to specify the path
-to the newly built GCC front-end.</p></li>
+<li><p>Put <tt>$CFEINSTALL/bin</tt> into your <tt>PATH</tt> environment
+variable.</p>
+  <ul>
+    <li>sh: <tt>export PATH=$CFEINSTALL/bin:$PATH</tt></li>
+    <li>csh: <tt>setenv PATH $CFEINSTALL/bin:$PATH</tt></li>
+  </ul>
+</li>
 
-<li><p>If you edited header files during the C/C++ front-end build as
-described in "Fix 1" above, you must now copy those header files from
-<code>$CFEINSTALL/<i>target-triplet</i>/sys-include</code> to
-<code>$CFEINSTALL/lib/gcc/<i>target-triplet</i>/3.4-llvm/include</code>.
-(This should be the "include" directory in the same directory as the
-libgcc.a library, which you can find by running
-<code>$CFEINSTALL/bin/gcc --print-libgcc-file-name</code>.)</p></li>
+<li><p>Go back into the LLVM source tree proper.  Rerun configure, using
+the same options as the last time. This will cause the configuration to now find
+the newly built llvm-gcc and llvm-g++ executables. </p></li>
 
 <li><p>Rebuild your CVS tree.  This shouldn't cause the whole thing to be
   rebuilt, but it should build the runtime libraries.  After the tree is
@@ -225,20 +244,19 @@ libgcc.a library, which you can find by running
   These are the commands you need.</p>
 <pre>
  % gmake
- % mkdir $CFEINSTALL/lib
  % gmake -C runtime install-bytecode
 </pre></li>
 
 <li><p>Optionally, build a symbol table for the newly installed runtime 
-libraries. Although this step is optional, you are encouraged to do this as the
-symbol tables will make a significant difference in your link times. Use 
-the <tt>llvm-ranlib</tt> tool to do this, as follows:</p>
+libraries. Although this step is optional, you are strongly encouraged to 
+do this as the symbol tables will make a significant difference in your 
+link times. Use the <tt>llvm-ranlib</tt> tool to do this, as follows:</p>
 <pre>
  % cd $CFEINSTALL/lib
  % llvm-ranlib libiberty.a
  % llvm-ranlib libstdc++.a
  % llvm-ranlib libsupc++.a
- % cd $CFEINSTALL/lib/<i>target-triplet</i>/3.4-llvm
+ % cd $CFEINSTALL/lib/gcc/<i>target-triplet</i>/3.4-llvm
  % llvm-ranlib libgcc.a
  % llvm-ranlib libgcov.a
 </pre>
@@ -246,8 +264,8 @@ the <tt>llvm-ranlib</tt> tool to do this, as follows:</p>
 <li><p>Test the newly-installed C frontend by one or more of the
 following means:</p>
  <ul>
+  <li> running the feature &amp; regression tests via <tt>make check</tt></li>
   <li> compiling and running a "hello, LLVM" program in C and C++.</li>
-  <li> running the regression tests in <tt>llvm/test</tt>
   <li> running the tests found in the <tt>llvm-test</tt> CVS module</li>
  </ul></li>
 </ol>