Compare commits
12 Commits
llvmorg-6.
...
llvmorg-1.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1c962223f4 | ||
|
|
c1dd9b667a | ||
|
|
8e6ae64167 | ||
|
|
762895b3f9 | ||
|
|
6d9c9a176a | ||
|
|
687343547a | ||
|
|
4447fc67ef | ||
|
|
4d9d10c757 | ||
|
|
21c9bf15f5 | ||
|
|
033f60f6d4 | ||
|
|
25b91e4ae0 | ||
|
|
f2fed73d14 |
@@ -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
18
llvm/configure
vendored
@@ -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'`\\"
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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 $< > $@
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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<name></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>
|
||||
|
||||
@@ -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; &A[i] != &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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user