Compare commits
14 Commits
main
...
release/1.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4e82754ea5 | ||
|
|
f3d5e9e2f9 | ||
|
|
d04dd7889f | ||
|
|
374f8b2450 | ||
|
|
00c8c0cee9 | ||
|
|
a3752fc325 | ||
|
|
783e14671d | ||
|
|
83a706d5d0 | ||
|
|
efc05037b9 | ||
|
|
499ce81777 | ||
|
|
a7d4bc14de | ||
|
|
50e7b7772c | ||
|
|
edf8d69a6e | ||
|
|
f6f34fb818 |
@ -13,7 +13,7 @@ Developed by:
|
||||
|
||||
University of Illinois at Urbana-Champaign
|
||||
|
||||
http://llvm.cs.uiuc.edu
|
||||
http://llvm.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal with
|
||||
|
||||
@ -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.7cvs]],[llvmbugs@cs.uiuc.edu])
|
||||
AC_INIT([[llvm]],[[1.7]],[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.7cvs.
|
||||
# Generated by GNU Autoconf 2.59 for llvm 1.7.
|
||||
#
|
||||
# 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.7cvs'
|
||||
PACKAGE_STRING='llvm 1.7cvs'
|
||||
PACKAGE_VERSION='1.7'
|
||||
PACKAGE_STRING='llvm 1.7'
|
||||
PACKAGE_BUGREPORT='llvmbugs@cs.uiuc.edu'
|
||||
|
||||
ac_unique_file="lib/VMCore/Module.cpp"
|
||||
@ -965,7 +965,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.7cvs to adapt to many kinds of systems.
|
||||
\`configure' configures llvm 1.7 to adapt to many kinds of systems.
|
||||
|
||||
Usage: $0 [OPTION]... [VAR=VALUE]...
|
||||
|
||||
@ -1027,7 +1027,7 @@ fi
|
||||
|
||||
if test -n "$ac_init_help"; then
|
||||
case $ac_init_help in
|
||||
short | recursive ) echo "Configuration of llvm 1.7cvs:";;
|
||||
short | recursive ) echo "Configuration of llvm 1.7:";;
|
||||
esac
|
||||
cat <<\_ACEOF
|
||||
|
||||
@ -1176,7 +1176,7 @@ fi
|
||||
test -n "$ac_init_help" && exit 0
|
||||
if $ac_init_version; then
|
||||
cat <<\_ACEOF
|
||||
llvm configure 1.7cvs
|
||||
llvm configure 1.7
|
||||
generated by GNU Autoconf 2.59
|
||||
|
||||
Copyright (C) 2003 Free Software Foundation, Inc.
|
||||
@ -1192,7 +1192,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.7cvs, which was
|
||||
It was created by llvm $as_me 1.7, which was
|
||||
generated by GNU Autoconf 2.59. Invocation command line was
|
||||
|
||||
$ $0 $@
|
||||
@ -31240,7 +31240,7 @@ _ASBOX
|
||||
} >&5
|
||||
cat >&5 <<_CSEOF
|
||||
|
||||
This file was extended by llvm $as_me 1.7cvs, which was
|
||||
This file was extended by llvm $as_me 1.7, which was
|
||||
generated by GNU Autoconf 2.59. Invocation command line was
|
||||
|
||||
CONFIG_FILES = $CONFIG_FILES
|
||||
@ -31303,7 +31303,7 @@ _ACEOF
|
||||
|
||||
cat >>$CONFIG_STATUS <<_ACEOF
|
||||
ac_cs_version="\\
|
||||
llvm config.status 1.7cvs
|
||||
llvm config.status 1.7
|
||||
configured by $0, generated by GNU Autoconf 2.59,
|
||||
with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
|
||||
|
||||
|
||||
@ -742,7 +742,7 @@ describes the latest version, 1.3):</p>
|
||||
<li>#2: LLVM 1.2.5 (not released)</li>
|
||||
<li>#3: LLVM 1.3</li>
|
||||
<li>#4: LLVM 1.3.x (not released)</li>
|
||||
<li>#5: LLVM 1.4, 1.5, 1.6</li>
|
||||
<li>#5: LLVM 1.4 and newer</li>
|
||||
</li>
|
||||
</ul>
|
||||
<p>Note that we plan to eventually expand the target description
|
||||
|
||||
@ -231,6 +231,12 @@ software you will need.</p>
|
||||
<td>PowerPC</td>
|
||||
<td>GCC</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>MacOS X<sup><a href="#pf_2">2</a></sup></td>
|
||||
<td>x86</td>
|
||||
<td>GCC</td>
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Cygwin/Win32</td>
|
||||
<td>x86<sup><a href="#pf_1">1</a></sup></td>
|
||||
@ -617,18 +623,18 @@ compressed with the gzip program.
|
||||
<dt><tt>cfrontend-x.y.source.tar.gz</tt></dt>
|
||||
<dd>Source release of the GCC front end.<br/></dd>
|
||||
|
||||
<dt><tt>cfrontend-x.y.sparc-sun-solaris2.8.tar.gz</tt></dt>
|
||||
<dd>Binary release of the GCC front end for Solaris/Sparc.
|
||||
<br/></dd>
|
||||
|
||||
<dt><tt>cfrontend-x.y.i686-redhat-linux-gnu.tar.gz</tt></dt>
|
||||
<dd>Binary release of the GCC front end for Linux/x86.<br/></dd>
|
||||
|
||||
<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>llvm-gcc4-x.y.source.tar.gz</tt></dt>
|
||||
<dd>Source release of the llvm-gcc4 front end. See README.LLVM in the root
|
||||
directory for build instructions.<br/></dd>
|
||||
|
||||
<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>
|
||||
<dt><tt>llvm-gcc4-x.y.powerpc-apple-darwin8.6.0.tar.gz</tt></dt>
|
||||
<dd>Binary release of the llvm-gcc4 front end for MacOS X/PowerPC.<br/></dd>
|
||||
|
||||
<dt><tt>llvm-gcc4-x.y.i686-apple-darwin8.6.1.tar.gz</tt></dt>
|
||||
<dd>Binary release of the llvm-gcc4 front end for MacOS X/X86.<br/></dd>
|
||||
</dl>
|
||||
|
||||
</div>
|
||||
@ -661,6 +667,7 @@ revision), you can specify a label. The following releases have the following
|
||||
labels:</p>
|
||||
|
||||
<ul>
|
||||
<li>Release 1.7: <b>RELEASE_17</b></li>
|
||||
<li>Release 1.6: <b>RELEASE_16</b></li>
|
||||
<li>Release 1.5: <b>RELEASE_15</b></li>
|
||||
<li>Release 1.4: <b>RELEASE_14</b></li>
|
||||
@ -680,8 +687,7 @@ you get it from the CVS repository:</p>
|
||||
configured by the LLVM configure script as well as automatically updated when
|
||||
you run <tt>cvs update</tt>.</p>
|
||||
|
||||
<p>If you would like to get the GCC front end source code, you can also get it
|
||||
from the CVS repository:</p>
|
||||
<p>If you would like to get the GCC 3.4 front end source code, you can also get it from the CVS repository:</p>
|
||||
|
||||
<pre>
|
||||
cvs -z3 -d :pserver:anon@llvm-cvs.cs.uiuc.edu:/var/cvs/llvm co llvm-gcc
|
||||
@ -692,22 +698,6 @@ instructions</a> to successfully build the LLVM GCC front-end.</p>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- ======================================================================= -->
|
||||
<div class="doc_subsubsection">
|
||||
<a name="mirrors">LLVM CVS Mirrors</a>
|
||||
</div>
|
||||
|
||||
<div class="doc_text">
|
||||
|
||||
<p>If the main CVS server is overloaded or inaccessible, you can try one of
|
||||
these user-hosted mirrors:</p>
|
||||
|
||||
<ul>
|
||||
<li><a href="http://llvm.x10sys.com/">Mirror hosted by eXtensible Systems
|
||||
Inc.</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<!-- ======================================================================= -->
|
||||
<div class="doc_subsection">
|
||||
<a name="installcf">Install the GCC Front End</a>
|
||||
|
||||
@ -99,7 +99,7 @@
|
||||
<li><tt>cd llvm</tt></li>
|
||||
</ol></li>
|
||||
|
||||
<li>With anonymous CVS access (or use a <a href="#mirror">mirror</a>):
|
||||
<li>With anonymous CVS access:
|
||||
<ol>
|
||||
<li><tt>cd <i>where-you-want-llvm-to-live</i></tt></li>
|
||||
<li><tt>cvs -d
|
||||
|
||||
@ -96,9 +96,6 @@
|
||||
<li><a href="#i_extractelement">'<tt>extractelement</tt>' Instruction</a></li>
|
||||
<li><a href="#i_insertelement">'<tt>insertelement</tt>' Instruction</a></li>
|
||||
<li><a href="#i_shufflevector">'<tt>shufflevector</tt>' Instruction</a></li>
|
||||
<li><a href="#i_vsetint">'<tt>vsetint</tt>' Instruction</a></li>
|
||||
<li><a href="#i_vsetfp">'<tt>vsetfp</tt>' Instruction</a></li>
|
||||
<li><a href="#i_vselect">'<tt>vselect</tt>' Instruction</a></li>
|
||||
</ol>
|
||||
</li>
|
||||
<li><a href="#memoryops">Memory Access Operations</a>
|
||||
@ -2060,194 +2057,6 @@ operand may be undef if performing a shuffle from only one vector.
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- _______________________________________________________________________ -->
|
||||
<div class="doc_subsubsection"> <a name="i_vsetint">'<tt>vsetint</tt>'
|
||||
Instruction</a> </div>
|
||||
<div class="doc_text">
|
||||
<h5>Syntax:</h5>
|
||||
<pre><result> = vsetint <op>, <n x <ty>> <var1>, <var2> <i>; yields <n x bool></i>
|
||||
</pre>
|
||||
|
||||
<h5>Overview:</h5>
|
||||
|
||||
<p>The '<tt>vsetint</tt>' instruction takes two integer vectors and
|
||||
returns a vector of boolean values representing, at each position, the
|
||||
result of the comparison between the values at that position in the
|
||||
two operands.</p>
|
||||
|
||||
<h5>Arguments:</h5>
|
||||
|
||||
<p>The arguments to a '<tt>vsetint</tt>' instruction are a comparison
|
||||
operation and two value arguments. The value arguments must be of <a
|
||||
href="#t_integral">integral</a> <a href="#t_packed">packed</a> type,
|
||||
and they must have identical types. The operation argument must be
|
||||
one of <tt>eq</tt>, <tt>ne</tt>, <tt>slt</tt>, <tt>sgt</tt>,
|
||||
<tt>sle</tt>, <tt>sge</tt>, <tt>ult</tt>, <tt>ugt</tt>, <tt>ule</tt>,
|
||||
<tt>uge</tt>, <tt>true</tt>, and <tt>false</tt>. The result is a
|
||||
packed <tt>bool</tt> value with the same length as each operand.</p>
|
||||
|
||||
<h5>Semantics:</h5>
|
||||
|
||||
<p>The following table shows the semantics of '<tt>vsetint</tt>'. For
|
||||
each position of the result, the comparison is done on the
|
||||
corresponding positions of the two value arguments. Note that the
|
||||
signedness of the comparison depends on the comparison opcode and
|
||||
<i>not</i> on the signedness of the value operands. E.g., <tt>vsetint
|
||||
slt <4 x unsigned> %x, %y</tt> does an elementwise <i>signed</i>
|
||||
comparison of <tt>%x</tt> and <tt>%y</tt>.</p>
|
||||
|
||||
<table border="1" cellspacing="0" cellpadding="4">
|
||||
<tbody>
|
||||
<tr><th>Operation</th><th>Result is true iff</th><th>Comparison is</th></tr>
|
||||
<tr><td><tt>eq</tt></td><td>var1 == var2</td><td>--</td></tr>
|
||||
<tr><td><tt>ne</tt></td><td>var1 != var2</td><td>--</td></tr>
|
||||
<tr><td><tt>slt</tt></td><td>var1 < var2</td><td>signed</td></tr>
|
||||
<tr><td><tt>sgt</tt></td><td>var1 > var2</td><td>signed</td></tr>
|
||||
<tr><td><tt>sle</tt></td><td>var1 <= var2</td><td>signed</td></tr>
|
||||
<tr><td><tt>sge</tt></td><td>var1 >= var2</td><td>signed</td></tr>
|
||||
<tr><td><tt>ult</tt></td><td>var1 < var2</td><td>unsigned</td></tr>
|
||||
<tr><td><tt>ugt</tt></td><td>var1 > var2</td><td>unsigned</td></tr>
|
||||
<tr><td><tt>ule</tt></td><td>var1 <= var2</td><td>unsigned</td></tr>
|
||||
<tr><td><tt>uge</tt></td><td>var1 >= var2</td><td>unsigned</td></tr>
|
||||
<tr><td><tt>true</tt></td><td>always</td><td>--</td></tr>
|
||||
<tr><td><tt>false</tt></td><td>never</td><td>--</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h5>Example:</h5>
|
||||
<pre> <result> = vsetint eq <2 x int> <int 0, int 1>, <int 1, int 0> <i>; yields {<2 x bool>}:result = false, false</i>
|
||||
<result> = vsetint ne <2 x int> <int 0, int 1>, <int 1, int 0> <i>; yields {<2 x bool>}:result = true, true</i>
|
||||
<result> = vsetint slt <2 x int> <int 0, int 1>, <int 1, int 0> <i>; yields {<2 x bool>}:result = true, false</i>
|
||||
<result> = vsetint sgt <2 x int> <int 0, int 1>, <int 1, int 0> <i>; yields {<2 x bool>}:result = false, true</i>
|
||||
<result> = vsetint sle <2 x int> <int 0, int 1>, <int 1, int 0> <i>; yields {<2 x bool>}:result = true, false</i>
|
||||
<result> = vsetint sge <2 x int> <int 0, int 1>, <int 1, int 0> <i>; yields {<2 x bool>}:result = false, true</i>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<!-- _______________________________________________________________________ -->
|
||||
<div class="doc_subsubsection"> <a name="i_vsetfp">'<tt>vsetfp</tt>'
|
||||
Instruction</a> </div>
|
||||
<div class="doc_text">
|
||||
<h5>Syntax:</h5>
|
||||
<pre><result> = vsetfp <op>, <n x <ty>> <var1>, <var2> <i>; yields <n x bool></i>
|
||||
</pre>
|
||||
|
||||
<h5>Overview:</h5>
|
||||
|
||||
<p>The '<tt>vsetfp</tt>' instruction takes two floating point vector
|
||||
arguments and returns a vector of boolean values representing, at each
|
||||
position, the result of the comparison between the values at that
|
||||
position in the two operands.</p>
|
||||
|
||||
<h5>Arguments:</h5>
|
||||
|
||||
<p>The arguments to a '<tt>vsetfp</tt>' instruction are a comparison
|
||||
operation and two value arguments. The value arguments must be of <a
|
||||
href="t_floating">floating point</a> <a href="#t_packed">packed</a>
|
||||
type, and they must have identical types. The operation argument must
|
||||
be one of <tt>eq</tt>, <tt>ne</tt>, <tt>lt</tt>, <tt>gt</tt>,
|
||||
<tt>le</tt>, <tt>ge</tt>, <tt>oeq</tt>, <tt>one</tt>, <tt>olt</tt>,
|
||||
<tt>ogt</tt>, <tt>ole</tt>, <tt>oge</tt>, <tt>ueq</tt>, <tt>une</tt>,
|
||||
<tt>ult</tt>, <tt>ugt</tt>, <tt>ule</tt>, <tt>uge</tt>, <tt>o</tt>,
|
||||
<tt>u</tt>, <tt>true</tt>, and <tt>false</tt>. The result is a packed
|
||||
<tt>bool</tt> value with the same length as each operand.</p>
|
||||
|
||||
<h5>Semantics:</h5>
|
||||
|
||||
<p>The following table shows the semantics of '<tt>vsetfp</tt>' for
|
||||
floating point types. If either operand is a floating point Not a
|
||||
Number (NaN) value, the operation is unordered, and the value in the
|
||||
first column below is produced at that position. Otherwise, the
|
||||
operation is ordered, and the value in the second column is
|
||||
produced.</p>
|
||||
|
||||
<table border="1" cellspacing="0" cellpadding="4">
|
||||
<tbody>
|
||||
<tr><th>Operation</th><th>If unordered<th>Otherwise true iff</th></tr>
|
||||
<tr><td><tt>eq</tt></td><td>undefined</td><td>var1 == var2</td></tr>
|
||||
<tr><td><tt>ne</tt></td><td>undefined</td><td>var1 != var2</td></tr>
|
||||
<tr><td><tt>lt</tt></td><td>undefined</td><td>var1 < var2</td></tr>
|
||||
<tr><td><tt>gt</tt></td><td>undefined</td><td>var1 > var2</td></tr>
|
||||
<tr><td><tt>le</tt></td><td>undefined</td><td>var1 <= var2</td></tr>
|
||||
<tr><td><tt>ge</tt></td><td>undefined</td><td>var1 >= var2</td></tr>
|
||||
<tr><td><tt>oeq</tt></td><td>false</td><td>var1 == var2</td></tr>
|
||||
<tr><td><tt>one</tt></td><td>false</td><td>var1 != var2</td></tr>
|
||||
<tr><td><tt>olt</tt></td><td>false</td><td>var1 < var2</td></tr>
|
||||
<tr><td><tt>ogt</tt></td><td>false</td><td>var1 > var2</td></tr>
|
||||
<tr><td><tt>ole</tt></td><td>false</td><td>var1 <= var2</td></tr>
|
||||
<tr><td><tt>oge</tt></td><td>false</td><td>var1 >= var2</td></tr>
|
||||
<tr><td><tt>ueq</tt></td><td>true</td><td>var1 == var2</td></tr>
|
||||
<tr><td><tt>une</tt></td><td>true</td><td>var1 != var2</td></tr>
|
||||
<tr><td><tt>ult</tt></td><td>true</td><td>var1 < var2</td></tr>
|
||||
<tr><td><tt>ugt</tt></td><td>true</td><td>var1 > var2</td></tr>
|
||||
<tr><td><tt>ule</tt></td><td>true</td><td>var1 <= var2</td></tr>
|
||||
<tr><td><tt>uge</tt></td><td>true</td><td>var1 >= var2</td></tr>
|
||||
<tr><td><tt>o</tt></td><td>false</td><td>always</td></tr>
|
||||
<tr><td><tt>u</tt></td><td>true</td><td>never</td></tr>
|
||||
<tr><td><tt>true</tt></td><td>true</td><td>always</td></tr>
|
||||
<tr><td><tt>false</tt></td><td>false</td><td>never</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h5>Example:</h5>
|
||||
<pre> <result> = vsetfp eq <2 x float> <float 0.0, float 1.0>, <float 1.0, float 0.0> <i>; yields {<2 x bool>}:result = false, false</i>
|
||||
<result> = vsetfp ne <2 x float> <float 0.0, float 1.0>, <float 1.0, float 0.0> <i>; yields {<2 x bool>}:result = true, true</i>
|
||||
<result> = vsetfp lt <2 x float> <float 0.0, float 1.0>, <float 1.0, float 0.0> <i>; yields {<2 x bool>}:result = true, false</i>
|
||||
<result> = vsetfp gt <2 x float> <float 0.0, float 1.0>, <float 1.0, float 0.0> <i>; yields {<2 x bool>}:result = false, true</i>
|
||||
<result> = vsetfp le <2 x float> <float 0.0, float 1.0>, <float 1.0, float 0.0> <i>; yields {<2 x bool>}:result = true, false</i>
|
||||
<result> = vsetfp ge <2 x float> <float 0.0, float 1.0>, <float 1.0, float 0.0> <i>; yields {<2 x bool>}:result = false, true</i>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<!-- _______________________________________________________________________ -->
|
||||
<div class="doc_subsubsection">
|
||||
<a name="i_vselect">'<tt>vselect</tt>' Instruction</a>
|
||||
</div>
|
||||
|
||||
<div class="doc_text">
|
||||
|
||||
<h5>Syntax:</h5>
|
||||
|
||||
<pre>
|
||||
<result> = vselect <n x bool> <cond>, <n x <ty>> <val1>, <n x <ty>> <val2> <i>; yields <n x <ty>></i>
|
||||
</pre>
|
||||
|
||||
<h5>Overview:</h5>
|
||||
|
||||
<p>
|
||||
The '<tt>vselect</tt>' instruction chooses one value at each position
|
||||
of a vector based on a condition.
|
||||
</p>
|
||||
|
||||
|
||||
<h5>Arguments:</h5>
|
||||
|
||||
<p>
|
||||
The '<tt>vselect</tt>' instruction requires a <a
|
||||
href="#t_packed">packed</a> <tt>bool</tt> value indicating the
|
||||
condition at each vector position, and two values of the same packed
|
||||
type. All three operands must have the same length. The type of the
|
||||
result is the same as the type of the two value operands.</p>
|
||||
|
||||
<h5>Semantics:</h5>
|
||||
|
||||
<p>
|
||||
At each position where the <tt>bool</tt> vector is true, that position
|
||||
of the result gets its value from the first value argument; otherwise,
|
||||
it gets its value from the second value argument.
|
||||
</p>
|
||||
|
||||
<h5>Example:</h5>
|
||||
|
||||
<pre>
|
||||
%X = vselect bool <2 x bool> <bool true, bool false>, <2 x ubyte> <ubyte 17, ubyte 17>,
|
||||
<2 x ubyte> <ubyte 42, ubyte 42> <i>; yields <2 x ubyte>:17, 42</i>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<!-- ======================================================================= -->
|
||||
<div class="doc_subsection">
|
||||
<a name="memoryops">Memory Access Operations</a>
|
||||
|
||||
@ -1710,8 +1710,8 @@ returned.</p></li>
|
||||
href="/doxygen/GlobalValue_8h-source.html">llvm/GlobalValue.h</a>"</tt><br>
|
||||
doxygen info: <a href="/doxygen/classllvm_1_1GlobalValue.html">GlobalValue
|
||||
Class</a><br>
|
||||
Superclasses: <a href="#User"><tt>User</tt></a>, <a
|
||||
href="#Value"><tt>Value</tt></a></p>
|
||||
Superclasses: <a href="#Constant"><tt>Constant</tt></a>,
|
||||
<a href="#User"><tt>User</tt></a>, <a href="#Value"><tt>Value</tt></a></p>
|
||||
|
||||
<p>Global values (<a href="#GlobalVariable"><tt>GlobalVariable</tt></a>s or <a
|
||||
href="#Function"><tt>Function</tt></a>s) are the only LLVM values that are
|
||||
@ -1778,15 +1778,17 @@ GlobalValue is currently embedded into.</p></li>
|
||||
<p><tt>#include "<a
|
||||
href="/doxygen/Function_8h-source.html">llvm/Function.h</a>"</tt><br> doxygen
|
||||
info: <a href="/doxygen/classllvm_1_1Function.html">Function Class</a><br>
|
||||
Superclasses: <a href="#GlobalValue"><tt>GlobalValue</tt></a>, <a
|
||||
href="#User"><tt>User</tt></a>, <a href="#Value"><tt>Value</tt></a></p>
|
||||
Superclasses: <a href="#GlobalValue"><tt>GlobalValue</tt></a>,
|
||||
<a href="#Constant"><tt>Constant</tt></a>,
|
||||
<a href="#User"><tt>User</tt></a>,
|
||||
<a href="#Value"><tt>Value</tt></a></p>
|
||||
|
||||
<p>The <tt>Function</tt> class represents a single procedure in LLVM. It is
|
||||
actually one of the more complex classes in the LLVM heirarchy because it must
|
||||
keep track of a large amount of data. The <tt>Function</tt> class keeps track
|
||||
of a list of <a href="#BasicBlock"><tt>BasicBlock</tt></a>s, a list of formal <a
|
||||
href="#Argument"><tt>Argument</tt></a>s, and a <a
|
||||
href="#SymbolTable"><tt>SymbolTable</tt></a>.</p>
|
||||
of a list of <a href="#BasicBlock"><tt>BasicBlock</tt></a>s, a list of formal
|
||||
<a href="#Argument"><tt>Argument</tt></a>s, and a
|
||||
<a href="#SymbolTable"><tt>SymbolTable</tt></a>.</p>
|
||||
|
||||
<p>The list of <a href="#BasicBlock"><tt>BasicBlock</tt></a>s is the most
|
||||
commonly used part of <tt>Function</tt> objects. The list imposes an implicit
|
||||
@ -1915,20 +1917,22 @@ iterator<br>
|
||||
href="/doxygen/GlobalVariable_8h-source.html">llvm/GlobalVariable.h</a>"</tt>
|
||||
<br>
|
||||
doxygen info: <a href="/doxygen/classllvm_1_1GlobalVariable.html">GlobalVariable
|
||||
Class</a><br> Superclasses: <a href="#GlobalValue"><tt>GlobalValue</tt></a>, <a
|
||||
href="#User"><tt>User</tt></a>, <a href="#Value"><tt>Value</tt></a></p>
|
||||
Class</a><br>
|
||||
Superclasses: <a href="#GlobalValue"><tt>GlobalValue</tt></a>,
|
||||
<a href="#Constant"><tt>Constant</tt></a>,
|
||||
<a href="#User"><tt>User</tt></a>,
|
||||
<a href="#Value"><tt>Value</tt></a></p>
|
||||
|
||||
<p>Global variables are represented with the (suprise suprise)
|
||||
<tt>GlobalVariable</tt> class. Like functions, <tt>GlobalVariable</tt>s are also
|
||||
subclasses of <a href="#GlobalValue"><tt>GlobalValue</tt></a>, and as such are
|
||||
always referenced by their address (global values must live in memory, so their
|
||||
"name" refers to their address). See <a
|
||||
href="#GlobalValue"><tt>GlobalValue</tt></a> for more on this. Global variables
|
||||
may have an initial value (which must be a <a
|
||||
href="#Constant"><tt>Constant</tt></a>), and if they have an initializer, they
|
||||
may be marked as "constant" themselves (indicating that their contents never
|
||||
change at runtime).</p>
|
||||
|
||||
"name" refers to their constant address). See
|
||||
<a href="#GlobalValue"><tt>GlobalValue</tt></a> for more on this. Global
|
||||
variables may have an initial value (which must be a
|
||||
<a href="#Constant"><tt>Constant</tt></a>), and if they have an initializer,
|
||||
they may be marked as "constant" themselves (indicating that their contents
|
||||
never change at runtime).</p>
|
||||
</div>
|
||||
|
||||
<!-- _______________________________________________________________________ -->
|
||||
|
||||
@ -4,7 +4,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<link rel="stylesheet" href="llvm.css" type="text/css">
|
||||
<title>LLVM 1.7cvs Release Notes</title>
|
||||
<title>LLVM 1.7 Release Notes</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
@ -60,38 +60,218 @@ href="http://llvm.org/releases/">releases page</a>.</p>
|
||||
|
||||
<div class="doc_text">
|
||||
|
||||
<p>This is the seventh public release of the LLVM Compiler Infrastructure. This
|
||||
release incorporates a large number of enhancements and additions (primarily in
|
||||
the code generator), which combine to improve the quality of the code generated
|
||||
by LLVM by up to 30% in some cases. This release is also the first release to
|
||||
have first-class support for Mac OS X: all of the major bugs have been shaken
|
||||
out and it is now as well supported as Linux on X86.</p>
|
||||
<p>This is the eighth public release of the LLVM Compiler Infrastructure. This
|
||||
release incorporates a large number of enhancements and new features,
|
||||
including vector support (Intel SSE and Altivec), a new GCC4.0-based
|
||||
C/C++ front-end, Objective C/C++ support, inline assembly support, and many
|
||||
other big features.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
|
||||
<!--=========================================================================-->
|
||||
<div class="doc_subsection">
|
||||
<a name="newfeatures">New Features in LLVM 1.7cvs</a>
|
||||
<a name="newfeatures">New Features in LLVM 1.7</a>
|
||||
</div>
|
||||
|
||||
<!--_________________________________________________________________________-->
|
||||
<div class="doc_subsubsection"><a name="llvmgcc4">GCC4.0-based llvm-gcc
|
||||
front-end</a></div>
|
||||
|
||||
<div class="doc_text">
|
||||
|
||||
<p>LLVM 1.7 includes a brand new llvm-gcc, based on GCC 4.0.1. This version
|
||||
of llvm-gcc solves many serious long-standing problems with llvm-gcc, including
|
||||
all of those blocked by the <a href="http://llvm.org/PR498">llvm-gcc 4 meta
|
||||
bug</a>. In addition, llvm-gcc4 implements support for many new features,
|
||||
including GCC inline assembly, generic vector support, SSE and Altivec
|
||||
intrinsics, and several new GCC attributes. Finally, llvm-gcc4 is
|
||||
significantly faster than llvm-gcc3, respects -O options, its -c/-S options
|
||||
correspond to GCC's (they emit native code), supports Objective C/C++, and
|
||||
it has debugging support well underway.</p>
|
||||
|
||||
<p>If you can use it, llvm-gcc4 offers significant new functionality, and we
|
||||
hope that it will replace llvm-gcc3 completely in a future release.
|
||||
Unfortunately, it does not currently support C++ exception handling at all, and
|
||||
it only works on Apple Mac OS/X machines with X86 or PowerPC processors.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
|
||||
<!--_________________________________________________________________________-->
|
||||
<div class="doc_subsubsection"><a name="inlineasm">Inline Assembly
|
||||
Support</a></div>
|
||||
|
||||
<div class="doc_text">
|
||||
|
||||
<p>The LLVM IR and llvm-gcc4 front-end now fully support arbitrary GCC <a
|
||||
href="LangRef.html#inlineasm">inline assembly</a>. The LLVM X86 and PowerPC
|
||||
code generators have initial support for it,
|
||||
being able to compile basic statements, but are missing some features. Please
|
||||
report any inline asm statements that crash the compiler or that are miscompiled
|
||||
as bugs.</p>
|
||||
|
||||
</div>
|
||||
|
||||
<!--_________________________________________________________________________-->
|
||||
<div class="doc_subsubsection"><a name="newsparc">New SPARC backend</a></div>
|
||||
|
||||
<div class="doc_text">
|
||||
|
||||
<p>LLVM 1.7 includes a new, fully functional, SPARC backend built in the
|
||||
target-independent code generator. This SPARC backend includes support for
|
||||
SPARC V8 and SPARC V9 subtargets (controlling whether V9 features can be used),
|
||||
and targets the 32-bit SPARC ABI.</p>
|
||||
|
||||
<p>The LLVM 1.7 release is the last release that will include the LLVM "SparcV9"
|
||||
backend, which was the very first LLVM native code generator. It will
|
||||
be removed in LLVM 1.8, being replaced with the new SPARC backend.</p>
|
||||
|
||||
</div>
|
||||
|
||||
<!--_________________________________________________________________________-->
|
||||
<div class="doc_subsubsection"><a name="genvector">Generic Vector Support
|
||||
</a></div>
|
||||
|
||||
<div class="doc_text">
|
||||
|
||||
<p>LLVM now includes significantly extended support for SIMD vectors in its
|
||||
core instruction set. It now includes three new instructions for manipulating
|
||||
vectors: <a href="LangRef.html#i_extractelement"><tt>extractelement</tt></a>,
|
||||
<a href="LangRef.html#i_insertelement"><tt>insertelement</tt></a>, and
|
||||
<a href="LangRef.html#i_shufflevector"><tt>shufflevector</tt></a>. Further,
|
||||
many bugs in vector handling have been fixed, and vectors are now supported by
|
||||
the target-independent code generator. For example, if a vector operation is
|
||||
not supported by a particular target, it will be correctly broken down and
|
||||
executed as scalar operations.</p>
|
||||
|
||||
<p>Because llvm-gcc3 does not support GCC generic vectors or vector intrinsics,
|
||||
llvm-gcc4 must be used.</p>
|
||||
</div>
|
||||
|
||||
|
||||
<!--_________________________________________________________________________-->
|
||||
<div class="doc_subsubsection"><a name="ssealtivec">Intel SSE and PowerPC
|
||||
Altivec support
|
||||
</a></div>
|
||||
|
||||
<div class="doc_text">
|
||||
|
||||
<p>The LLVM X86 backend now supports Intel SSE 1, 2, and 3, and now uses scalar
|
||||
SSE operations to implement scalar floating point math when the target supports
|
||||
SSE1 (for floats) or SSE2 (for doubles). Vector SSE instructions are generated
|
||||
by llvm-gcc4 when the generic vector mechanism or specific SSE intrinsics are
|
||||
used.
|
||||
</p>
|
||||
|
||||
<p>The LLVM PowerPC backend now supports the Altivec instruction set, including
|
||||
both GCC -maltivec and -faltivec modes. Altivec instructions are generated
|
||||
by llvm-gcc4 when the generic vector mechanism or specific Altivec intrinsics
|
||||
are used.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
|
||||
<!--_________________________________________________________________________-->
|
||||
<div class="doc_subsubsection"><a name="optimizernew">Optimizer
|
||||
Improvements</a></div>
|
||||
|
||||
<div class="doc_text">
|
||||
<ul>
|
||||
<li>New C front-end.</li>
|
||||
<li>New SPARC backend.</li>
|
||||
<li>Inline assembly support.</li>
|
||||
<li>The Loop Unswitching pass (<tt>-loop-unswitch</tt>) has had several bugs
|
||||
fixed, has several new features, and is enabled by default in llvmgcc3
|
||||
now.</li>
|
||||
<li>The Loop Strength Reduction pass (<tt>-loop-reduce</tt>) is now enabled for
|
||||
the X86 and Alpha backends.</li>
|
||||
<li>The Instruction Combining pass (<tt>-instcombine</tt>) now includes a
|
||||
framework and implementation for simplifying code based on whether computed
|
||||
bits are demanded or not.</li>
|
||||
<li>The Scalar Replacement of Aggregates pass (<tt>-scalarrepl</tt>) can now
|
||||
promote simple unions to registers.</li>
|
||||
<li>The Reassociation pass (<tt>-reassociate</tt>) can now
|
||||
factor expressions, e.g. turning "A*A+A*B" into "A*(A+B)".</li>
|
||||
<li>Several LLVM passes are <a href="http://llvm.org/PR681">significantly
|
||||
faster</a>.</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<!--_________________________________________________________________________-->
|
||||
<div class="doc_subsubsection"><a name="codgennew">Code Generator
|
||||
Improvements</a></div>
|
||||
|
||||
<div class="doc_text">
|
||||
<ul>
|
||||
<li>LLVM has a new prepass (before register allocation) list scheduler, which
|
||||
supports bottom-up and top-down scheduling, pluggable priority functions and
|
||||
pluggable hazard recognizers. The X86 backend uses this to reduce register
|
||||
pressure and RISC targets schedule based on operation latency.</li>
|
||||
<li>The tblgen-based target description framework introduced in LLVM 1.6 has
|
||||
several new features, useful for targets that can fold loads and stores into
|
||||
operations, and features that make the .td files more expressive.</li>
|
||||
<li>The instruction selector is significantly faster in 1.7 than in 1.6.</li>
|
||||
<li>The X86, Alpha and Itanium backends use new DAG-DAG instruction selectors,
|
||||
making them easier to maintain and generate slightly better code.</li>
|
||||
<li>The X86 backend now supports generation of Scalar SSE code for scalar FP
|
||||
expressions. LLVM provides significantly better performance with Scalar SSE
|
||||
instructions than it does with the Intel floating point stack
|
||||
instructions.</li>
|
||||
<li>The Itanium backend now has a bundling pass, which improves performance
|
||||
by ~10% and reduces code size (previously it unconditionally inserted a stop
|
||||
bit after every instruction).</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<!--_________________________________________________________________________-->
|
||||
<div class="doc_subsubsection"><a name="othernew">Other New Features</a></div>
|
||||
|
||||
<div class="doc_text">
|
||||
<ul>
|
||||
<li>The Mac OS/X PowerPC and X86 backends now have initial support for
|
||||
Darwin DWARF
|
||||
debugging information, however, debug info generation has been disabled for
|
||||
the 1.7 release in llvmgcc4.</li>
|
||||
<li>LLVM includes the new <a href="docs/CommandGuide/html/llvm-config.html">
|
||||
llvm-config</a> utility, which makes it easier to build and link programs
|
||||
against the LLVM libraries when not using the LLVM makefiles.</li>
|
||||
<li>LLVM now supports first class global ctor/dtor initialization lists, no
|
||||
longer forcing targets to use "__main".</li>
|
||||
<li>LLVM supports assigning globals and functions to a particular section
|
||||
in the result executable using the GCC section attribute.</li>
|
||||
<li><a href="ExtendingLLVM.html">Adding intrinsics to LLVM</a> is now
|
||||
significantly easier.</li>
|
||||
<li>llvmgcc4 now fully supports C99 Variable Length Arrays, including dynamic
|
||||
stack deallocation.</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<!--=========================================================================-->
|
||||
<div class="doc_subsection">
|
||||
<a name="changes">Significant changes in LLVM 1.7cvs</a>
|
||||
<a name="changes">Significant Changes in LLVM 1.7</a>
|
||||
</div>
|
||||
|
||||
<div class="doc_text">
|
||||
<ul>
|
||||
<li>Removed the llvm.readport/llvm.writeport/llvm.readio/llvm.writeio
|
||||
intrinsics.</li>
|
||||
<li>Separated the other intrinsics based on type.</li>
|
||||
<li>The official LLVM URL is now <a href="http://llvm.org/">
|
||||
http://llvm.org/</a>.</li>
|
||||
<li>The LLVM intrinsics used to be overloaded based on type: for example,
|
||||
<a href="LangRef.html#int_ctpop"><tt>llvm.ctpop</tt></a> could work with any
|
||||
integer datatype. They are now separated into different intrinsics with
|
||||
suffixes to denote their argument type (e.g. <tt>llvm.ctpop.i32</tt>)). Old
|
||||
LLVM .ll and .bc files that use these intrinsics will continue to work with
|
||||
new LLVM versions (they are transparently upgraded by the parsers), but will
|
||||
cause a warning to be emitted.</li>
|
||||
<li>The <tt>llvm.readport</tt>, <tt>llvm.writeport</tt>, <tt>llvm.readio</tt>,
|
||||
and <tt>llvm.writeio</tt> intrinsics have been removed. The first two
|
||||
were ever only supported by the X86 backend, the last two were never
|
||||
correctly supported by any target, and none were accessible through the
|
||||
C front-end. Inline assembly support can now be used to
|
||||
implement these operations.</li>
|
||||
<li>The <tt>llvm-db</tt> tool had basic support for stepping through code, which
|
||||
used the JIT. This code has been removed, and DWARF emission support added
|
||||
instead. <tt>llvm-db</tt> still exists in CVS if someone wanted to write a
|
||||
<tt>ptrace</tt> backend for it.</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@ -155,12 +335,12 @@ useful to some people. In particular, if you would like to work on one of these
|
||||
components, please contact us on the llvmdev list.</p>
|
||||
|
||||
<ul>
|
||||
<li>The following passes are incomplete or buggy, and may be removed in future
|
||||
releases: <tt>-cee</tt></li>
|
||||
<li>The <tt>llvm-db</tt> tool is in a very early stage of development, but can
|
||||
be used to step through programs and inspect the stack.</li>
|
||||
<li>The <tt>-cee</tt> pass is known to be buggy, and may be removed in in a
|
||||
future release.</li>
|
||||
<li>The IA64 code generator is experimental.</li>
|
||||
<li>The Alpha JIT is experimental.</li>
|
||||
<li>"<tt>-filetype=asm</tt>" (the default) is the only supported value for the
|
||||
<tt>-filetype</tt> llc option.</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
@ -173,7 +353,7 @@ components, please contact us on the llvmdev list.</p>
|
||||
<div class="doc_text">
|
||||
|
||||
<ul>
|
||||
<li>The <a href="http://llvm.org/PR656">configure script sometimes fails on Solaris/Sparc</a>. A work around is documented in <a href="http://llvm.org/PR656">PR656.</a></li>
|
||||
<li>none yet</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@ -201,11 +381,14 @@ components, please contact us on the llvmdev list.</p>
|
||||
|
||||
<div class="doc_text">
|
||||
|
||||
These bugs are known for the old front-end. The new GCC-4-based C front-end
|
||||
suffers from none of these.
|
||||
<p>
|
||||
llvm-gcc3 has many significant problems that are fixed by llvm-gcc4. See
|
||||
those blocked on the <a href="http://llvm.org/PR498">llvm-gcc4 meta bug</a>.
|
||||
Two major ones include:</p>
|
||||
|
||||
<ul>
|
||||
<li>C99 Variable sized arrays do not release stack memory when they go out of
|
||||
<li>With llvm-gcc3,
|
||||
C99 variable sized arrays do not release stack memory when they go out of
|
||||
scope. Thus, the following program may run out of stack space:
|
||||
<pre>
|
||||
for (i = 0; i != 1000000; ++i) {
|
||||
@ -214,7 +397,7 @@ suffers from none of these.
|
||||
}
|
||||
</pre></li>
|
||||
|
||||
<li>Initialization of global union variables can only be done <a
|
||||
<li>With llvm-gcc3, Initialization of global union variables can only be done <a
|
||||
href="http://llvm.org/PR162">with the largest union member</a>.</li>
|
||||
|
||||
</ul>
|
||||
@ -398,11 +581,6 @@ itself.</p>
|
||||
|
||||
<ul>
|
||||
|
||||
<li>The C++ front-end is based on a pre-release of the GCC 3.4 C++ parser. This
|
||||
parser is significantly more standards compliant (and picky) than prior GCC
|
||||
versions. For more information, see the C++ section of the <a
|
||||
href="http://gcc.gnu.org/gcc-3.4/changes.html">GCC 3.4 release notes</a>.</li>
|
||||
|
||||
<li>Destructors for local objects are not always run when a <tt>longjmp</tt> is
|
||||
performed. In particular, destructors for objects in the <tt>longjmp</tt>ing
|
||||
function and in the <tt>setjmp</tt> receiver function may not be run.
|
||||
@ -442,6 +620,12 @@ problem probably cannot be fixed.</li>
|
||||
supported</a>. This should not affect LLVM produced by the C or C++
|
||||
frontends.</li>
|
||||
|
||||
<li>The C backend does not correctly implement the <a
|
||||
href="LangRef.html#i_stacksave"><tt>llvm.stacksave</tt></a> or
|
||||
<a href="LangRef.html#i_stackrestore"><tt>llvm.stackrestore</tt></a>
|
||||
intrinsics. This means that some code compiled by it can run out of stack
|
||||
space if they depend on these (e.g. C99 varargs).</li>
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
@ -454,7 +638,8 @@ frontends.</li>
|
||||
<div class="doc_text">
|
||||
|
||||
<ul>
|
||||
<li>None yet</li>
|
||||
<li><a href="http://llvm.org/PR736">Indirect calls crash JIT on
|
||||
Darwin/x86</a>.</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
@ -467,21 +652,8 @@ frontends.</li>
|
||||
<div class="doc_text">
|
||||
|
||||
<ul>
|
||||
<li>None yet</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- ======================================================================= -->
|
||||
<div class="doc_subsection">
|
||||
<a name="sparcv9-be">Known problems with the SparcV9 back-end</a>
|
||||
</div>
|
||||
|
||||
<div class="doc_text">
|
||||
|
||||
<ul>
|
||||
<li><a href="http://llvm.org/PR60">[sparcv9] SparcV9 backend miscompiles
|
||||
several programs in the LLVM test suite</a></li>
|
||||
<li><a href="http://llvm.org/PR642">PowerPC backend does not correctly
|
||||
implement ordered FP comparisons</a>.</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
@ -534,14 +706,33 @@ programs.</li>
|
||||
|
||||
<!-- ======================================================================= -->
|
||||
<div class="doc_subsection">
|
||||
<a name="sparc">Known problems with the SPARC back-end</a>
|
||||
<a name="sparc-be">Known problems with the SPARC back-end</a>
|
||||
</div>
|
||||
|
||||
<div class="doc_text">
|
||||
|
||||
<ul>
|
||||
<li>None yet.</li>
|
||||
<li>The SPARC backend only supports the 32-bit SPARC ABI (-m32), it does not
|
||||
support the 64-bit SPARC ABI (-m64).</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<!-- ======================================================================= -->
|
||||
<div class="doc_subsection">
|
||||
<a name="sparcv9-be">Known problems with the SparcV9 back-end</a>
|
||||
</div>
|
||||
|
||||
<div class="doc_text">
|
||||
|
||||
<ul>
|
||||
<li><a href="http://llvm.org/PR60">[sparcv9] SparcV9 backend miscompiles
|
||||
several programs in the LLVM test suite</a></li>
|
||||
<li>The SparcV9 backend is slated to be removed before the LLVM 1.8
|
||||
release.</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- *********************************************************************** -->
|
||||
|
||||
@ -23,6 +23,8 @@
|
||||
<p>Written by <a href="mailto:rspencer@x10sys.com">Reid Spencer</a></p>
|
||||
</div>
|
||||
|
||||
<p class="doc_warning">Warning: This document is out of date, please see <a href="CommandGuide/html/llvm-config.html">llvm-config</a> for more information.</p>
|
||||
|
||||
<!-- ======================================================================= -->
|
||||
<div class="doc_section"><a name="abstract">Abstract</a></div>
|
||||
<div class="doc_text">
|
||||
|
||||
@ -10,4 +10,5 @@
|
||||
LEVEL = ../..
|
||||
TOOLNAME = BFtoLLVM
|
||||
EXAMPLE_TOOL = 1
|
||||
EXTRA_DIST = tests
|
||||
include $(LEVEL)/Makefile.common
|
||||
|
||||
@ -1,2 +0,0 @@
|
||||
.cvsignore
|
||||
*.inc
|
||||
@ -1 +0,0 @@
|
||||
*.inc
|
||||
@ -40,11 +40,11 @@ site.exp: Makefile $(LLVM_OBJ_ROOT)/Makefile.config
|
||||
@echo '## these variables are automatically generated by make ##' >site.tmp
|
||||
@echo '# Do not edit here. If you wish to override these values' >>site.tmp
|
||||
@echo '# edit the last section' >>site.tmp
|
||||
@echo "set target_triplet $(TARGET_TRIPLE)" >> site.tmp
|
||||
@echo "set llvmgcc_version $(LLVMGCC_VERSION)" >> site.tmp
|
||||
@echo 'set target_triplet "$(TARGET_TRIPLE)"' >> site.tmp
|
||||
@echo 'set llvmgcc_version "$(LLVMGCC_VERSION)"' >> site.tmp
|
||||
@echo 'set prcontext "$(TCLSH) $(LLVM_SRC_ROOT)/test/Scripts/prcontext.tcl"' >> site.tmp
|
||||
@echo 'set srcdir $(LLVM_SRC_ROOT)/test' >>site.tmp
|
||||
@echo "set objdir $(LLVM_OBJ_ROOT)/test" >>site.tmp
|
||||
@echo 'set srcdir "$(LLVM_SRC_ROOT)/test"' >>site.tmp
|
||||
@echo 'set objdir "$(LLVM_OBJ_ROOT)/test"' >>site.tmp
|
||||
@echo 'set llvmgcc "PATH=\"$(LLVMToolDir):$(PATH)\" \"$(LLVMGCC)\""' >> site.tmp
|
||||
@echo 'set llvmgxx "PATH=\"$(LLVMToolDir):$(PATH)\" \"$(LLVMGCC)\""' >> site.tmp
|
||||
@echo 'set llvmgccmajvers "$(LLVMGCC_MAJVERS)"' >> site.tmp
|
||||
|
||||
@ -1,13 +0,0 @@
|
||||
// RUN: not %llvmgcc -xc %s -S -o -
|
||||
|
||||
// This is a malformed program that is not caught by llvmgcc3.
|
||||
// XFAIL: llvmgcc3
|
||||
|
||||
|
||||
int one (int a) {
|
||||
two (a, 5);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int two (int a, int b) {
|
||||
}
|
||||
@ -1,7 +1,6 @@
|
||||
// RUN: %llvmgcc %s -S -g -o - | grep 'llvm.dbg.stoppoint.*uint 14'
|
||||
// PR664: ensure that line #'s are emitted for declarations
|
||||
|
||||
// XFAIL: llvmgcc4
|
||||
|
||||
short test(short br_data_0,
|
||||
short br_data_1,
|
||||
@ -21,3 +20,6 @@ short s1625 = sm16 + sm25;
|
||||
|
||||
return s0734 + s1625;
|
||||
}
|
||||
|
||||
// FIXME: PR735
|
||||
// XFAIL: llvmgcc4
|
||||
|
||||
@ -1,12 +0,0 @@
|
||||
; RUN: llvm-as < %s | llc
|
||||
|
||||
; The vload was getting memoized to the previous scalar load!
|
||||
|
||||
void %VertexProgram2() {
|
||||
%xFloat0.688 = load float* null ; <float> [#uses=0]
|
||||
%loadVector37.712 = load <4 x float>* null ; <<4 x float>> [#uses=1]
|
||||
%inFloat3.713 = insertelement <4 x float> %loadVector37.712, float 0.000000e+00, uint 3 ; <<4 x float>> [#uses=1]
|
||||
store <4 x float> %inFloat3.713, <4 x float>* null
|
||||
unreachable
|
||||
}
|
||||
|
||||
@ -216,6 +216,9 @@ int main(int argc, char **argv) {
|
||||
sys::RemoveFileOnSignal(sys::Path(OutputFilename));
|
||||
}
|
||||
}
|
||||
|
||||
if (FileType != TargetMachine::AssemblyFile)
|
||||
std::cerr << "WARNING: only -filetype=asm is currently supported.\n";
|
||||
|
||||
// Ask the target to add backend passes as necessary.
|
||||
if (Target.addPassesToEmitFile(Passes, *Out, FileType, Fast)) {
|
||||
|
||||
@ -50,6 +50,7 @@ namespace {
|
||||
// main Driver function
|
||||
//
|
||||
int main(int argc, char **argv, char * const *envp) {
|
||||
std::cout << "NOTE: llvm-db is known useless right now.\n";
|
||||
try {
|
||||
cl::ParseCommandLineOptions(argc, argv,
|
||||
" llvm source-level debugger\n");
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user