From 9e2485c1227c426910f87e342022c71fe1a916a3 Mon Sep 17 00:00:00 2001
From: John Criswell
If you are building LLVM and the C front-end under Cygwin, please note that +
If you are building LLVM and the GCC front-end under Cygwin, please note that the LLVM and GCC makefiles do not correctly handle spaces in paths. To deal with this issue, make sure that your LLVM and GCC source and build trees are located in a top-level directory (like /cygdrive/c/llvm and @@ -76,7 +75,7 @@ and Settings" directory). We welcome patches to fix this issue.
If you are building LLVM and the C front-end under AIX, do NOT use GNU +
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 invalid code. Instead, use the system assembler and linker.
@@ -121,7 +120,7 @@ invalid code. Instead, use the system assembler and linker. -Configure, build, and install the C front-end:
+Configure, build, and install the GCC front-end:
Linux/x86:
@@ -176,7 +175,7 @@ functions from C as referenced from C++, so we typically configure with
Fix 1: If you have system header files that include
inline assembly, you may have to modify them to remove the inline
- assembly, and install the modified versions in
+ assembly and install the modified versions in
$CFEINSTALL/lib/gcc/target-triplet/3.4-llvm/include
.
Porting to a new architecture: If you are porting the new front-end - to a new architecture, or compiling in a different configuration that we have - previously, there are probably several changes you will have to make to the GCC - target to get it to work correctly. These include:
+
Porting to a new architecture: If you are porting the front-end + to a new architecture or compiling in a configuration that we have + not tried previously, there are probably several changes you will have to make + to the GCC target to get it to work correctly. These include:
Go back into the LLVM source tree proper. Rerun configure, using
the --with-llvmgccdir=$CFEINSTALL
option to specify the path
-to the newly built C front-end.
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 @@ -228,7 +227,7 @@ libgcc.a library, which you can find by running
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 - built, install the runtime libraries into your C front-end build tree. + built, install the runtime libraries into your GCC front-end build tree. These are the commands you need.
% gmake @@ -255,8 +254,8 @@ the llvm-ranlib tool to do this, as follows: following means:
gmake -C
- test/Programs
If you have the LLVM distribution, you will need to unpack it before you can begin to compile it. LLVM is distributed as a set of two files: the LLVM -suite and the LLVM GCC front end compiled for your platform. Each -file is a TAR archive that is compressed with the gzip program. +suite and the LLVM GCC front end compiled for your platform. There is an +additional test suite that is optional. Each file is a TAR archive that is +compressed with the gzip program.
The files are as follows: @@ -573,7 +599,7 @@ file is a TAR archive that is compressed with the gzip program.
If you are using Solaris/Sparc or MacOS X/PPC, you will need to fix the -header files:
+Next, you will need to fix your system header files:
cd cfrontend/platform
./fixheaders
The one non-intuitive notation for constants is the optional hexidecimal form +
The one non-intuitive notation for constants is the optional hexadecimal form of floating point constants. For example, the form 'double 0x432ff973cafa8000' is equivalent to (but harder to read than) 'double 4.5e+15'. The only time hexadecimal floating point constants are required @@ -834,7 +834,7 @@ assembly and disassembly do not cause any bits to change in the constants.
The addresses of global variables and functions are always implicitly valid (link-time) -constants. These constants explicitly referenced when the identifier for the global is used, and always have identifier for the global is used and always have pointer type. For example, the following is a legal LLVM file:
@@ -964,8 +964,7 @@ indicates which block should be executed after the current block is finished. These terminator instructions typically yield a 'void' value: they produce control flow, not values (the one exception being the 'invoke' instruction). - -There are five different terminator instructions: the 'There are six different terminator instructions: the 'ret' instruction, the 'br'
instruction, the 'switch' instruction,
the 'invoke' instruction, the '
Binary operators are used to do most of the computation in a
program. They require two operands, execute an operation on them, and
-produce a single value. Although, that single value might represent
+produce a single value. The operands might represent
multiple data, as is the case with the packed data type.
The result value of a binary operator is not
necessarily the same type as its operands. Bitwise binary operators are used to do various forms of
bit-twiddling in a program. They are generally very efficient
-instructions, and can commonly be strength reduced from other
+instructions and can commonly be strength reduced from other
instructions. They require two operands, execute an operation on them,
and produce a single value. The resulting value of the bitwise binary
operators is always the same type as its first operand. A key design point of an SSA-based representation is how it
represents memory. In LLVM, no memory locations are in SSA form, which
makes things very simple. This section describes how to read, write,
-allocate and free memory in LLVM.
Access to the memory pointed to by the pointer is not longer defined +
Access to the memory pointed to by the pointer is no longer defined after this instruction executes.
%array = malloc [4 x ubyte] ; yields {[4 x ubyte]*}:array @@ -1671,7 +1670,7 @@ Instruction
The the 'alloca' instruction allocates sizeof(<type>)*NumElements +
The 'alloca' instruction allocates sizeof(<type>)*NumElements bytes of memory on the runtime stack, returning a pointer of the appropriate type to the program. The second form of the instruction is a shorter version of the first that defaults to allocating one element.
@@ -2304,7 +2303,7 @@ href="GarbageCollection.html">Accurate Garbage Collection with LLVM.The 'llvm.gcroot' intrinsic declares the existance of a GC root to +
The 'llvm.gcroot' intrinsic declares the existence of a GC root to the code generator, and allows some metadata to be associated with it.
Currently, there is no way to hook your tests directly into the - llvm/test/Programs testing harness. You will simply + llvm/test testing harness. You will simply need to find a way to use the source provided within that directory on your own. diff --git a/docs/TestingGuide.html b/docs/TestingGuide.html index b08d96c83bc..ca48bd46d24 100644 --- a/docs/TestingGuide.html +++ b/docs/TestingGuide.html @@ -102,7 +102,7 @@ regression tests are in the main "llvm" module under the directory programs in C and C++ is in the llvm-test module. This module should be checked out to the llvm/projects directory. When you configure the llvm module, the llvm-test module -will be automatically configured. Or you can do it manually.
+will be automatically configured. Alternatively, you can configure the llvm-test module manually.To run all of the simple tests in LLVM using DejaGNU, use the master Makefile in the llvm/test directory:
@@ -140,7 +140,7 @@ programs), run the llvm-test tests:The LLVM test suite contains two major categories of tests: code fragments and whole programs. Code fragments are in the llvm module under the directory under the llvm/test directory. The whole programs -test suite are n the llvm-test module under the main directory.
+test suite are in the llvm-test module under the main directory. @@ -251,12 +251,13 @@ location of these external programs is configured by the llvm-testThe LLVM test suite is partially driven by DejaGNU and partially driven by GNU Make. Specifically, the Features and Regression tests -are all driven by DejaGNU. The llvm-test +are all driven by DejaGNU. The llvm-test module is currently driven by a set of Makefiles.
The DejaGNU structure is very simple, but does require some -information to be set. This information is gathered via configure and -is written to a file, site.exp in llvm/test. The llvm/test +information to be set. This information is gathered via configure and +is written to a file, site.exp in llvm/test. The +llvm/test Makefile does this work for you.
In order for DejaGNU to work, each directory of tests must have a @@ -392,7 +393,8 @@ test suite creates temporary files during execution.
tests. By default, it will run all of these tests.To run only the DejaGNU driven tests, run gmake at the -command line in llvm/tests. To run a specific directory of tests, specify the TESTSUITE. +command line in llvm/tests. To run a specific directory of tests, use the +TESTSUITE variable.
For example, to run the Regression tests, type diff --git a/docs/index.html b/docs/index.html index 6a991bda54a..2eabed69472 100644 --- a/docs/index.html +++ b/docs/index.html @@ -55,6 +55,7 @@ some tools. manual for the LLVM command line utilities ("man" pages for LLVM tools).
Current tools: llvm-ar, + llvm-ranlib, llvm-as, llvm-dis, opt, -- 2.34.1