mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-12 13:30:51 +00:00
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:
parent
7554771d50
commit
bb11771eb6
@ -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<> (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 -> report_fatal_error</li>
|
||||
<li>llvm_install_error_handler -> install_fatal_error_handler</li>
|
||||
<li>llvm::DwarfExceptionHandling -> llvm::JITExceptionHandling</li>
|
||||
<li>llvm_report_error -> report_fatal_error</li>
|
||||
<li>llvm_install_error_handler -> install_fatal_error_handler</li>
|
||||
<li>llvm::DwarfExceptionHandling -> llvm::JITExceptionHandling</li>
|
||||
<li>VISIBILITY_HIDDEN -> 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>
|
||||
|
Loading…
Reference in New Issue
Block a user