<ul>
<li>Something wonderful!</li>
+<li>AuroraUX / FreeBSD & OpenBSD Toolchain support.</li>
<li>Many many bugs are fixed and many features have been added.</li>
</ul>
</div>
<ul>
<li>Something wonderful!</li>
+<li>LLVM 2.6 includes a brand new experimental LLVM bindings to the Ada2005 programming language.</li>
</ul>
</div>
</div>
+<!--=========================================================================-->
+<div class="doc_subsection">
+<a name="ARM">ARM Target Improvements</a>
+</div>
+
+<div class="doc_text">
+<p>New features of the ARM target include:
+</p>
+
+<ul>
+
+<li>Preliminary support for processors, such as the Cortex-A8 and Cortex-A9,
+that implement version v7-A of the ARM architecture. The ARM backend now
+supports both the Thumb2 and Advanced SIMD (Neon) instruction sets. The
+AAPCS-VFP "hard float" calling conventions are also supported with the
+<tt>-float-abi=hard</tt> flag. These features are still somewhat experimental
+and subject to change. The Neon intrinsics, in particular, may change in future
+releases of LLVM.
+</li>
+</ul>
+
+</div>
+
<!--=========================================================================-->
<div class="doc_subsection">
<li><tt>SCEVHandle</tt> no longer exists, because reference counting is no
longer done for <tt>SCEV*</tt> objects, instead <tt>const SCEV*</tt> should be
used.</li>
+
<li>Many APIs, notably <tt>llvm::Value</tt>, now use the <tt>StringRef</tt>
and <tt>Twine</tt> classes instead of passing <tt>const char*</tt>
or <tt>std::string</tt>, as described in
the <a href="ProgrammersManual.html#string_apis">Programmer's Manual</a>. Most
-clients should be uneffected by this transition.</li>
+clients should be unaffected by this transition, unless they are used to <tt>Value::getName()</tt> returning a string. Here are some tips on updating to 2.6:
+ <ul>
+ <li><tt>getNameStr()</tt> is still available, and matches the old
+ behavior. Replacing <tt>getName()</tt> calls with this is an safe option,
+ although more efficient alternatives are now possible.</li>
+
+ <li>If you were just relying on <tt>getName()</tt> being able to be sent to
+ a <tt>std::ostream</tt>, consider migrating
+ to <tt>llvm::raw_ostream</tt>.</li>
+
+ <li>If you were using <tt>getName().c_str()</tt> to get a <tt>const
+ char*</tt> pointer to the name, you can use <tt>getName().data()</tt>.
+ Note that this string (as before), may not be the entire name if the
+ name containts embedded null characters.</li>
+
+ <li>If you were using operator plus on the result of <tt>getName()</tt> and
+ treating the result as an <tt>std::string</tt>, you can either
+ uses <tt>Twine::str</tt> to get the result as an <tt>std::string</tt>, or
+ could move to a <tt>Twine</tt> based design.</li>
+
+ <li><tt>isName()</tt> should be replaced with comparison
+ against <tt>getName()</tt> (this is now efficient).
+ </ul>
+</li>
+
+<li>The registration interfaces for backend Targets has changed (what was
+previously TargetMachineRegistry). For backend authors, see the <a href="WritingAnLLVMBackend.html#TargetRegistration">Writing An LLVM Backend</a> guide. For clients, the notable API changes are:
+ <ul>
+ <li><tt>TargetMachineRegistry</tt> has been renamed
+ to <tt>TargetRegistry</tt>.</li>
+
+ <li>Clients should move to using the <tt>TargetRegistry::lookupTarget()</tt>
+ function to find targets.</li>
+ </ul>
+</li>
+
<li>llvm-dis now fails if output file exists, instead of dumping to stdout.
FIXME: describe any other tool changes due to the raw_fd_ostream change. FIXME:
This is not an API change, maybe there should be a tool changes section?</li>
<div class="doc_text">
<ul>
+<li>Support for the Advanced SIMD (Neon) instruction set is still incomplete
+and not well tested. Some features may not work at all, and the code quality
+may be poor in some cases.</li>
<li>Thumb mode works only on ARMv6 or higher processors. On sub-ARMv6
processors, thumb programs can crash or produce wrong
results (<a href="http://llvm.org/PR1388">PR1388</a>).</li>