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 on LLVM 2.7, this section lists some "gotchas" that you may run into upgrading
from the previous release.</p> from the previous release.</p>
renamed "Release" -> "Release+Asserts"; "Release-Asserts" -> "Release etc.
<ul> <ul>
<li>.ll file doesn't produce #uses comments anymore, to get them, run a .bc file <li>The build configuration machinery changed the output directory names. It
through "llvm-dis --show-annotations".</li> wasn't clear to many people that "Release-Asserts" build was a release build
<li>MSIL Backend removed.</li> without asserts. To make this more clear, "Release" does not include
<li>ABCD and SSI passes removed.</li> assertions and "Release+Asserts" does (likewise, "Debug" and
<li>'Union' LLVM IR feature removed.</li> "Debug+Asserts").</li>
<li>SCCVN pass removed.</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> </ul>
<p>In addition, many APIs have changed in this release. Some of the major LLVM <p>In addition, many APIs have changed in this release. Some of the major LLVM
API changes are:</p> API changes are:</p>
<ul> <ul>
RegisterPass<> -> INTIALIZE_PASS()
<li>LLVM 2.8 changes the internal order of operands in <a <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> 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>. 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 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>. high-level accessors, such as <tt>getCalledValue</tt> and
<tt>setUnwindDest</tt>.
</li> </li>
<li> <li>
You can no longer pass use_iterators directly to cast<> (and similar), because You can no longer pass use_iterators directly to cast&lt;&gt; (and similar),
these routines tend to perform costly dereference operations more than once. You because these routines tend to perform costly dereference operations more
have to dereference the iterators yourself and pass them in. than once. You have to dereference the iterators yourself and pass them in.
</li> </li>
<li> <li>
llvm.memcpy.*, llvm.memset.*, llvm.memmove.* (and possibly other?) intrinsics llvm.memcpy.*, llvm.memset.*, llvm.memmove.* intrinsics take an extra
take an extra parameter now (i1 isVolatile), totaling 5 parameters. 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 If you were creating these intrinsic calls and prototypes yourself (as opposed
to using Intrinsic::getDeclaration), you can use UpgradeIntrinsicFunction/UpgradeIntrinsicCall to using Intrinsic::getDeclaration), you can use
to be portable accross releases. 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).
</li> </li>
<li> <li>
SetCurrentDebugLocation takes a DebugLoc now instead of a MDNode. SetCurrentDebugLocation takes a DebugLoc now instead of a MDNode.
Change your code to use Change your code to use
SetCurrentDebugLocation(DebugLoc::getFromDILocation(...)). SetCurrentDebugLocation(DebugLoc::getFromDILocation(...)).
</li> </li>
<li>
VISIBILITY_HIDDEN is gone.
</li>
<li> <li>
The <tt>RegisterPass</tt> and <tt>RegisterAnalysisGroup</tt> templates are The <tt>RegisterPass</tt> and <tt>RegisterAnalysisGroup</tt> templates are
considered deprecated, but continue to function in LLVM 2.8. Clients are considered deprecated, but continue to function in LLVM 2.8. Clients are
strongly advised to use the upcoming <tt>INITIALIZE_PASS()</tt> and strongly advised to use the upcoming <tt>INITIALIZE_PASS()</tt> and
<tt>INITIALIZE_AG_PASS()</tt> macros instead. <tt>INITIALIZE_AG_PASS()</tt> macros instead.
<li>
SMDiagnostic takes different parameters now. //FIXME: how to upgrade?
</li> </li>
<li> <li>
The constructor for the Triple class no longer tries to understand odd triple The constructor for the Triple class no longer tries to understand odd triple
specifications. Frontends should ensure that they only pass valid triples to specifications. Frontends should ensure that they only pass valid triples to
LLVM. The Triple::normalize utility method has been added to help front-ends LLVM. The Triple::normalize utility method has been added to help front-ends
deal with funky triples. deal with funky triples.
</li>
<li> <li>
Some APIs got renamed: Some APIs got renamed:
<ul> <ul>
<li>llvm_report_error -&gt; report_fatal_error</li> <li>llvm_report_error -&gt; report_fatal_error</li>
<li>llvm_install_error_handler -&gt; install_fatal_error_handler</li> <li>llvm_install_error_handler -&gt; install_fatal_error_handler</li>
<li>llvm::DwarfExceptionHandling -&gt; llvm::JITExceptionHandling</li> <li>llvm::DwarfExceptionHandling -&gt; llvm::JITExceptionHandling</li>
<li>VISIBILITY_HIDDEN -&gt; LLVM_LIBRARY_VISIBILITY</li>
</ul> </ul>
</li> </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> href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev">LLVMdev list</a>.</p>
<ul> <ul>
<li>The Alpha, SPU, MIPS, PIC16, Blackfin, MSP430, SystemZ and MicroBlaze <li>The Alpha, Blackfin, CellSPU, MicroBlaze, MSP430, MIPS, PIC16, SystemZ
backends are experimental.</li> and XCore backends are experimental.</li>
<li><tt>llc</tt> "<tt>-filetype=obj</tt>" is experimental on all targets <li><tt>llc</tt> "<tt>-filetype=obj</tt>" is experimental on all targets
other than darwin-i386 and darwin-x86_64.</li> other than darwin-i386 and darwin-x86_64.</li>
</ul> </ul>