Add ideas and small revisions from Vikram

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8818 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner
2003-10-02 16:38:05 +00:00
parent 6b032052cc
commit 19092619ff

View File

@@ -9,10 +9,11 @@
<ol> <ol>
<li><a href="#intro">Introduction</a> <li><a href="#intro">Introduction</a>
<li><a href="#whatsnew">What's New?</a> <li><a href="#whatsnew">What's New?</a>
<li><a href="#portability">Portability and Supported Platforms</a>
<li><a href="#install-instructions">Installation Instructions</a> <li><a href="#install-instructions">Installation Instructions</a>
<li><a href="#knownproblems">Known Problems</a> <li><a href="#knownproblems">Known Problems</a>
<ul> <ul>
<li><a href="#portability">Portability Problems</a> <!-- <li><a href="#portabilityprobs">Portability Problems</a> -->
<li><a href="#core">Known problems with the LLVM Core</a> <li><a href="#core">Known problems with the LLVM Core</a>
<li><a href="#c-fe">Known problems with the C Front-end</a> <li><a href="#c-fe">Known problems with the C Front-end</a>
<li><a href="#c++-fe">Known problems with the C++ Front-end</a> <li><a href="#c++-fe">Known problems with the C++ Front-end</a>
@@ -37,8 +38,10 @@
This document contains the release notes for the LLVM compiler infrastructure, This document contains the release notes for the LLVM compiler infrastructure,
release 1.0. The most up-to-date version of this document can be found on the release 1.0. The most up-to-date version of this document can be found on the
<a href="http://llvm.cs.uiuc.edu/releases/1.0/ReleaseNotes.html">LLVM web <a href="http://llvm.cs.uiuc.edu/releases/1.0/ReleaseNotes.html">LLVM web
site</a>. Since this document may be updated after the release, it is best to site</a>. If you are not reading this on the LLVM web pages, you should
read the copy hosted there. probably go there, because this document may be updated after the release.<p>
FIXME: What is this document? Where do I find other documents?<p>
<!-- *********************************************************************** --> <!-- *********************************************************************** -->
@@ -54,7 +57,26 @@ compiler, a C back-end, stable X86 and Sparc V9 static and JIT code generators,
as well as a large suite of scalar and interprocedural optimizations.<p> as well as a large suite of scalar and interprocedural optimizations.<p>
TODO: Works on: SPEC CPU 2000<p> TODO: Works on: SPEC CPU 2000<p>
TODO: Works on: Olden/Ptrdist benchmarks TODO: Works on: Olden/Ptrdist benchmarks<p>
The What's New section should give a bulletted list of what is
included, perhaps a couple of lists (Stable, Beta).<p>
It would be useful to give a pointer to a list of the available passes (at least
for the standard compiler techniques).<p>
<!-- *********************************************************************** -->
</ul><table width="100%" bgcolor="#330077" border=0 cellpadding=4 cellspacing=0>
<tr><td align=center><font color="#EEEEFF" size=+2 face="Georgia,Palatino"><b>
<a name="portability">Portability and Supported Platforms
</b></font></td></tr></table><ul>
<!-- *********************************************************************** -->
LLVM has only been extensively tested on ia32-linux and sparc-solaris machines.
The core LLVM infrastructure uses "autoconf" for portability, so hopefully we
work on more platforms than that. However, it is extremely likely that we
missed something. We welcome portability patches and error messages.<p>
<!-- *********************************************************************** --> <!-- *********************************************************************** -->
@@ -76,18 +98,13 @@ FIXME
This section contains all known problems with the LLVM system, listed by This section contains all known problems with the LLVM system, listed by
component. As new problems are discovered, they will be added to these component. As new problems are discovered, they will be added to these
sections, so it is important to check the <a sections.
href="http://llvm.cs.uiuc.edu/releases/1.0/ReleaseNotes.html">web version</a> of
this document for up-to-date information.
<!-- _______________________________________________________________________ --> <!-- _______________________________________________________________________ -->
<!--
</ul><h4><a name="portability"><hr size=0>Portability Problems</h4><ul> </ul><h4><a name="portability"><hr size=0>Portability Problems</h4><ul>
-->
LLVM has only been extensively tested on ia32-linux and sparc-solaris machines.
The core LLVM infrastructure uses "autoconf" for portability, so hopefully we
work on more platforms than that. However, it is extremely likely that we
missed something. We welcome portability patches and error messages.<p>
<!-- _______________________________________________________________________ --> <!-- _______________________________________________________________________ -->
@@ -109,8 +126,8 @@ missed something. We welcome portability patches and error messages.<p>
<li>Inline assembly is not yet supported.<p> <li>Inline assembly is not yet supported.<p>
<li>"long double" is transformed by the front-end into "double". There is no <li>"long double" is transformed by the front-end into "double". There is no
support for floating point data types of any size other than 32 and 64 bits. support for floating point data types of any size other than 32 and 64 bits.
<p> <p>
<li>C99 Variable sized arrays do not release stack memory when they go out of <li>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: scope. Thus, the following program may run out of stack space:
<pre> <pre>
@@ -194,7 +211,7 @@ missed something. We welcome portability patches and error messages.<p>
<ol> <ol>
<li><a href="http://gcc.gnu.org/onlinedocs/gcc/Statement-Exprs.html#Statement%20Exprs">Statement Exprs</a>: Putting statements and declarations inside expressions. <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Statement-Exprs.html#Statement%20Exprs">Statement Exprs</a>: Putting statements and declarations inside expressions.
<li><a href="http://gcc.gnu.org/onlinedocs/gcc/Typeof.html#Typeof">Typeof</a>: <code>typeof</code>: referring to the type of an expression. <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Typeof.html#Typeof">Typeof</a>: <code>typeof</code>: referring to the type of an expression.
<li><a href="http://gcc.gnu.org/onlinedocs/gcc/Lvalues.html#Lvalues">Lvalues</a>: Using <code>?:</code>, <code>,</code> and casts in lvalues. <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Lvalues.html#Lvalues">Lvalues</a>: Using <code>?:</code>, "<code>,</code>" and casts in lvalues.
<li><a href="http://gcc.gnu.org/onlinedocs/gcc/Conditionals.html#Conditionals">Conditionals</a>: Omitting the middle operand of a <code>?:</code> expression. <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Conditionals.html#Conditionals">Conditionals</a>: Omitting the middle operand of a <code>?:</code> expression.
<li><a href="http://gcc.gnu.org/onlinedocs/gcc/Long-Long.html#Long%20Long">Long Long</a>: Double-word integers. <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Long-Long.html#Long%20Long">Long Long</a>: Double-word integers.
<li><a href="http://gcc.gnu.org/onlinedocs/gcc/Complex.html#Complex">Complex</a>: Data types for complex numbers. <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Complex.html#Complex">Complex</a>: Data types for complex numbers.
@@ -246,16 +263,21 @@ 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>.<p> href="http://gcc.gnu.org/gcc-3.4/changes.html">GCC 3.4 release notes</a>.<p>
<li>Destructors for local objects are not always run when a <tt>longjmp</tt> is <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 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. function and in the <tt>setjmp</tt> receiver function may not be run.
Objects in intervening stack frames will be destroyed however (which is Objects in intervening stack frames will be destroyed however (which is
better than most compilers).<p> better than most compilers).<p>
<li>The calling conventions and name mangling used by the LLVM C++ front-end do <li>The LLVM C++ front-end follows the <a
follow the <a href="http://www.codesourcery.com/cxx-abi">Itanium C++ href="http://www.codesourcery.com/cxx-abi">Itanium C++ ABI</a>.
ABI</a>, and thus we should be binary compatible with native C++ code This document, which is not Itanium specific, specifies a standard for name
compiled with a recent GCC compiler. However, the exception handling mangling, class layout, v-table layout, RTTI formats, and other C++
mechanisms are very different, so they will not interact correctly. representation issues. Because we use this API, code generated by the LLVM
compilers should be binary compatible with machine code generated by other
Itanium ABI C++ compilers (such as G++, the Intel and HP compilers, etc).
<i>However</i>, the exception handling mechanism used by LLVM is very
different from the model used in the Itanium ABI, so <b>exceptions will not
interact correctly</b> .
<!-- _______________________________________________________________________ --> <!-- _______________________________________________________________________ -->
</ul><h4><a name="x86-be"><hr size=0>Known problems with the X86 back-end</h4><ul> </ul><h4><a name="x86-be"><hr size=0>Known problems with the X86 back-end</h4><ul>
@@ -323,6 +345,6 @@ via the mailing lists.<p>
<address>By: <a href="mailto:sabre@nondot.org">Chris Lattner</a></address> <address>By: <a href="mailto:sabre@nondot.org">Chris Lattner</a></address>
<!-- Created: Wed Oct 1 17:38:54 CDT 2003 --> <!-- Created: Wed Oct 1 17:38:54 CDT 2003 -->
<!-- hhmts start --> <!-- hhmts start -->
Last modified: Thu Oct 2 00:06:58 CDT 2003 Last modified: Thu Oct 2 11:37:25 CDT 2003
<!-- hhmts end --> <!-- hhmts end -->
</body></html> </body></html>