write Major Changes and Removed Features.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115486 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2010-10-04 01:29:06 +00:00
parent 7554771d50
commit bb11771eb6

View File

@ -886,74 +886,75 @@ it run faster:</p>
on LLVM 2.7, this section lists some "gotchas" that you may run into upgrading
from the previous release.</p>
renamed "Release" -> "Release+Asserts"; "Release-Asserts" -> "Release etc.
<ul>
<li>.ll file doesn't produce #uses comments anymore, to get them, run a .bc file
through "llvm-dis --show-annotations".</li>
<li>MSIL Backend removed.</li>
<li>ABCD and SSI passes removed.</li>
<li>'Union' LLVM IR feature removed.</li>
<li>SCCVN pass removed.</li>
<li>The build configuration machinery changed the output directory names. It
wasn't clear to many people that "Release-Asserts" build was a release build
without asserts. To make this more clear, "Release" does not include
assertions and "Release+Asserts" does (likewise, "Debug" and
"Debug+Asserts").</li>
<li>The MSIL Backend was removed, it was unsupported and broken.</li>
<li>The ABCD, SSI, and SCCVN passes were removed. These were not fully
functional and their behavior has been or will be subsumed by the
LazyValueInfo pass.</li>
<li>The LLVM IR 'Union' feature was removed. While this is a desirable feature
for LLVM IR to support, the existing implementation was half baked and
barely useful. We'd really like anyone interested to resurrect the work and
finish it for a future release.</li>
<li>If you're used to reading .ll files, you'll probably notice that .ll file
dumps don't produce #uses comments anymore. To get them, run a .bc file
through "llvm-dis --show-annotations".</li>
</ul>
<p>In addition, many APIs have changed in this release. Some of the major LLVM
API changes are:</p>
<ul>
RegisterPass<> -> INTIALIZE_PASS()
<li>LLVM 2.8 changes the internal order of operands in <a
href="http://llvm.org/doxygen/classllvm_1_1InvokeInst.html"><tt>InvokeInst</tt></a>
and <a href="http://llvm.org/doxygen/classllvm_1_1CallInst.html"><tt>CallInst</tt></a>.
To be portable across releases, resort to <tt>CallSite</tt> and the
high-level accessors, such as <tt>getCalledValue</tt> and <tt>setUnwindDest</tt>.
To be portable across releases, please use the <tt>CallSite</tt> class and the
high-level accessors, such as <tt>getCalledValue</tt> and
<tt>setUnwindDest</tt>.
</li>
<li>
You can no longer pass use_iterators directly to cast<> (and similar), because
these routines tend to perform costly dereference operations more than once. You
have to dereference the iterators yourself and pass them in.
You can no longer pass use_iterators directly to cast&lt;&gt; (and similar),
because these routines tend to perform costly dereference operations more
than once. You have to dereference the iterators yourself and pass them in.
</li>
<li>
llvm.memcpy.*, llvm.memset.*, llvm.memmove.* (and possibly other?) intrinsics
take an extra parameter now (i1 isVolatile), totaling 5 parameters.
llvm.memcpy.*, llvm.memset.*, llvm.memmove.* intrinsics take an extra
parameter now ("i1 isVolatile"), totaling 5 parameters, and the pointer
operands are now address-space qualified.
If you were creating these intrinsic calls and prototypes yourself (as opposed
to using Intrinsic::getDeclaration), you can use UpgradeIntrinsicFunction/UpgradeIntrinsicCall
to be portable accross releases.
Note that you cannot use Intrinsic::getDeclaration() in a backwards compatible
way (needs 2/3 types now, in 2.7 it needed just 1).
to using Intrinsic::getDeclaration), you can use
UpgradeIntrinsicFunction/UpgradeIntrinsicCall to be portable accross releases.
</li>
<li>
SetCurrentDebugLocation takes a DebugLoc now instead of a MDNode.
Change your code to use
SetCurrentDebugLocation(DebugLoc::getFromDILocation(...)).
</li>
<li>
VISIBILITY_HIDDEN is gone.
</li>
<li>
The <tt>RegisterPass</tt> and <tt>RegisterAnalysisGroup</tt> templates are
considered deprecated, but continue to function in LLVM 2.8. Clients are
strongly advised to use the upcoming <tt>INITIALIZE_PASS()</tt> and
<tt>INITIALIZE_AG_PASS()</tt> macros instead.
<li>
SMDiagnostic takes different parameters now. //FIXME: how to upgrade?
</li>
<li>
The constructor for the Triple class no longer tries to understand odd triple
specifications. Frontends should ensure that they only pass valid triples to
LLVM. The Triple::normalize utility method has been added to help front-ends
deal with funky triples.
</li>
<li>
Some APIs got renamed:
<ul>
<li>llvm_report_error -&gt; report_fatal_error</li>
<li>llvm_install_error_handler -&gt; install_fatal_error_handler</li>
<li>llvm::DwarfExceptionHandling -&gt; llvm::JITExceptionHandling</li>
<li>llvm_report_error -&gt; report_fatal_error</li>
<li>llvm_install_error_handler -&gt; install_fatal_error_handler</li>
<li>llvm::DwarfExceptionHandling -&gt; llvm::JITExceptionHandling</li>
<li>VISIBILITY_HIDDEN -&gt; LLVM_LIBRARY_VISIBILITY</li>
</ul>
</li>
@ -992,8 +993,8 @@ components, please contact us on the <a
href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev">LLVMdev list</a>.</p>
<ul>
<li>The Alpha, SPU, MIPS, PIC16, Blackfin, MSP430, SystemZ and MicroBlaze
backends are experimental.</li>
<li>The Alpha, Blackfin, CellSPU, MicroBlaze, MSP430, MIPS, PIC16, SystemZ
and XCore backends are experimental.</li>
<li><tt>llc</tt> "<tt>-filetype=obj</tt>" is experimental on all targets
other than darwin-i386 and darwin-x86_64.</li>
</ul>