Compare commits

...

12 Commits

Author SHA1 Message Date
John Criswell
1c962223f4 Add PR#566; something I should have done before.
llvm-svn: 22118
2005-05-18 15:37:06 +00:00
John Criswell
c1dd9b667a Updated for LLVM 1.5.
llvm-svn: 22117
2005-05-18 14:41:07 +00:00
John Criswell
8e6ae64167 Fix name of LLVM CFE source tarball.
llvm-svn: 22110
2005-05-17 21:14:58 +00:00
John Criswell
762895b3f9 Fixed the descriptions of llvmc and llvm-ld to not be version specific.
Fixed some typos.

llvm-svn: 22108
2005-05-17 16:57:10 +00:00
John Criswell
6d9c9a176a Added Linux/Itanium back. Linux/PPC is the platform that we haven't used
yet.

llvm-svn: 22107
2005-05-17 16:19:48 +00:00
John Criswell
687343547a Merged from Mainline.
llvm-svn: 22106
2005-05-17 16:09:30 +00:00
John Criswell
4447fc67ef Merged Misha Modifications from Mainline.
llvm-svn: 22105
2005-05-17 16:08:29 +00:00
John Criswell
4d9d10c757 Updated from mainline.
llvm-svn: 22104
2005-05-17 16:07:32 +00:00
John Criswell
21c9bf15f5 Merged from mainline.
llvm-svn: 22103
2005-05-17 16:07:08 +00:00
John Criswell
033f60f6d4 Removed Linux/Itanium as we don't really know if it works.
Made other minor corrections.

llvm-svn: 22102
2005-05-17 16:05:22 +00:00
John Criswell
25b91e4ae0 Updated the version to 1.5.
llvm-svn: 22095
2005-05-16 19:30:22 +00:00
CVS to SVN Conversion
f2fed73d14 This commit was manufactured by cvs2svn to create branch 'release_15'.
llvm-svn: 22089
2005-05-16 17:13:10 +00:00
9 changed files with 98 additions and 51 deletions

View File

@@ -31,7 +31,7 @@ dnl===
dnl===-----------------------------------------------------------------------===
dnl Initialize autoconf and define the package name, version number and
dnl email address for reporting bugs.
AC_INIT([[llvm]],[[1.5cvs]],[llvmbugs@cs.uiuc.edu])
AC_INIT([[llvm]],[[1.5]],[llvmbugs@cs.uiuc.edu])
dnl Provide a copyright substitution and ensure the copyright notice is included
dnl in the output of --version option of the generated configure script.

18
llvm/configure vendored
View File

@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.59 for llvm 1.5cvs.
# Generated by GNU Autoconf 2.59 for llvm 1.5.
#
# Report bugs to <llvmbugs@cs.uiuc.edu>.
#
@@ -425,8 +425,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
# Identity of this package.
PACKAGE_NAME='llvm'
PACKAGE_TARNAME='-llvm-'
PACKAGE_VERSION='1.5cvs'
PACKAGE_STRING='llvm 1.5cvs'
PACKAGE_VERSION='1.5'
PACKAGE_STRING='llvm 1.5'
PACKAGE_BUGREPORT='llvmbugs@cs.uiuc.edu'
ac_unique_file="lib/VMCore/Module.cpp"
@@ -964,7 +964,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
\`configure' configures llvm 1.5cvs to adapt to many kinds of systems.
\`configure' configures llvm 1.5 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1026,7 +1026,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of llvm 1.5cvs:";;
short | recursive ) echo "Configuration of llvm 1.5:";;
esac
cat <<\_ACEOF
@@ -1172,7 +1172,7 @@ fi
test -n "$ac_init_help" && exit 0
if $ac_init_version; then
cat <<\_ACEOF
llvm configure 1.5cvs
llvm configure 1.5
generated by GNU Autoconf 2.59
Copyright (C) 2003 Free Software Foundation, Inc.
@@ -1188,7 +1188,7 @@ cat >&5 <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by llvm $as_me 1.5cvs, which was
It was created by llvm $as_me 1.5, which was
generated by GNU Autoconf 2.59. Invocation command line was
$ $0 $@
@@ -30698,7 +30698,7 @@ _ASBOX
} >&5
cat >&5 <<_CSEOF
This file was extended by llvm $as_me 1.5cvs, which was
This file was extended by llvm $as_me 1.5, which was
generated by GNU Autoconf 2.59. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -30761,7 +30761,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF
ac_cs_version="\\
llvm config.status 1.5cvs
llvm config.status 1.5
configured by $0, generated by GNU Autoconf 2.59,
with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"

View File

@@ -129,7 +129,7 @@ of permissions. Specify a path into which LLVM can be installed (e.g.
</pre></li>
<li><p>Unpack the C/C++ front-end source into cfrontend/src, either by
untar'ing an llvm-gcc.tar.gz file or checking out CVS into this
untar'ing a cfrontend.source.tar.gz file or checking out CVS into this
directory.</p></li>
<li><p>Make "build" and "install" directories as siblings of the "src" tree:</p>

View File

@@ -30,7 +30,7 @@ html/%.html: %.pod
--podpath=. --noindex --infile=$< --outfile=$@ --title=$*
man/man1/%.1: %.pod
pod2man --release=1.4 --center="LLVM Command Guide" $< $@
pod2man --release=1.5 --center="LLVM Command Guide" $< $@
ps/%.ps: man/man1/%.1
groff -Tps -man $< > $@

View File

@@ -143,9 +143,6 @@ branch stubs for powerpc64-linux (from binutils)</a></li>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="sparc">SPARC</a></div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">Official manuals and docs</div>
<div class="doc_text">
<ul>

View File

@@ -307,9 +307,9 @@ if necessary.</li>
</div>
<p>Note that you will need about 1-3 GB of space for a full LLVM build in Debug
mode, depending on the system (because of all the debug info), and the libraries
appear in more than one of the tools that get linked, so there is some
duplication. If you do not need many of the tools and you are space-conscious,
mode, depending on the system (it is so large because of all the debugging
information and the fact that the libraries are statically linked into multiple
tools). If you do not need many of the tools and you are space-conscious,
you can disable them individually in <tt>llvm/tools/Makefile</tt>. The Release
build requires considerably less space.</p>
@@ -576,9 +576,10 @@ variables.
<dl>
<dt><tt>LLVM_LIB_SEARCH_PATH</tt>=<tt>/path/to/your/bytecode/libs</tt></dt>
<dd>[Optional] This environment variable helps LLVM linking tools find the
locations of your bytecode libraries. It is provided only a
locations of your bytecode libraries. It is provided only as a
convenience since you can specify the paths using the -L options of the
tools and the C/C++ front-end will use the bytecode files installed in its
tools and the C/C++ front-end will automatically use the bytecode files
installed in its
<tt>lib</tt> directory.</dd>
</dl>
@@ -620,7 +621,7 @@ compressed with the gzip program.
<dt><tt>cfrontend-x.y.i386-unknown-freebsd5.1.tar.gz</tt></dt>
<dd>Binary release of the GCC front end for FreeBSD/x86.<br/></dd>
<dt><tt>cfrontend-x.y.powerpc-apple-darwin7.6.0.tar.gz</tt></dt>
<dt><tt>cfrontend-x.y.powerpc-apple-darwin7.8.0.tar.gz</tt></dt>
<dd>Binary release of the GCC front end for MacOS X/PPC.<br/></dd>
</dl>
@@ -788,11 +789,12 @@ script to configure the build system:</p>
<a href="CFEBuildInstrs.html">Bootstrapping the LLVM C/C++ Front-End</a>
for details on building the C/C++ Front End.</dd>
<dt><i>--with-tclinclude</i></dt>
<dd>Path to the tcl include directory under which the <tt>tclsh</tt> can be
<dd>Path to the tcl include directory under which <tt>tclsh</tt> can be
found. Use this if you have multiple tcl installations on your machine and you
want to use a specific one (8.x) for LLVM. LLVM only uses tcl for running the
dejagnu based test suite in <tt>llvm/test</tt>. If you don't specify this
option, the LLVM configure script will search for tcl 8.4 and 8.3 releases.
option, the LLVM configure script will search for the tcl 8.4 and 8.3
releases.
<p></p>
</dd>
<dt><i>--enable-optimized</i></dt>
@@ -817,7 +819,7 @@ script to configure the build system:</p>
native compiler (no cross-compiler targets available). The "native" target is
selected as the target of the build host. You can also specify a comma
separated list of target names that you want available in llc. The target
names use all lower case. The current set is of targets is: <br/>
names use all lower case. The current set of targets is: <br/>
<tt>alpha, ia64, powerpc, skeleton, sparc, x86</tt>.
<p></p></dd>
<dt><i>--enable-doxygen</i></dt>
@@ -1148,7 +1150,7 @@ different <a href="#tools">tools</a>.</p>
<dd> This directory contains files that describe various target architectures
for code generation. For example, the <tt>llvm/lib/Target/SparcV9</tt>
directory holds the Sparc machine description while
<tt>llvm/lib/Target/CBackend</tt> implements the LLVM-to-C converter</dd>
<tt>llvm/lib/Target/CBackend</tt> implements the LLVM-to-C converter.</dd>
<dt><tt><b>llvm/lib/CodeGen/</b></tt></dt>
<dd> This directory contains the major parts of the code generator: Instruction
@@ -1251,8 +1253,8 @@ information is in the <a href="CommandGuide/index.html">Command Guide</a>.</p>
all from one command line. <tt>llvmc</tt> also takes care of processing the
dependent libraries found in bytecode. This reduces the need to get the
traditional <tt>-l&lt;name&gt;</tt> options right on the command line. Please
note that this tool is new in 1.4 and considered experimental. It will be
fully supported in 1.5.</dd>
note that this tool, while functional, is still experimental and not feature
complete.</dd>
<dt><tt><b>llvm-ar</b></tt></dt>
<dd>The archiver produces an archive containing
@@ -1271,9 +1273,8 @@ information is in the <a href="CommandGuide/index.html">Command Guide</a>.</p>
<dd><tt>llvm-ld</tt> is very similar to gccld and provides a general purpose
and extensible linker for LLVM. This is the linker invoked by <tt>llvmc</tt>.
It allows optimization modules to be loaded so that language specific
optimizations can be applied at link time. Please note that this tool is new
in LLVM 1.4 and still considered experimental. It will be fully supported in
LLVM 1.5.</dd>
optimizations can be applied at link time. This tool is considered
experimental.</dd>
<dt><tt><b>llvm-link</b></tt></dt>
<dd><tt>llvm-link</tt>, not surprisingly, links multiple LLVM modules into
@@ -1291,7 +1292,7 @@ information is in the <a href="CommandGuide/index.html">Command Guide</a>.</p>
<dt><tt><b>llc</b></tt></dt>
<dd> <tt>llc</tt> is the LLVM backend compiler, which
translates LLVM bytecode to a SPARC or x86 assembly file, or to C code (with
translates LLVM bytecode to a native code assembly file or to C code (with
the -march=c option).</dd>
<dt><tt><b>llvm-gcc</b></tt></dt>
@@ -1299,8 +1300,7 @@ information is in the <a href="CommandGuide/index.html">Command Guide</a>.</p>
that has been retargeted to emit LLVM code as the machine code output. It
works just like any other GCC compiler, taking the typical <tt>-c, -S, -E,
-o</tt> options that are typically used. The source code for the
<tt>llvm-gcc</tt> tool is currently not included in the LLVM CVS tree
because it is quite large and not very interesting.
<tt>llvm-gcc</tt> tool is available as a separate CVS module.
<blockquote>
<dl>
<dt><tt><b>gccas</b></tt></dt>

View File

@@ -148,7 +148,7 @@ than the caller, etc. The only case not supported are varargs calls, but that
could be added if desired.
</p>
<p>In order for a front-end to get a guaranteed tail call, it must mark
<p>To ensure a call is interpreted as a tail call, a front-end must mark
functions as "fastcc", mark calls with the 'tail' marker, and follow the call
with a return of the called value (or void). The optimizer and code generator
attempt to handle more general cases, but the simple case will always work if
@@ -217,7 +217,7 @@ multiple of 8 bytes in size.
hitting swap during optimized builds</a>.</li>
<li>The <a href="http://llvm.cs.uiuc.edu/ProjectsWithLLVM/#llvmtv">LLVM
Transformation Visualizer</a> (llvm-tv) project has been updated to
work with LLVM CVS.</li>
work with LLVM 1.5.</li>
<li>Nightly tester output is now archived on the <a
href="http://mail.cs.uiuc.edu/pipermail/llvm-testresults/">
llvm-testresults</a> mailing list.</li>
@@ -243,7 +243,7 @@ only accessed in main to SSA registers.</li>
<li>Loops with trip counts based on array pointer comparisons (e.g. "<tt>for (i
= 0; &amp;A[i] != &amp;A[n]; ++i) ...</tt>") are optimized better than before,
which primarily helps iterator-intensive C++ codes.</li>
which primarily helps iterator-intensive C++ code.</li>
<li>The optimizer now eliminates simple cases where redundant conditions exist
between neighboring blocks.</li>
@@ -353,8 +353,8 @@ things), is more aggressive and intelligent.</li>
<p>LLVM is known to work on the following platforms:</p>
<ul>
<li>Intel and AMD machines running Red Hat Linux and FreeBSD (and probably
other unix-like systems).</li>
<li>Intel and AMD machines running Red Hat Linux, Fedora Core and FreeBSD
(and probably other unix-like systems).</li>
<li>Sun UltraSPARC workstations running Solaris 8.</li>
<li>Intel and AMD machines running on Win32 with the Cygwin libraries (limited
support is available for native builds with Visual C++).</li>
@@ -694,7 +694,7 @@ frontends.</li>
<div class="doc_text">
<ul>
<li>None yet</li>
<li><a href="http://llvm.cs.uiuc.edu/PR566">Memory Mapped I/O Intrinsics do not fence memory</a></li>
</ul>
</div>

View File

@@ -109,15 +109,16 @@ described the instruction set with the assembly printer generator in mind, that
step can be almost automated.</li>
</ul>
<p>Now, for static code generation you also need to write an instruction
selector for your platform: see <tt>lib/Target/*/*ISelSimple.cpp</tt> which
is no longer "simple" but it gives you the idea: you have to be able to create
MachineInstrs for any given LLVM instruction using the <tt>InstVisitor</tt>
pattern, and produce a <tt>MachineFunction</tt> with
<tt>MachineBasicBlock</tt>s full of <tt><a
href="CodeGenerator.html#machineinstr">MachineInstr</a></tt>s for a
corresponding LLVM Function. Creating an instruction selector is perhaps the
most time-consuming part of creating a back-end.</p>
<p>You also need to write an instruction selector for your platform. The
recommended method is the <a
href="CodeGenerator.html#instselect">pattern-matching instruction selector</a>,
examples of which you can see in other targets:
<tt>lib/Target/*/*ISelPattern.cpp</tt>. The former method for writing
instruction selectors (<b>not</b> recommended for new targets) is evident in
<tt>lib/Target/*/*ISelSimple.cpp</tt>, which are <tt>InstVisitor</tt>-based
translators, generating code for an LLVM instruction at a time. Creating an
instruction selector is perhaps the most time-consuming part of creating a
back-end.</p>
<p>To create a JIT for your platform:</p>
@@ -229,10 +230,13 @@ how the C backend is written.</p>
<ul>
<li><a href="CodeGenerator.html">Code generator</a> -
describes some of the classes in code generation at a high level, but
it is not (yet) complete.</li>
it is not (yet) complete</li>
<li><a href="TableGenFundamentals.html">TableGen fundamentals</a> -
describes how to use TableGen to describe your target information succinctly
</li>
describes how to use TableGen to describe your target information
succinctly</li>
<li><a href="HowToSubmitABug.html#codegen">Debugging code generation with
bugpoint</a> - shows bugpoint usage scenarios to simplify backend
development</li>
</ul>
</div>

View File

@@ -0,0 +1,46 @@
; This example was not getting level raised because of a negative index from
; this instruction:
; %reg111 = add int %reg110, -12
; this testcase is distilled from this C source:
; void foo(int j, int *x) {
; unsigned i;
; for (i = 12; i < 14; ++i)
; x[j*i-12] = j;
; }
; RUN: llvm-as < %s | opt -raise | llvm-dis | grep ' cast ' | not grep '*'
implementation
void "foo"(int %j, int * %x)
begin
bb0: ;[#uses=0]
br label %bb1
bb1: ;[#uses=2]
%reg108 = cast int * %x to sbyte * ; <sbyte *> [#uses=1]
%cond219 = setgt ulong 12, 13 ; <bool> [#uses=1]
br bool %cond219, label %bb3, label %bb2
bb2: ;[#uses=3]
%cann-indvar = phi uint [ 0, %bb1 ], [ %add1-indvar, %bb2 ] ; <uint> [#uses=2]
%reg117 = add uint %cann-indvar, 12 ; <uint> [#uses=2]
%add1-indvar = add uint %cann-indvar, 1 ; <uint> [#uses=1]
%cast224 = cast uint %reg117 to uint ; <uint> [#uses=1]
%cast225 = cast uint %reg117 to int ; <int> [#uses=1]
%reg110 = mul int %j, %cast225 ; <int> [#uses=1]
%reg111 = add int %reg110, -12 ; <int> [#uses=1]
%cast222 = cast int %reg111 to uint ; <uint> [#uses=1]
%reg113 = shl uint %cast222, ubyte 2 ; <uint> [#uses=1]
%cast114 = cast uint %reg113 to ulong ; <ulong> [#uses=1]
%cast115 = cast ulong %cast114 to sbyte * ; <sbyte *> [#uses=1]
%reg116 = add sbyte * %reg108, %cast115 ; <sbyte *> [#uses=1]
%cast223 = cast sbyte * %reg116 to int * ; <int *> [#uses=1]
store int %j, int * %cast223
%reg118 = add uint %cast224, 1 ; <uint> [#uses=1]
%cond220 = setle uint %reg118, 13 ; <bool> [#uses=1]
br bool %cond220, label %bb2, label %bb3
bb3: ;[#uses=2]
ret void
end