mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-26 21:32:10 +00:00
Scrub all LLVM 1.3 stuff, changing over to 1.4. Add info about PR419,
which is now fixed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15800 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
cc22e9f406
commit
5c3389a084
@ -3,11 +3,11 @@
|
||||
<html>
|
||||
<head>
|
||||
<link rel="stylesheet" href="llvm.css" type="text/css">
|
||||
<title>LLVM 1.3 Release Notes</title>
|
||||
<title>LLVM 1.4 Release Notes</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="doc_title">LLVM 1.3 Release Notes</div>
|
||||
<div class="doc_title">LLVM 1.4 Release Notes</div>
|
||||
|
||||
<ol>
|
||||
<li><a href="#intro">Introduction</a></li>
|
||||
@ -41,10 +41,10 @@
|
||||
<div class="doc_text">
|
||||
|
||||
<p>This document contains the release notes for the LLVM compiler
|
||||
infrastructure, release 1.3. Here we describe the status of LLVM, including any
|
||||
infrastructure, release 1.4. Here we describe the status of LLVM, including any
|
||||
known problems and bug fixes from the previous release. The most up-to-date
|
||||
version of this document can be found on the <a
|
||||
href="http://llvm.cs.uiuc.edu/releases/1.3/">LLVM 1.3 web site</a>. If you are
|
||||
href="http://llvm.cs.uiuc.edu/releases/1.4/">LLVM 1.4 web site</a>. If you are
|
||||
not reading this on the LLVM web pages, you should probably go there because
|
||||
this document may be updated after the release.</p>
|
||||
|
||||
@ -69,12 +69,7 @@ href="http://llvm.cs.uiuc.edu/releases/">releases page</a>.</p>
|
||||
|
||||
<div class="doc_text">
|
||||
|
||||
<p>This is the fourth public release of the LLVM compiler infrastructure. This
|
||||
release primarily improves the <a href="#codequality">performance of the
|
||||
code</a> produced by all aspects of the LLVM compiler, adds many <a
|
||||
href="#newfeatures">new features</a>, <a href="#bugfix">fixes a few
|
||||
bugs</a>, speeds up the compiler, and introduces a new (experimental)
|
||||
PowerPC code generator.</p>
|
||||
<p>This is the fifth public release of the LLVM compiler infrastructure.</p>
|
||||
|
||||
<p> At this time, LLVM is known to correctly compile and run all C & C++
|
||||
SPEC CPU95 & 2000 benchmarks, the Olden benchmarks, and the Ptrdist
|
||||
@ -91,67 +86,7 @@ with a broad variety of C++ programs.</p>
|
||||
<div class="doc_text">
|
||||
|
||||
<ol>
|
||||
<li>The LLVM <a href="LangRef.html#i_select"><tt>select</tt></a> instruction is
|
||||
now fully implemented and supported by all transformations, native code
|
||||
generators, and the interpreter.</li>
|
||||
<li>Bugpoint can now narrow down code-generation bugs to a loop nest, where
|
||||
before it could only narrow them down to a function being miscompiled.</li>
|
||||
<li><a href="http://llvm.cs.uiuc.edu/PR40">Bugpoint can now debug arbitrary
|
||||
modes of llc</a> and lli, by passing them command line flags (e.g.
|
||||
<tt>-regalloc=linearscan</tt>).</li>
|
||||
<li>The Control Flow Graph in the native code generators is no longer
|
||||
constrained to be the same as the CFG for the LLVM input code.</li>
|
||||
<li>The LLVM induction variable analysis routines have been rewritten.</li>
|
||||
<li>LLVM now has new loop unrolling and loop unswitching passes.</li>
|
||||
<li>The induction variable substitution pass performs linear function test
|
||||
replacement and exit value replacement optimizations.</li>
|
||||
<li>LLVM now has first-class support for <a
|
||||
href="GarbageCollection.html">Accurate Garbage Collection</a>, enabling the use
|
||||
of aggressive copying and generational collectors.</li>
|
||||
<li>LLVM now includes a simple implementation of <a
|
||||
href="AliasAnalysis.html#anders-aa">Andersen's interprocedural alias
|
||||
analysis</a> algorithm.</li>
|
||||
<li>Bugpoint can <a href="http://llvm.cs.uiuc.edu/PR327">extract individual
|
||||
basic blocks</a> to track down reduce miscompilation testcases.</li>
|
||||
<li>LLVM and the C front-end now work under Win32 using the
|
||||
<a href="http://www.cygwin.com">Cygwin</a> runtime libraries.
|
||||
This includes the JIT compiler.</li>
|
||||
<li>The LLVM code generator is now being <a
|
||||
href="CodeGenerator.html">documented</a>.</li>
|
||||
<li>LLVM includes a new tool, <a
|
||||
href="CommandGuide/html/llvm-bcanalyzer.html">llvm-bcanalyzer</a>, This tool
|
||||
can compute various statistics and dump information about LLVM bytecode
|
||||
encoding.</li>
|
||||
<li>The <a href="BytecodeFormat.html">LLVM bytecode file format</a> is now
|
||||
documented.</li>
|
||||
<li>LLVM now provides an <a
|
||||
href="LangRef.html#i_isunordered">llvm.isunordered</a> intrinsic for efficient
|
||||
implementation of unordered floating point comparisons.</li>
|
||||
<li>The llvmgcc front-end now supports the GCC builtins for ISO C99 floating
|
||||
point comparison macros (e.g., <tt>__builtin_islessequal</tt>).</li>
|
||||
<li>We now generate <a href="CommandGuide/">HTML documentation and man pages</a>
|
||||
for the tools from a single source (perl-style POD files).</li>
|
||||
<li>The LLVM code generator can now dynamically load targets from shared
|
||||
objects.</li>
|
||||
<li>LLVM now includes a "skeleton" target, which makes it easier to get
|
||||
started porting LLVM to new architectures.</li>
|
||||
<li>The linear scan register allocator is now enabled by default in the
|
||||
target-independent code generator.</li>
|
||||
<li>LLVM now includes a dead store elimination pass.</li>
|
||||
<li>Bugpoint can now debug miscompilations that lead to the program going
|
||||
into an infinite loop.</li>
|
||||
<li>LLVM now provides interfaces to support ML-style pattern matching on the
|
||||
LLVM IR.</li>
|
||||
<li>LLVM now includes a <a
|
||||
href="AliasAnalysis.html#globalsmodref">context-sensitive mod/ref analysis</a>
|
||||
for global variables, which is now enabled by default in gccld.</li>
|
||||
<li>LLVM can now autogenerate assembly printers for code generators from the
|
||||
tablegen description of the target (before they were hand coded).</li>
|
||||
<li>All LLVM tools will now respond to the
|
||||
<a href="http://llvm.cs.uiuc.edu/PR413"><tt>--version</tt> option</a> which
|
||||
will tell you the version of LLVM on which the tool is based.</li>
|
||||
<li>An experimental PowerPC backend has been added, capable of compiling several
|
||||
SPEC benchmarks.</li>
|
||||
<li></li>
|
||||
</ol>
|
||||
|
||||
</div>
|
||||
@ -165,18 +100,8 @@ In this release, the following missing features were implemented:
|
||||
<div class="doc_text">
|
||||
|
||||
<ol>
|
||||
<li><a href="http://llvm.cs.uiuc.edu/PR82">LLVM cannot handle structures with
|
||||
more than 256 elements</a></li>
|
||||
<li><a href="http://llvm.cs.uiuc.edu/PR38">[bugpoint] External functions used in
|
||||
non-instruction entities, such as global constant initializer</a></li>
|
||||
<li><a href="http://llvm.cs.uiuc.edu/PR178">Stacker does not handle targets
|
||||
with 64-bit pointers.</a></li>
|
||||
<li><a href="http://llvm.cs.uiuc.edu/PR290">Bugpoint doesn't support
|
||||
uses of external fns by immediate constant exprs</a></li>
|
||||
<li><a href="http://llvm.cs.uiuc.edu/PR407">Can't add function passes that
|
||||
depend on immutable passes to the FunctionPassManager</a>.</li>
|
||||
<li><a href="http://llvm.cs.uiuc.edu/PR308">Archive file reader doesn't
|
||||
understand abbreviated names in headers</a></li>
|
||||
<li><a href="http://llvm.org/PR419">JIT interface should support arbitrary
|
||||
calls</a></li>
|
||||
</ol>
|
||||
|
||||
</div>
|
||||
@ -190,28 +115,7 @@ issues were fixed:</a>
|
||||
<div class="doc_text">
|
||||
|
||||
<ol>
|
||||
<li><a href="http://llvm.cs.uiuc.edu/PR305">LLVM tools will happily spew
|
||||
bytecode onto your terminal</a></li>
|
||||
<li><a href="http://llvm.cs.uiuc.edu/PR329">[llvmgcc] type names are not emitted
|
||||
for structure typedefs</a></li>
|
||||
<li>All documentation is now conformant to the HTML 4.01 (Strict) level.</li>
|
||||
<li>The spurious "WARNING: Found global types that are not compatible" warning
|
||||
produced when linking C++ programs has been fixed.</li>
|
||||
<li><a href="http://llvm.cs.uiuc.edu/PR391">lli Doesn't Handle Exceptions From
|
||||
Bytecode Reader</a></li>
|
||||
<li><a href="http://llvm.cs.uiuc.edu/PR392">Global Vars Have (Somewhat) Limited
|
||||
Type Range</a></li>
|
||||
<li><a href="http://llvm.cs.uiuc.edu/PR341">operator<< on a Value* now
|
||||
prints the address of the object instead of its contents.</a></li>
|
||||
<li><a href="http://llvm.cs.uiuc.edu/PR402">Bytecode Enhancements
|
||||
Needed</a></li>
|
||||
<li><a href="http://llvm.cs.uiuc.edu/PR404">[loopsimplify] Loop simplify is
|
||||
really slow on 252.eon</a></li>
|
||||
<li><a href="Http://llvm.cs.uiuc.edu/PR122">[code-cleanup] SymbolTable class
|
||||
cleanup, Type should not derive from Value, eliminate ConstantPointerRef
|
||||
class</a>.</li>
|
||||
<li>The memory footprint of the LLVM IR has been reduced substantially.</li>
|
||||
<li>The LLVM linker and many core classes have been sped up substantially.</li>
|
||||
<li></li>
|
||||
</ol>
|
||||
|
||||
</div>
|
||||
@ -223,14 +127,7 @@ In this release, the following build problems were fixed:
|
||||
|
||||
<div class="doc_text">
|
||||
<ol>
|
||||
<li><a href="http://llvm.cs.uiuc.edu/PR301">Minor configure bugs with
|
||||
-disable/enable-povray and -disable-spec</a></li>
|
||||
<li><a href="http://llvm.cs.uiuc.edu/PR289">shell scripts output by gccld don't
|
||||
work if you change PATH</a></li>
|
||||
<li><a href="http://llvm.cs.uiuc.edu/PR364">[llvmgcc] llvmgcc does not compile
|
||||
with gcc 3.4</a></li>
|
||||
<li><a href="http://llvm.cs.uiuc.edu/PR373">[llvmgcc] obstack.h relies on
|
||||
obsolete casts-as-lvalues GCC extension</a></li>
|
||||
<li></li>
|
||||
</ol>
|
||||
</div>
|
||||
|
||||
@ -242,51 +139,7 @@ improvements:</a>
|
||||
|
||||
<div class="doc_text">
|
||||
<ol>
|
||||
<li>Fixed: <a href="http://llvm.cs.uiuc.edu/PR309">[vmcore] Code quality problem
|
||||
due to long operand of getelementptr</a></li>
|
||||
|
||||
<li>The X86 backend now generates substantially better code for 64-bit integer
|
||||
and floating point operations.</li>
|
||||
|
||||
<li>The -inline pass no longer inlines mutually recursive functions until it
|
||||
hits the inlining threshold.</li>
|
||||
|
||||
<li>The -inline pass no longer misses obvious inlining opportunities just
|
||||
because the callee eventually calls into an external function.</li>
|
||||
|
||||
<li>The -simplifycfg pass can now "if convert" simple statements into the
|
||||
<tt>select</tt> instruction.</li>
|
||||
|
||||
<li>The -loopsimplify pass can now break <a
|
||||
href="http://llvm.cs.uiuc.edu/PR35">natural loops with multiple backedges</a>
|
||||
into multiple nested loops. This enables a variety of subsequent
|
||||
optimizations.</li>
|
||||
|
||||
<li>The -adce pass can now eliminate calls to functions that do not not write to
|
||||
memory.</li>
|
||||
|
||||
<li>The link-time optimizer now runs the -prune-eh pass (to remove unused
|
||||
exception handlers).</li>
|
||||
|
||||
<li>The link-time optimizer now runs dead store elimination and uses a simple
|
||||
interprocedural alias analysis.</li>
|
||||
|
||||
<li>The -simplifycfg pass can now eliminate simple correlated branches (such as
|
||||
"<tt>if (A < B && A < B)</tt>", and can turn short-circuiting
|
||||
operators into the strict versions when useful (such as "<tt>if (A < B || A
|
||||
> C)</tt>" into "<tt>if (A < B | A > C)</tt>"</li>
|
||||
|
||||
<li>LLVM now has infrastructure for (simple and sparse conditional) constant
|
||||
propagation of function calls. It currently supports a few math library
|
||||
functions like sqrt/sin/cos/etc.</li>
|
||||
|
||||
<li>The C backend now emits <a href="http://llvm.cs.uiuc.edu/PR334">syntactic
|
||||
loops</a> in the code to help C compilers whose optimizers do not recognize
|
||||
loops formed from gotos (like GCC).</li>
|
||||
|
||||
<li>The SparcV9 backend no longers <a
|
||||
href="http://llvm.cs.uiuc.edu/PR368">spills the null constant to the constant
|
||||
pool</a>.</li>
|
||||
<li></li>
|
||||
</ol>
|
||||
</div>
|
||||
|
||||
@ -301,38 +154,13 @@ were fixed:</a>
|
||||
<p>Bugs fixed in the LLVM Core:</p>
|
||||
|
||||
<ol>
|
||||
<li><a href="http://llvm.cs.uiuc.edu/PR306">[loopsimplify] Loop simplify
|
||||
incorrectly updates dominator information</a></li>
|
||||
<li><a href="http://llvm.cs.uiuc.edu/PR310">[tailduplicate] DemoteRegToStack
|
||||
breaks SSA form</a></li>
|
||||
<li><a href="http://llvm.cs.uiuc.edu/PR313">[X86] JIT miscompiles unsigned short
|
||||
to floating point cast</a></li>
|
||||
<li><a href="http://llvm.cs.uiuc.edu/PR330">[vmcore] Linker causes erroneous
|
||||
asssertion</a></li>
|
||||
<li><a href="http://llvm.cs.uiuc.edu/PR332">[adce] Crash handling unreachable
|
||||
code that unwinds</a></li>
|
||||
<li><a href="http://llvm.cs.uiuc.edu/PR333">[sparcv9] LLC can't emit 2 functions
|
||||
of the same name, both having constant pools</a></li>
|
||||
<li><a href="http://llvm.cs.uiuc.edu/PR337">[livevar] Live variables missed
|
||||
physical register use of aliased definition</a></li>
|
||||
<li><a href="http://llvm.cs.uiuc.edu/PR369">[X86] stackifier crash on floating
|
||||
point setcc X, X</a></li>
|
||||
<li></li>
|
||||
</ol>
|
||||
|
||||
<p>Bugs in the C/C++ front-end:</p>
|
||||
|
||||
<ol>
|
||||
<li><a href="http://llvm.cs.uiuc.edu/PR298">[llvmgcc] Variable length array
|
||||
indexing miscompiled</a></li>
|
||||
<li><a href="http://llvm.cs.uiuc.edu/PR326">[llvmgcc] Crash on use of undeclared
|
||||
enum type</a></li>
|
||||
<li><a href="http://llvm.cs.uiuc.edu/PR355">[llvmgcc] Errors handling function
|
||||
prototypes that take opaque structs by-value</a></li>
|
||||
<li><a href="http://llvm.cs.uiuc.edu/PR374">[llvmgcc] Crash compiling variable
|
||||
length array of structures</a></li>
|
||||
<li><a href="http://llvm.cs.uiuc.edu/PR377">[llvmgcc] miscompilation of staticly
|
||||
initialized unsigned bitfields</a></li>
|
||||
<li><a href="http://llvm.cs.uiuc.edu/PR396">[llvm-gcc] Crash casting function to void</a></li>
|
||||
<li></li>
|
||||
</ol>
|
||||
</div>
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user