blob: b090995da10d5d14e310cfd102eb122897fb942f [file] [log] [blame]
Misha Brukman80731b92003-11-22 00:38:41 +00001<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
2 "http://www.w3.org/TR/html4/strict.dtd">
3<html>
4<head>
Reid Spencere4190fa2004-11-18 18:38:58 +00005 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
Misha Brukman80731b92003-11-22 00:38:41 +00006 <link rel="stylesheet" href="llvm.css" type="text/css">
Chris Lattner9f2a83e2011-12-13 17:55:30 +00007 <title>LLVM 3.1 Release Notes</title>
Misha Brukman80731b92003-11-22 00:38:41 +00008</head>
9<body>
Chris Lattner3d482502003-10-02 04:57:28 +000010
Chris Lattner9f2a83e2011-12-13 17:55:30 +000011<h1>LLVM 3.1 Release Notes</h1>
Mikhail Glushenkov024f7cf2008-10-13 02:08:34 +000012
Jakub Staszakd64c99b2011-12-06 23:33:07 +000013<div>
14<img style="float:right" src="http://llvm.org/img/DragonSmall.png"
15 width="136" height="136" alt="LLVM Dragon Logo">
16</div>
Chris Lattnerc871bac2010-03-17 04:02:39 +000017
Chris Lattner3d482502003-10-02 04:57:28 +000018<ol>
Misha Brukman80731b92003-11-22 00:38:41 +000019 <li><a href="#intro">Introduction</a></li>
Chris Lattnerf5cd9862008-10-13 18:01:01 +000020 <li><a href="#subproj">Sub-project Status Update</a></li>
Chris Lattner9f2a83e2011-12-13 17:55:30 +000021 <li><a href="#externalproj">External Projects Using LLVM 3.1</a></li>
22 <li><a href="#whatsnew">What's New in LLVM?</a></li>
Chris Lattner77a51732004-04-30 22:17:12 +000023 <li><a href="GettingStarted.html">Installation Instructions</a></li>
Dan Gohmanad888912008-10-14 16:23:02 +000024 <li><a href="#knownproblems">Known Problems</a></li>
Misha Brukman80731b92003-11-22 00:38:41 +000025 <li><a href="#additionalinfo">Additional Information</a></li>
Chris Lattner3d482502003-10-02 04:57:28 +000026</ol>
27
Chris Lattner020e1fc2004-05-23 21:07:27 +000028<div class="doc_author">
NAKAMURA Takumica46f5a2011-04-09 02:13:37 +000029 <p>Written by the <a href="http://llvm.org/">LLVM Team</a></p>
Misha Brukman80731b92003-11-22 00:38:41 +000030</div>
Chris Lattner3d482502003-10-02 04:57:28 +000031
Chris Lattner9f2a83e2011-12-13 17:55:30 +000032<h1 style="color:red">These are in-progress notes for the upcoming LLVM 3.1
Jeffrey Yasskin0830b972010-01-28 01:14:43 +000033release.<br>
34You may prefer the
Chris Lattner9f2a83e2011-12-13 17:55:30 +000035<a href="http://llvm.org/releases/3.0/docs/ReleaseNotes.html">LLVM 3.0
Dan Gohman62af9d22010-05-03 23:51:05 +000036Release Notes</a>.</h1>
Jeffrey Yasskin0830b972010-01-28 01:14:43 +000037
Chris Lattner3d482502003-10-02 04:57:28 +000038<!-- *********************************************************************** -->
NAKAMURA Takumi64835132011-04-18 01:17:51 +000039<h2>
Misha Brukman80731b92003-11-22 00:38:41 +000040 <a name="intro">Introduction</a>
NAKAMURA Takumi64835132011-04-18 01:17:51 +000041</h2>
Chris Lattner3d482502003-10-02 04:57:28 +000042<!-- *********************************************************************** -->
43
NAKAMURA Takumi3ad28282011-04-21 01:52:00 +000044<div>
Misha Brukman80731b92003-11-22 00:38:41 +000045
Chris Lattner1e4d5bc2008-10-13 17:57:36 +000046<p>This document contains the release notes for the LLVM Compiler
Chris Lattner9f2a83e2011-12-13 17:55:30 +000047 Infrastructure, release 3.1. Here we describe the status of LLVM, including
Chris Lattner25a77902011-11-27 18:47:37 +000048 major improvements from the previous release, improvements in various
49 subprojects of LLVM, and some of the current users of the code.
Bill Wendling16133782011-10-26 18:46:16 +000050 All LLVM releases may be downloaded from
51 the <a href="http://llvm.org/releases/">LLVM releases web site</a>.</p>
Chris Lattner62495762003-10-02 16:38:05 +000052
Chris Lattnerb5bb5972004-12-07 08:04:13 +000053<p>For more information about LLVM, including information about the latest
Bill Wendling16133782011-10-26 18:46:16 +000054 release, please check out the <a href="http://llvm.org/">main LLVM web
55 site</a>. If you have questions or comments,
56 the <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev">LLVM
57 Developer's Mailing List</a> is a good place to send them.</p>
Chris Lattner3d482502003-10-02 04:57:28 +000058
Bill Wendling16133782011-10-26 18:46:16 +000059<p>Note that if you are reading this file from a Subversion checkout or the main
60 LLVM web page, this document applies to the <i>next</i> release, not the
61 current one. To see the release notes for a specific release, please see the
62 <a href="http://llvm.org/releases/">releases page</a>.</p>
Misha Brukman80731b92003-11-22 00:38:41 +000063
64</div>
Michael J. Spencerf7a4ed72011-11-28 18:20:09 +000065
66
Chris Lattnerf5cd9862008-10-13 18:01:01 +000067<!-- *********************************************************************** -->
NAKAMURA Takumi64835132011-04-18 01:17:51 +000068<h2>
Chris Lattnerf5cd9862008-10-13 18:01:01 +000069 <a name="subproj">Sub-project Status Update</a>
NAKAMURA Takumi64835132011-04-18 01:17:51 +000070</h2>
Chris Lattnerf5cd9862008-10-13 18:01:01 +000071<!-- *********************************************************************** -->
Chris Lattner625a3d82008-06-08 21:34:41 +000072
NAKAMURA Takumi3ad28282011-04-21 01:52:00 +000073<div>
Bill Wendling16133782011-10-26 18:46:16 +000074
Chris Lattner9f2a83e2011-12-13 17:55:30 +000075<p>The LLVM 3.1 distribution currently consists of code from the core LLVM
Bill Wendling16133782011-10-26 18:46:16 +000076 repository (which roughly includes the LLVM optimizers, code generators and
Chris Lattner6d3eeec2011-11-10 20:15:40 +000077 supporting tools), and the Clang repository. In
Bill Wendling16133782011-10-26 18:46:16 +000078 addition to this code, the LLVM Project includes other sub-projects that are
79 in development. Here we include updates on these subprojects.</p>
Chris Lattnerf5cd9862008-10-13 18:01:01 +000080
Chris Lattnerc75fd522008-06-08 21:58:17 +000081<!--=========================================================================-->
NAKAMURA Takumi64835132011-04-18 01:17:51 +000082<h3>
Chris Lattner44c09cd2008-10-13 18:11:54 +000083<a name="clang">Clang: C/C++/Objective-C Frontend Toolkit</a>
NAKAMURA Takumi64835132011-04-18 01:17:51 +000084</h3>
Chris Lattnerc75fd522008-06-08 21:58:17 +000085
NAKAMURA Takumi3ad28282011-04-21 01:52:00 +000086<div>
Chris Lattnerc75fd522008-06-08 21:58:17 +000087
Chris Lattner5de7f6e2010-04-26 17:42:18 +000088<p><a href="http://clang.llvm.org/">Clang</a> is an LLVM front end for the C,
Bill Wendling16133782011-10-26 18:46:16 +000089 C++, and Objective-C languages. Clang aims to provide a better user
90 experience through expressive diagnostics, a high level of conformance to
91 language standards, fast compilation, and low memory use. Like LLVM, Clang
92 provides a modular, library-based architecture that makes it suitable for
93 creating or integrating with other development tools. Clang is considered a
94 production-quality compiler for C, Objective-C, C++ and Objective-C++ on x86
Chris Lattner25a77902011-11-27 18:47:37 +000095 (32- and 64-bit), and for Darwin/ARM targets.</p>
Chris Lattneraa61f412009-10-13 17:48:04 +000096
Chris Lattner9f2a83e2011-12-13 17:55:30 +000097<p>In the LLVM 3.1 time-frame, the Clang team has made many improvements:</p>
Douglas Gregor936c75b2011-10-15 00:48:01 +000098<ul>
Chris Lattner9f2a83e2011-12-13 17:55:30 +000099 <li>...</li>
Douglas Gregor936c75b2011-10-15 00:48:01 +0000100</ul>
Chris Lattner9f2a83e2011-12-13 17:55:30 +0000101
102 <p>For more details about the changes to Clang since the 2.9 release, see the
Chandler Carruth60062ed2011-11-29 00:32:43 +0000103<a href="http://clang.llvm.org/docs/ReleaseNotes.html">Clang release notes</a>
104</p>
Douglas Gregor936c75b2011-10-15 00:48:01 +0000105
Michael J. Spencerf7a4ed72011-11-28 18:20:09 +0000106
Duncan Sandsce5d9ae2011-04-06 08:07:40 +0000107<p>If Clang rejects your code but another compiler accepts it, please take a
Bill Wendling16133782011-10-26 18:46:16 +0000108 look at the <a href="http://clang.llvm.org/compatibility.html">language
109 compatibility</a> guide to make sure this is not intentional or a known
110 issue.</p>
Bill Wendlingef362462008-10-27 09:27:33 +0000111
Chris Lattner44c09cd2008-10-13 18:11:54 +0000112</div>
113
114<!--=========================================================================-->
NAKAMURA Takumi64835132011-04-18 01:17:51 +0000115<h3>
Duncan Sands1cd78982011-04-04 11:09:08 +0000116<a name="dragonegg">DragonEgg: GCC front-ends, LLVM back-end</a>
NAKAMURA Takumi64835132011-04-18 01:17:51 +0000117</h3>
Chris Lattneraa61f412009-10-13 17:48:04 +0000118
NAKAMURA Takumi3ad28282011-04-21 01:52:00 +0000119<div>
Bill Wendling16133782011-10-26 18:46:16 +0000120<p><a href="http://dragonegg.llvm.org/">DragonEgg</a> is a
121 <a href="http://gcc.gnu.org/wiki/plugins">gcc plugin</a> that replaces GCC's
Duncan Sandsa294c542011-11-10 18:44:29 +0000122 optimizers and code generators with LLVM's. It works with gcc-4.5 or gcc-4.6,
123 targets the x86-32 and x86-64 processor families, and has been successfully
124 used on the Darwin, FreeBSD, KFreeBSD, Linux and OpenBSD platforms. It fully
125 supports Ada, C, C++ and Fortran. It has partial support for Go, Java, Obj-C
126 and Obj-C++.</p>
Duncan Sands92452b92010-04-02 09:23:15 +0000127
Chris Lattner9f2a83e2011-12-13 17:55:30 +0000128<p>The 3.1 release has the following notable changes:</p>
Bill Wendling16133782011-10-26 18:46:16 +0000129
Chris Lattner25a77902011-11-27 18:47:37 +0000130 <ul>
Duncan Sandsa294c542011-11-10 18:44:29 +0000131
Chris Lattner9f2a83e2011-12-13 17:55:30 +0000132 <li>...</li>
Duncan Sandsa294c542011-11-10 18:44:29 +0000133
Duncan Sands7f9a0dc2010-09-30 17:37:34 +0000134</ul>
Chris Lattneraa61f412009-10-13 17:48:04 +0000135
136</div>
137
Chris Lattner120804a2010-10-03 23:49:06 +0000138<!--=========================================================================-->
NAKAMURA Takumi64835132011-04-18 01:17:51 +0000139<h3>
Chris Lattner120804a2010-10-03 23:49:06 +0000140<a name="compiler-rt">compiler-rt: Compiler Runtime Library</a>
NAKAMURA Takumi64835132011-04-18 01:17:51 +0000141</h3>
Chris Lattner120804a2010-10-03 23:49:06 +0000142
NAKAMURA Takumi3ad28282011-04-21 01:52:00 +0000143<div>
Bill Wendling16133782011-10-26 18:46:16 +0000144
145<p>The new LLVM <a href="http://compiler-rt.llvm.org/">compiler-rt project</a>
146 is a simple library that provides an implementation of the low-level
147 target-specific hooks required by code generation and other runtime
148 components. For example, when compiling for a 32-bit target, converting a
149 double to a 64-bit unsigned integer is compiled into a runtime call to the
150 "__fixunsdfdi" function. The compiler-rt library provides highly optimized
151 implementations of this and other low-level routines (some are 3x faster than
152 the equivalent libgcc routines).</p>
Chris Lattner120804a2010-10-03 23:49:06 +0000153
Chris Lattner9f2a83e2011-12-13 17:55:30 +0000154<p>....</p>
Chris Lattner120804a2010-10-03 23:49:06 +0000155
156</div>
Chris Lattneraa61f412009-10-13 17:48:04 +0000157
158<!--=========================================================================-->
NAKAMURA Takumi64835132011-04-18 01:17:51 +0000159<h3>
Chris Lattner342f9572010-09-29 05:30:03 +0000160<a name="lldb">LLDB: Low Level Debugger</a>
NAKAMURA Takumi64835132011-04-18 01:17:51 +0000161</h3>
Chris Lattner342f9572010-09-29 05:30:03 +0000162
NAKAMURA Takumi3ad28282011-04-21 01:52:00 +0000163<div>
Michael J. Spencerf7a4ed72011-11-28 18:20:09 +0000164
Chris Lattnere9a31c42011-11-27 18:53:41 +0000165<p>LLDB is a ground-up implementation of a command line debugger, as well as a
166 debugger API that can be used from other applications. LLDB makes use of the
167 Clang parser to provide high-fidelity expression parsing (particularly for
168 C++) and uses the LLVM JIT for target support.</p>
Chris Lattner342f9572010-09-29 05:30:03 +0000169
Chris Lattner9f2a83e2011-12-13 17:55:30 +0000170<p>...</p>
Chris Lattner342f9572010-09-29 05:30:03 +0000171
172</div>
173
174<!--=========================================================================-->
NAKAMURA Takumi64835132011-04-18 01:17:51 +0000175<h3>
Chris Lattner342f9572010-09-29 05:30:03 +0000176<a name="libc++">libc++: C++ Standard Library</a>
NAKAMURA Takumi64835132011-04-18 01:17:51 +0000177</h3>
Chris Lattner342f9572010-09-29 05:30:03 +0000178
NAKAMURA Takumi3ad28282011-04-21 01:52:00 +0000179<div>
Chris Lattner342f9572010-09-29 05:30:03 +0000180
Bill Wendling16133782011-10-26 18:46:16 +0000181<p>Like compiler_rt, libc++ is now <a href="DeveloperPolicy.html#license">dual
182 licensed</a> under the MIT and UIUC license, allowing it to be used more
183 permissively.</p>
Chris Lattner342f9572010-09-29 05:30:03 +0000184
Chris Lattner9f2a83e2011-12-13 17:55:30 +0000185<p>...</p>
David Chisnall07618782011-11-26 10:56:17 +0000186
Chris Lattner342f9572010-09-29 05:30:03 +0000187</div>
188
Chris Lattnercaefe932011-04-07 03:08:22 +0000189<!--=========================================================================-->
NAKAMURA Takumi64835132011-04-18 01:17:51 +0000190<h3>
Chris Lattnercaefe932011-04-07 03:08:22 +0000191<a name="vmkit">VMKit</a>
NAKAMURA Takumi64835132011-04-18 01:17:51 +0000192</h3>
Chris Lattnercaefe932011-04-07 03:08:22 +0000193
NAKAMURA Takumi3ad28282011-04-21 01:52:00 +0000194<div>
Bill Wendling16133782011-10-26 18:46:16 +0000195
Nicolas Geoffray5e515792011-11-10 23:37:56 +0000196 <p>The <a href="http://vmkit.llvm.org/">VMKit project</a> is an
197 implementation of a Java Virtual Machine (Java VM or JVM) that uses LLVM for
198 static and just-in-time compilation.
199
Chris Lattner9f2a83e2011-12-13 17:55:30 +0000200 <p>In the LLVM 3.1 time-frame, VMKit has had significant improvements on both
Nicolas Geoffray5e515792011-11-10 23:37:56 +0000201 runtime and startup performance:</p>
202
203 <ul>
Chris Lattner9f2a83e2011-12-13 17:55:30 +0000204 <li>...</li>
Nicolas Geoffray5e515792011-11-10 23:37:56 +0000205 </ul>
Bill Wendling16133782011-10-26 18:46:16 +0000206
Chris Lattnercaefe932011-04-07 03:08:22 +0000207</div>
Michael J. Spencerf7a4ed72011-11-28 18:20:09 +0000208
NAKAMURA Takumi3ad28282011-04-21 01:52:00 +0000209</div>
Daniel Dunbar8fbd8aa2010-10-04 17:39:47 +0000210
Chris Lattner53e06f92009-02-26 22:33:38 +0000211<!-- *********************************************************************** -->
NAKAMURA Takumi64835132011-04-18 01:17:51 +0000212<h2>
Chris Lattner9f2a83e2011-12-13 17:55:30 +0000213 <a name="externalproj">External Open Source Projects Using LLVM 3.1</a>
NAKAMURA Takumi64835132011-04-18 01:17:51 +0000214</h2>
Chris Lattner53e06f92009-02-26 22:33:38 +0000215<!-- *********************************************************************** -->
216
NAKAMURA Takumi3ad28282011-04-21 01:52:00 +0000217<div>
Chris Lattneraa61f412009-10-13 17:48:04 +0000218
219<p>An exciting aspect of LLVM is that it is used as an enabling technology for
220 a lot of other language and tools projects. This section lists some of the
Chris Lattner9f2a83e2011-12-13 17:55:30 +0000221 projects that have already been updated to work with LLVM 3.1.</p>
Chris Lattner120804a2010-10-03 23:49:06 +0000222
Chris Lattner9f2a83e2011-12-13 17:55:30 +0000223 ... to be filled in right before the release ...
Bill Wendlingfe845d52011-10-26 09:25:01 +0000224
NAKAMURA Takumi3ad28282011-04-21 01:52:00 +0000225</div>
226
Chris Lattnerc75fd522008-06-08 21:58:17 +0000227<!-- *********************************************************************** -->
NAKAMURA Takumi64835132011-04-18 01:17:51 +0000228<h2>
Chris Lattner9f2a83e2011-12-13 17:55:30 +0000229 <a name="whatsnew">What's New in LLVM 3.1?</a>
NAKAMURA Takumi64835132011-04-18 01:17:51 +0000230</h2>
Chris Lattnerc75fd522008-06-08 21:58:17 +0000231<!-- *********************************************************************** -->
232
NAKAMURA Takumi3ad28282011-04-21 01:52:00 +0000233<div>
Chris Lattnerb7bc2aa2008-06-08 22:59:35 +0000234
Chris Lattneraa61f412009-10-13 17:48:04 +0000235<p>This release includes a huge number of bug fixes, performance tweaks and
Bill Wendling16133782011-10-26 18:46:16 +0000236 minor improvements. Some of the major improvements and new features are
237 listed in this section.</p>
Chris Lattneraa61f412009-10-13 17:48:04 +0000238
Chris Lattnera67df2d2010-04-22 06:28:20 +0000239<!--=========================================================================-->
NAKAMURA Takumi64835132011-04-18 01:17:51 +0000240<h3>
Chris Lattnercdc44ed2008-02-06 18:00:06 +0000241<a name="majorfeatures">Major New Features</a>
NAKAMURA Takumi64835132011-04-18 01:17:51 +0000242</h3>
Chris Lattnercdc44ed2008-02-06 18:00:06 +0000243
NAKAMURA Takumi3ad28282011-04-21 01:52:00 +0000244<div>
Chris Lattnercdc44ed2008-02-06 18:00:06 +0000245
Chris Lattner25a77902011-11-27 18:47:37 +0000246 <!-- Features that need text if they're finished for 3.1:
247 ARM EHABI
248 combiner-aa?
249 strong phi elim
250 loop dependence analysis
251 CorrelatedValuePropagation
252 lib/Transforms/IPO/MergeFunctions.cpp => consider for 3.1.
Chris Lattner64421972011-11-27 20:51:47 +0000253 Integrated assembler on by default for arm/thumb?
254
Chris Lattner25a77902011-11-27 18:47:37 +0000255 -->
256
Chris Lattner64421972011-11-27 20:51:47 +0000257 <!-- Near dead:
Chris Lattner92f21832011-11-15 22:13:27 +0000258 Analysis/RegionInfo.h + Dom Frontiers
259 SparseBitVector: used in LiveVar.
Chris Lattner3dcdc292011-11-27 08:32:32 +0000260 llvm/lib/Archive - replace with lib object?
Chris Lattner64421972011-11-27 20:51:47 +0000261 -->
Chris Lattner614d0392011-11-25 20:33:27 +0000262
Chris Lattner9f2a83e2011-12-13 17:55:30 +0000263<p>LLVM 3.1 includes several major changes and big features:</p>
Bill Wendlingd535a6e2011-10-26 18:33:01 +0000264
Chris Lattnerb7112222008-06-05 06:25:56 +0000265<ul>
Evan Chengd6471092011-12-14 22:57:45 +0000266 <li><a href="../tools/clang/docs/AddressSanitizer.html">AddressSanitizer</a>,
267 a fast memory error detector.</li>
268 <li><a href="CodeGenerator.html#machineinstrbundle">MachineInstr Bundles</a>,
269 Support to model instruction bundling / packing.</li>
Chris Lattner9f2a83e2011-12-13 17:55:30 +0000270 <li>....</li>
Chris Lattnerdd6acc02008-02-10 08:17:19 +0000271</ul>
Mikhail Glushenkov024f7cf2008-10-13 02:08:34 +0000272
Bill Wendlingd535a6e2011-10-26 18:33:01 +0000273</div>
274
Michael J. Spencerf7a4ed72011-11-28 18:20:09 +0000275
Chris Lattner48571902011-11-27 19:26:30 +0000276<!--=========================================================================-->
277<h3>
278<a name="coreimprovements">LLVM IR and Core Improvements</a>
279</h3>
280
281<div>
282
283<p>LLVM IR has several new features for better support of new targets and that
284 expose new optimization opportunities:</p>
285
Chris Lattner64497642011-11-27 21:30:28 +0000286 <ul>
Dan Gohman948ec422011-12-20 01:10:56 +0000287 <li>IR support for half float</li>
Nadav Rotem1a0ae422011-12-20 08:02:50 +0000288 <li>IR support for vectors of pointers, including vector GEPs.</li>
Chris Lattner9f2a83e2011-12-13 17:55:30 +0000289 <li>....</li>
Chris Lattner64497642011-11-27 21:30:28 +0000290 </ul>
Andrew Trick6c0a11b2011-11-06 17:59:24 +0000291</div>
292
293<!--=========================================================================-->
294<h3>
Chris Lattner2b8a52e2008-02-10 07:46:44 +0000295<a name="optimizer">Optimizer Improvements</a>
NAKAMURA Takumi64835132011-04-18 01:17:51 +0000296</h3>
Chris Lattner2b8a52e2008-02-10 07:46:44 +0000297
NAKAMURA Takumi3ad28282011-04-21 01:52:00 +0000298<div>
Chris Lattner2b8a52e2008-02-10 07:46:44 +0000299
Chris Lattner64497642011-11-27 21:30:28 +0000300<p>In addition to many minor performance tweaks and bug fixes, this
Bill Wendling16133782011-10-26 18:46:16 +0000301 release includes a few major enhancements and additions to the
302 optimizers:</p>
Chris Lattner2b8a52e2008-02-10 07:46:44 +0000303
304<ul>
Chris Lattner9f2a83e2011-12-13 17:55:30 +0000305 <li>....</li>
Chris Lattnerfcc65a72010-10-04 02:42:39 +0000306</ul>
307
Chris Lattneraa61f412009-10-13 17:48:04 +0000308</div>
Chris Lattnerd1094e02009-03-02 02:37:32 +0000309
Chris Lattner7795ea92008-06-08 02:45:07 +0000310<!--=========================================================================-->
NAKAMURA Takumi64835132011-04-18 01:17:51 +0000311<h3>
Chris Lattnerf25bc192010-09-30 16:31:33 +0000312<a name="mc">MC Level Improvements</a>
NAKAMURA Takumi64835132011-04-18 01:17:51 +0000313</h3>
Chris Lattnerf25bc192010-09-30 16:31:33 +0000314
NAKAMURA Takumi3ad28282011-04-21 01:52:00 +0000315<div>
Bill Wendling16133782011-10-26 18:46:16 +0000316
317<p>The LLVM Machine Code (aka MC) subsystem was created to solve a number of
318 problems in the realm of assembly, disassembly, object file format handling,
319 and a number of other related areas that CPU instruction-set level tools work
Chris Lattner7257f762011-11-27 22:03:34 +0000320 in. For more information, please see
321 the <a href="http://blog.llvm.org/2010/04/intro-to-llvm-mc-project.html">Intro
322 to the LLVM MC Project Blog Post</a>.</p>
Chris Lattnerbf1cf672010-10-02 21:59:30 +0000323
Chris Lattnerbf1cf672010-10-02 21:59:30 +0000324<ul>
Chris Lattner9f2a83e2011-12-13 17:55:30 +0000325 <li>....</li>
Chris Lattnerbf1cf672010-10-02 21:59:30 +0000326</ul>
327
NAKAMURA Takumi8d89b8e2011-04-05 08:24:22 +0000328</div>
Chris Lattnerf25bc192010-09-30 16:31:33 +0000329
Chris Lattnerf25bc192010-09-30 16:31:33 +0000330<!--=========================================================================-->
NAKAMURA Takumi64835132011-04-18 01:17:51 +0000331<h3>
Chris Lattnerd434bfb2009-03-02 03:24:11 +0000332<a name="codegen">Target Independent Code Generator Improvements</a>
NAKAMURA Takumi64835132011-04-18 01:17:51 +0000333</h3>
Chris Lattner7795ea92008-06-08 02:45:07 +0000334
NAKAMURA Takumi3ad28282011-04-21 01:52:00 +0000335<div>
Chris Lattner7795ea92008-06-08 02:45:07 +0000336
Nadav Rotem1a0ae422011-12-20 08:02:50 +0000337<p>We have changed the way that the Type Legalizer legalizes vectors.
338 The type legalizer now attempts to promote integer elements.
339 This enabled the implementation of vector-select.
340 Additionally, we see a performance boost on workloads which use vectors of chars and shorts, since they are now promoted
341 to 32-bit types, which are better supported by the SIMD instruction set.
342 Floating point types are still widened as before.</p>
343
344
Mikhail Glushenkov25422542009-03-01 18:09:47 +0000345<p>We have put a significant amount of work into the code generator
Bill Wendling16133782011-10-26 18:46:16 +0000346 infrastructure, which allows us to implement more aggressive algorithms and
347 make it run faster:</p>
Chris Lattner7795ea92008-06-08 02:45:07 +0000348
349<ul>
Jakob Stoklund Olesen24159e32011-12-19 16:53:40 +0000350 <li>TableGen can now synthesize register classes that are only needed to
351 represent combinations of constraints from instructions and sub-registers.
352 The synthetic register classes inherit most of their properties form their
353 closest user-defined super-class.</li>
Jakob Stoklund Olesend19d3ca2012-01-05 00:26:49 +0000354 <li><code>MachineRegisterInfo</code> now allows the reserved registers to be
355 frozen when register allocation starts. Target hooks should use the
356 <code>MRI->canReserveReg(FramePtr)</code> method to avoid accidentally
357 disabling frame pointer elimination during register allocation.</li>
Jakob Stoklund Olesen374ed322012-01-16 19:22:00 +0000358 <li>A new kind of <code>MachineOperand</code> provides a compact
359 representation of large clobber lists on call instructions. The register
360 mask operand references a bit mask of preserved registers. Everything else is
361 clobbered.</li>
Chris Lattner0a1fd102007-09-21 03:54:09 +0000362</ul>
Chris Lattner0a1fd102007-09-21 03:54:09 +0000363</div>
364
Chris Lattnerd1094e02009-03-02 02:37:32 +0000365<!--=========================================================================-->
NAKAMURA Takumi64835132011-04-18 01:17:51 +0000366<h3>
Chris Lattnerd1094e02009-03-02 02:37:32 +0000367<a name="x86">X86-32 and X86-64 Target Improvements</a>
NAKAMURA Takumi64835132011-04-18 01:17:51 +0000368</h3>
Chris Lattnerd1094e02009-03-02 02:37:32 +0000369
NAKAMURA Takumi3ad28282011-04-21 01:52:00 +0000370<div>
Bill Wendling16133782011-10-26 18:46:16 +0000371
372<p>New features and major changes in the X86 target include:</p>
Chris Lattnerd1094e02009-03-02 02:37:32 +0000373
374<ul>
Nadav Rotem1a0ae422011-12-20 08:02:50 +0000375 <li>Bug fixes and improved support for AVX1</li>
376 <li>Support for AVX2 (still incomplete at this point)</li>
Chris Lattner9f2a83e2011-12-13 17:55:30 +0000377 <li>....</li>
Chris Lattnerd1094e02009-03-02 02:37:32 +0000378</ul>
379
Chris Lattnerd1094e02009-03-02 02:37:32 +0000380</div>
Chris Lattner0a1fd102007-09-21 03:54:09 +0000381
382<!--=========================================================================-->
NAKAMURA Takumi64835132011-04-18 01:17:51 +0000383<h3>
Chris Lattneraa61f412009-10-13 17:48:04 +0000384<a name="ARM">ARM Target Improvements</a>
NAKAMURA Takumi64835132011-04-18 01:17:51 +0000385</h3>
Chris Lattnerc92d7692009-03-01 02:30:21 +0000386
NAKAMURA Takumi3ad28282011-04-21 01:52:00 +0000387<div>
Bill Wendling16133782011-10-26 18:46:16 +0000388
389<p>New features of the ARM target include:</p>
Chris Lattnerc92d7692009-03-01 02:30:21 +0000390
391<ul>
Jakob Stoklund Olesen2a05f692011-12-16 16:07:41 +0000392 <li>The constant island pass now supports basic block and constant pool entry
393 alignments greater than 4 bytes.</li> </ul>
Chris Lattneraa61f412009-10-13 17:48:04 +0000394</div>
Chris Lattner212a0862011-11-15 22:23:46 +0000395
Michael J. Spencerf7a4ed72011-11-28 18:20:09 +0000396
Chris Lattnerc3a2c982011-04-06 00:45:11 +0000397<!--=========================================================================-->
NAKAMURA Takumi64835132011-04-18 01:17:51 +0000398<h3>
Akira Hatanakab89a58d2011-11-15 21:33:05 +0000399<a name="MIPS">MIPS Target Improvements</a>
400</h3>
401
402<div>
403
Chris Lattner7b32d972011-11-27 22:12:32 +0000404<p>This release has seen major new work on just about every aspect of the MIPS
405 backend. Some of the major new features include:</p>
Akira Hatanakab89a58d2011-11-15 21:33:05 +0000406
407<ul>
Chris Lattner9f2a83e2011-12-13 17:55:30 +0000408 <li>....</li>
Akira Hatanakab89a58d2011-11-15 21:33:05 +0000409</ul>
410</div>
Chris Lattner212a0862011-11-15 22:23:46 +0000411
412<!--=========================================================================-->
413<h3>
Chris Lattnerc3a2c982011-04-06 00:45:11 +0000414<a name="OtherTS">Other Target Specific Improvements</a>
NAKAMURA Takumi64835132011-04-18 01:17:51 +0000415</h3>
Chris Lattnerc92d7692009-03-01 02:30:21 +0000416
NAKAMURA Takumi3ad28282011-04-21 01:52:00 +0000417<div>
Bill Wendling16133782011-10-26 18:46:16 +0000418
Chris Lattnerc3a2c982011-04-06 00:45:11 +0000419<ul>
Chris Lattner9f2a83e2011-12-13 17:55:30 +0000420 <li>....</li>
Michael J. Spencerf7a4ed72011-11-28 18:20:09 +0000421
Chris Lattnerb035c312011-11-27 22:36:22 +0000422
Chris Lattnerc3a2c982011-04-06 00:45:11 +0000423</ul>
Bill Wendling16133782011-10-26 18:46:16 +0000424
Chris Lattnerc3a2c982011-04-06 00:45:11 +0000425</div>
Chris Lattner6cb64032008-06-05 08:02:49 +0000426
427<!--=========================================================================-->
NAKAMURA Takumi64835132011-04-18 01:17:51 +0000428<h3>
Chris Lattner1e4d5bc2008-10-13 17:57:36 +0000429<a name="changes">Major Changes and Removed Features</a>
NAKAMURA Takumi64835132011-04-18 01:17:51 +0000430</h3>
Chris Lattner1e4d5bc2008-10-13 17:57:36 +0000431
NAKAMURA Takumi3ad28282011-04-21 01:52:00 +0000432<div>
Chris Lattner1e4d5bc2008-10-13 17:57:36 +0000433
Bill Wendling2d3138c2011-08-03 22:18:20 +0000434<p>If you're already an LLVM user or developer with out-of-tree changes based on
Chris Lattner9f2a83e2011-12-13 17:55:30 +0000435 LLVM 3.1, this section lists some "gotchas" that you may run into upgrading
Bill Wendling2d3138c2011-08-03 22:18:20 +0000436 from the previous release.</p>
Chris Lattner1e4d5bc2008-10-13 17:57:36 +0000437
438<ul>
Chris Lattner9f2a83e2011-12-13 17:55:30 +0000439<li>LLVM 3.1 removes support for reading LLVM 2.9 bitcode files. Going forward,
440 we aim for all future versions of LLVM to read bitcode files and .ll files
441 produced by LLVM 3.0 and later.</li>
442 <li>....</li>
Devang Pateldbf83832008-10-14 20:03:43 +0000443</ul>
Chris Lattner1e4d5bc2008-10-13 17:57:36 +0000444
Chris Lattner1e4d5bc2008-10-13 17:57:36 +0000445</div>
446
Daniel Dunbarf70898a2010-10-04 20:11:41 +0000447<!--=========================================================================-->
NAKAMURA Takumi64835132011-04-18 01:17:51 +0000448<h3>
Chris Lattnerc3a2c982011-04-06 00:45:11 +0000449<a name="api_changes">Internal API Changes</a>
NAKAMURA Takumi64835132011-04-18 01:17:51 +0000450</h3>
Daniel Dunbarf70898a2010-10-04 20:11:41 +0000451
NAKAMURA Takumi3ad28282011-04-21 01:52:00 +0000452<div>
Daniel Dunbarf70898a2010-10-04 20:11:41 +0000453
Chris Lattnerc3a2c982011-04-06 00:45:11 +0000454<p>In addition, many APIs have changed in this release. Some of the major
Bill Wendling46ffaa92011-08-02 06:20:17 +0000455 LLVM API changes are:</p>
Daniel Dunbarf70898a2010-10-04 20:11:41 +0000456
457<ul>
Chris Lattner9f2a83e2011-12-13 17:55:30 +0000458 <li>....</li>
Daniel Dunbarf70898a2010-10-04 20:11:41 +0000459</ul>
Bill Wendling16133782011-10-26 18:46:16 +0000460
Daniel Dunbarf70898a2010-10-04 20:11:41 +0000461</div>
Chris Lattner1e4d5bc2008-10-13 17:57:36 +0000462
NAKAMURA Takumi3ad28282011-04-21 01:52:00 +0000463</div>
464
Chris Lattner3d482502003-10-02 04:57:28 +0000465<!-- *********************************************************************** -->
NAKAMURA Takumi64835132011-04-18 01:17:51 +0000466<h2>
Misha Brukman80731b92003-11-22 00:38:41 +0000467 <a name="knownproblems">Known Problems</a>
NAKAMURA Takumi64835132011-04-18 01:17:51 +0000468</h2>
Chris Lattner3d482502003-10-02 04:57:28 +0000469<!-- *********************************************************************** -->
470
NAKAMURA Takumi3ad28282011-04-21 01:52:00 +0000471<div>
Misha Brukman80731b92003-11-22 00:38:41 +0000472
Chris Lattner080dd7c2011-11-27 19:38:20 +0000473<p>LLVM is generally a production quality compiler, and is used by a broad range
474 of applications and shipping in many products. That said, not every
475 subsystem is as mature as the aggregate, particularly the more obscure
476 targets. If you run into a problem, please check the <a
477 href="http://llvm.org/bugs/">LLVM bug database</a> and submit a bug if
478 there isn't already one or ask on the <a
479 href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev">LLVMdev
480 list</a>.</p>
Michael J. Spencerf7a4ed72011-11-28 18:20:09 +0000481
Chris Lattner080dd7c2011-11-27 19:38:20 +0000482 <p>Known problem areas include:</p>
Michael J. Spencerf7a4ed72011-11-28 18:20:09 +0000483
Chris Lattnerb911de42004-03-14 02:03:02 +0000484<ul>
Chris Lattner080dd7c2011-11-27 19:38:20 +0000485 <li>The Alpha, Blackfin, CellSPU, MSP430, PTX, SystemZ and
Chris Lattner64421972011-11-27 20:51:47 +0000486 XCore backends are experimental, and the Alpha, Blackfin and SystemZ
487 targets have already been removed from mainline.</li>
Bill Wendling16133782011-10-26 18:46:16 +0000488
Chris Lattner080dd7c2011-11-27 19:38:20 +0000489 <li>The integrated assembler, disassembler, and JIT is not supported by
490 several targets. If an integrated assembler is not supported, then a
491 system assembler is required. For more details, see the <a
492 href="CodeGenerator.html#targetfeatures">Target Features Matrix</a>.
493 </li>
Michael J. Spencerf7a4ed72011-11-28 18:20:09 +0000494
Chris Lattner080dd7c2011-11-27 19:38:20 +0000495 <li>The C backend has numerous problems and is not being actively maintained.
496 Depending on it for anything serious is not advised.</li>
Chris Lattnerb81f10e2006-11-18 07:51:14 +0000497</ul>
498
499</div>
John Criswell3bdbd302005-11-08 21:11:33 +0000500
Chris Lattner3d482502003-10-02 04:57:28 +0000501<!-- *********************************************************************** -->
NAKAMURA Takumi64835132011-04-18 01:17:51 +0000502<h2>
Misha Brukman80731b92003-11-22 00:38:41 +0000503 <a name="additionalinfo">Additional Information</a>
NAKAMURA Takumi64835132011-04-18 01:17:51 +0000504</h2>
Chris Lattner3d482502003-10-02 04:57:28 +0000505<!-- *********************************************************************** -->
506
NAKAMURA Takumi3ad28282011-04-21 01:52:00 +0000507<div>
Misha Brukman80731b92003-11-22 00:38:41 +0000508
Bill Wendling16133782011-10-26 18:46:16 +0000509<p>A wide variety of additional information is available on
510 the <a href="http://llvm.org/">LLVM web page</a>, in particular in
511 the <a href="http://llvm.org/docs/">documentation</a> section. The web page
512 also contains versions of the API documentation which is up-to-date with the
513 Subversion version of the source code. You can access versions of these
514 documents specific to this release by going into the "<tt>llvm/doc/</tt>"
515 directory in the LLVM tree.</p>
Chris Lattner3d482502003-10-02 04:57:28 +0000516
Misha Brukman80731b92003-11-22 00:38:41 +0000517<p>If you have any questions or comments about LLVM, please feel free to contact
Bill Wendling16133782011-10-26 18:46:16 +0000518 us via the <a href="http://llvm.org/docs/#maillist"> mailing lists</a>.</p>
Chris Lattner3d482502003-10-02 04:57:28 +0000519
Misha Brukman80731b92003-11-22 00:38:41 +0000520</div>
Chris Lattner3d482502003-10-02 04:57:28 +0000521
522<!-- *********************************************************************** -->
Chris Lattner3d482502003-10-02 04:57:28 +0000523
Misha Brukman80731b92003-11-22 00:38:41 +0000524<hr>
Misha Brukman68aab3b2003-11-22 01:23:39 +0000525<address>
Misha Brukman8834af92003-12-21 22:53:21 +0000526 <a href="http://jigsaw.w3.org/css-validator/check/referer"><img
Misha Brukman86242e12008-12-11 17:34:48 +0000527 src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="Valid CSS"></a>
Misha Brukman68aab3b2003-11-22 01:23:39 +0000528 <a href="http://validator.w3.org/check/referer"><img
Misha Brukman86242e12008-12-11 17:34:48 +0000529 src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"></a>
Misha Brukman68aab3b2003-11-22 01:23:39 +0000530
Chris Lattnere0c1df42007-05-18 00:44:29 +0000531 <a href="http://llvm.org/">LLVM Compiler Infrastructure</a><br>
Misha Brukman80731b92003-11-22 00:38:41 +0000532 Last modified: $Date$
Misha Brukman68aab3b2003-11-22 01:23:39 +0000533</address>
Chris Lattner3d482502003-10-02 04:57:28 +0000534
Misha Brukman80731b92003-11-22 00:38:41 +0000535</body>
536</html>