mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-01 00:33:09 +00:00
checkpoint.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115489 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
71cacdaa15
commit
11b66112e0
@ -547,23 +547,6 @@ in this section.
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!--=========================================================================-->
|
|
||||||
<div class="doc_subsection">
|
|
||||||
<a name="orgchanges">LLVM Community Changes</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="doc_text">
|
|
||||||
|
|
||||||
<p>In addition to changes to the code, between LLVM 2.7 and 2.8, a number of
|
|
||||||
organization changes have happened:
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>libc++ and lldb are new</li>
|
|
||||||
<li>Debugging optimized code support.</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!--=========================================================================-->
|
<!--=========================================================================-->
|
||||||
<div class="doc_subsection">
|
<div class="doc_subsection">
|
||||||
<a name="majorfeatures">Major New Features</a>
|
<a name="majorfeatures">Major New Features</a>
|
||||||
@ -574,8 +557,17 @@ organization changes have happened:
|
|||||||
<p>LLVM 2.8 includes several major new capabilities:</p>
|
<p>LLVM 2.8 includes several major new capabilities:</p>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>llvm-diff</li>
|
<li>As mentioned above, <a href="#libc++">libc++</a> and <a
|
||||||
<li>Direct .o file writing support for darwin/x86[64].</li>
|
href="#lldb">LLDB</a> are major new additions to the LLVM collective.</li>
|
||||||
|
<li>LLVM 2.8 now has pretty decent support for debugging optimized code. You
|
||||||
|
should be able to reliably get debug info for function arguments, assuming
|
||||||
|
that the value is actually available where you have stopped.</li>
|
||||||
|
</ul>
|
||||||
|
<li>A new 'llvm-diff' tool is available that does a semantic diff of .ll
|
||||||
|
files.</li>
|
||||||
|
<li>The <a href="#mc">MC subproject</a> has made major progress in this release.
|
||||||
|
Direct .o file writing support for darwin/x86[-64] is now reliable and
|
||||||
|
support for other targets and object file formats are in progress.</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
@ -590,13 +582,19 @@ organization changes have happened:
|
|||||||
expose new optimization opportunities:</p>
|
expose new optimization opportunities:</p>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
|
<li>The <a href="LangRef.html#int_libc">memcpy, memmove, and memset</a>
|
||||||
memcpy, memmove, and memset now take address space qualified pointers + volatile.
|
intrinsics now take address space qualified pointers and a bit to indicate
|
||||||
per-instruction debug info metadata is much faster and uses less space (new DebugLoc class).
|
whether the transfer is "<a href="LangRef.html#volatile">volatile</a>" or not.
|
||||||
New "trap values" concept: http://llvm.org/docs/LangRef.html#trapvalues
|
</li>
|
||||||
New linker_private_weak and linker_private_weak_def_auto linkage types
|
<li>Per-instruction debug info metadata is much faster and uses less memory by
|
||||||
Triples are now stored in normalized form. Triple::normalize.
|
using the new DebugLoc class.</li>
|
||||||
|
<li>LLVM IR now has a more formalized concept of "<a
|
||||||
|
href="LangRef.html#trapvalues">trap values</a>", which allow the optimizer
|
||||||
|
to optimize more aggressively in the presence of undefined behavior, while
|
||||||
|
still producing predictable results.</li>
|
||||||
|
<li>LLVM IR now supports two new <a href="LangRef.html#linkage">linkage
|
||||||
|
types</a> (linker_private_weak and linker_private_weak_def_auto) which map
|
||||||
|
onto some obscure MachO concepts.</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
@ -612,18 +610,38 @@ expose new optimization opportunities:</p>
|
|||||||
release includes a few major enhancements and additions to the optimizers:</p>
|
release includes a few major enhancements and additions to the optimizers:</p>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
|
<li>As mentioned above, the optimizer now has support for updating debug
|
||||||
|
information as it goes. A key aspect of this is the new <a
|
||||||
|
href="SourceLevelDebugging.html#format_common_value">llvm.dbg.value</a>
|
||||||
|
intrinsic. This intrinsic represents debug info for variables that are
|
||||||
|
promoted to SSA values (typically by mem2reg or the -scalarrepl passes).</li>
|
||||||
|
|
||||||
<li></li>
|
<li>The JumpThreading pass is now much more aggressive about implied value
|
||||||
|
relations, allowing it to thread conditions like "a == 4" when a is known to
|
||||||
|
be 13 in one of the predecessors of a block. It does this in conjunction
|
||||||
|
with the new LazyValueInfo analysis pass.</li>
|
||||||
|
<li>The new RegionInfo analysis pass identifies single-entry single-exit regions
|
||||||
|
in the CFG. You can play with it with the "opt -regions analyze" or
|
||||||
|
"opt -view-regions" commands.</li>
|
||||||
|
<li>The loop optimizer has significantly improve strength reduction and analysis
|
||||||
|
capabilities. Notably it is able to build on the trap value and signed
|
||||||
|
integer overflow information to optimize <= and >= loops.</li>
|
||||||
|
<li>The CallGraphSCCPassManager now has some basic support for iterating within
|
||||||
|
an SCC when a optimizer devirtualizes a function call. This allows inlining
|
||||||
|
through indirect call sites that are devirtualized by store-load forwarding
|
||||||
|
and other optimizations.</li>
|
||||||
|
<li>The new <A href="Passes.html#loweratomic">-loweratomic</a> pass is available
|
||||||
|
to lower atomic instructions into their non-atomic form. This can be useful
|
||||||
|
to optimize generic code that expects to run in a single-threaded
|
||||||
|
environment.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
<p>In addition to these features that are done in 2.8, there is preliminary
|
||||||
|
support in the release for Type Based Alias Analysis
|
||||||
Preliminary work on TBAA but not usable in 2.8.
|
Preliminary work on TBAA but not usable in 2.8.
|
||||||
New CorrelatedValuePropagation pass, not on by default in 2.8 yet.
|
New CorrelatedValuePropagation pass, not on by default in 2.8 yet.
|
||||||
JumpThreading much more aggressive about implied value relations.
|
-->
|
||||||
New RegionInfo pass "opt -regions analyze" or "opt -view-regions".
|
|
||||||
Improved trip count analysis for <= and >= loops, and uses sign overflow info.
|
|
||||||
llvm.dbg.value: variable debug info for optimized code
|
|
||||||
Now iterate function passes when a cgsccpassmanager detects a devirtualization
|
|
||||||
Atomic lowering patch: -loweratomic (see Passes.html#loweratomic)
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -903,6 +921,9 @@ from the previous release.</p>
|
|||||||
<li>If you're used to reading .ll files, you'll probably notice that .ll file
|
<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
|
dumps don't produce #uses comments anymore. To get them, run a .bc file
|
||||||
through "llvm-dis --show-annotations".</li>
|
through "llvm-dis --show-annotations".</li>
|
||||||
|
<li>Target triples are now stored in a normalized form, and all inputs from
|
||||||
|
humans are expected to be normalized by Triple::normalize before being
|
||||||
|
stored in a module triple or passed to another library.</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user