Add some Ada info and correct a few buglets.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46928 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/docs/ReleaseNotes.html b/docs/ReleaseNotes.html
index 19644ff..ebc619e 100644
--- a/docs/ReleaseNotes.html
+++ b/docs/ReleaseNotes.html
@@ -97,7 +97,7 @@
LLVM 2.1, llvm-gcc 4.2 was beta). Since LLVM 2.1, the llvm-gcc 4.2 front-end
has made leaps and bounds and is now at least as good as 4.0 in virtually every
area, and is better in several areas (for example, exception handling
-correctness, support for Ada and FORTRAN). We strongly recommend that you
+correctness, support for Ada and Fortran). We strongly recommend that you
migrate from llvm-gcc 4.0 to llvm-gcc 4.2 in this release cycle because
<b>LLVM 2.2 is the last release that will support llvm-gcc 4.0</b>: LLVM 2.3
will only support the llvm-gcc 4.2 front-end.</p>
@@ -126,11 +126,11 @@
<li>Scott Michel contributed an SPU backend, which generates code for the
vector coprocessors on the Cell processor. (Status?)</li>
-<li>llvm-gcc 4.2 has significantly improved support for the GCC Ada (GNAT) and
-FORTRAN (gfortran) frontends. Duncan has the llvm-gcc 4.2 GNAT front-end
-supporting almost all of the ACATS testsuite (except 2 tests?). The llvm-gcc
-4.2 gfortran front-end supports a broad range of FORTRAN code, but does <a
-href="http://llvm.org/PR1971">not support EQUIVALENCE yet</a>.</li>
+<li>Anton and Duncan significantly improved llvm-gcc 4.2 support for the GCC Ada
+(GNAT) and Fortran (gfortran) front-ends. These front-ends should still be considered
+experimental however: see the <a href="#knownproblems">list of known problems</a>.
+The release binaries do not contain either front-end: they need to be built from
+source (the Ada front-end only builds on x86-32 linux).
<li>Dale contributed full support for long double on x86/x86-64 (where it is 80
bits) and on Darwin PPC/PPC64 (where it is 128 bits). In previous LLVM
@@ -168,7 +168,7 @@
construction routines as well as several other auxiliary APIs.</li>
<li>Anton added readnone/readonly attributes for modeling function side effects.
-Duncan hooked up GCC's pure/const attributes to use them and enhanced mod/ref
+Duncan hooked up GCC's pure/const attributes to them and enhanced mod/ref
analysis to use them.</li>
<li>Devang added LLVMFoldingBuilder, a version of LLVMBuilder that implicitly
@@ -182,7 +182,7 @@
type in a register, in memory according to the platform ABI, and in memory when
we have a choice.</li>
-<li>Duncan moved parameter attributes off of FunctionType and onto functions
+<li>Reid moved parameter attributes off of FunctionType and onto functions
and calls. This makes it much easier to add attributes to a function in a
transformation pass.</li>
@@ -211,7 +211,7 @@
and backward dominator computation.</li>
<li>Dan added support for emitting debug information with .file and .loc
-directives on that support it, instead of emitting large tables in the .s
+directives on platforms that support it, instead of emitting large tables in the .s
file.</li>
<li>Evan extended the DAG scheduler to model physical register dependencies
@@ -300,6 +300,7 @@
details?).</li>
<li>Evan contributed several enhancements to Darwin/x86 debug information,
and improvements at -O0 (details?).</li>
+<li>Duncan added x86-64 support for trampolines (pointers to nested functions).</li>
</ul>
</div>
@@ -528,6 +529,7 @@
<li><a href="http://llvm.org/PR1658">The C backend violates the ABI of common
C++ programs</a>, preventing intermixing between C++ compiled by the CBE and
C++ code compiled with LLC or native compilers.</li>
+<li>The C backend does not support all exception handling constructs.</li>
</ul>
</div>
@@ -538,6 +540,52 @@
<a name="c-fe">Known problems with the C front-end</a>
</div>
+<!-- ======================================================================= -->
+<div class="doc_subsection">
+ <a name="ada-fe">Known problems with the Ada front-end</a>
+</div>
+
+<div class="doc_text">
+The llvm-gcc 4.2 Ada compiler works fairly well, however this is not a mature
+technology and problems should be expected.
+<ul>
+<li>The Ada front-end currently only builds on x86-32. This is mainly due
+to lack of trampoline support (pointers to nested functions) on other platforms,
+however it <a href="http://llvm.org/PR2006">also fails to build on x86-64</a>
+which does support trampolines.</li>
+<li>The Ada front-end <a href="http://llvm.org/PR2007">fails to bootstrap</a>.
+Workaround: configure with --disable-bootstrap.</li>
+<li>The c380004 and <a href="http://llvm.org/PR2010">c393010</a> ACATS tests
+fail (c380004 also fails with gcc-4.2 mainline).</li>
+<li>Many gcc specific Ada tests continue to crash the compiler.</li>
+<li>The -E binder option (exception backtraces)
+<a href="http://llvm.org/PR1982">does not work</a> and will result in programs
+crashing if an exception is raised. Workaround: do not use -E.</li>
+<li>Only discrete types <a href="http://llvm.org/PR1981">are allowed to start
+or finish at a non-byte offset</a> in a record. Workaround: do not pack records
+or use representation clauses that result in a field of a non-discrete type
+starting or finishing in the middle of a byte.</li>
+<li>The lli interpreter <a href="http://llvm.org/PR2009">considers 'main'
+as generated by the Ada binder to be invalid</a>.
+Workaround: hand edit the file to use pointers for argv and envp rather than
+integers.</li>
+<li>The -fstack-check option <a href="http://llvm.org/PR2008">is ignored</a>.</li>
+</ul>
+</div>
+
+<!-- ======================================================================= -->
+<div class="doc_subsection">
+ <a name="fortran-fe">Known problems with the Fortran front-end</a>
+</div>
+
+<div class="doc_text">
+
+<ul>
+<li>The llvm-gcc 4.2 gfortran front-end supports a broad range of Fortran code, but does
+<a href="http://llvm.org/PR1971">not support EQUIVALENCE yet</a>.</li>
+</ul>
+</div>
+
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">Bugs</div>
@@ -567,7 +615,7 @@
As in Algol and Pascal, lexical scoping of functions.
Nested functions are supported, but llvm-gcc does not support
- taking the address of a nested function (except on the X86-32 target)
+ taking the address of a nested function (except on X86 targets)
or non-local gotos.</li>
<li><a href="http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html#Function%20Attributes">Function Attributes</a>:
@@ -661,7 +709,8 @@
itself, Qt, Mozilla, etc.</p>
<ul>
-<li>Exception handling only works well on the X86 and PowerPC targets.</li>
+<li>Exception handling only works well on the X86 and PowerPC targets.
+It works well for x86-64 darwin but not x86-64 linux.</li>
</ul>
</div>