mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-28 19:31:58 +00:00
Update Passes.html, part 3: alphabetize descriptions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127948 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
de8ec5b3af
commit
415247dac4
201
docs/Passes.html
201
docs/Passes.html
@ -752,28 +752,6 @@ perl -e '$/ = undef; for (split(/\n/, <>)) { s:^ *///? ?::; print " <p>\n" if !
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<!-------------------------------------------------------------------------- -->
|
||||
<div class="doc_subsection">
|
||||
<a name="strip-dead-debug-info">-strip-dead-debug-info: Strip debug info for unused symbols</a>
|
||||
</div>
|
||||
<div class="doc_text">
|
||||
<p>
|
||||
performs code stripping. this transformation can delete:
|
||||
</p>
|
||||
|
||||
<ol>
|
||||
<li>names for virtual registers</li>
|
||||
<li>symbols for internal globals and functions</li>
|
||||
<li>debug information</li>
|
||||
</ol>
|
||||
|
||||
<p>
|
||||
note that this transformation makes code much less readable, so it should
|
||||
only be used in situations where the <tt>strip</tt> utility would be used,
|
||||
such as reducing code size or making it harder to reverse engineer code.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<!-------------------------------------------------------------------------- -->
|
||||
<div class="doc_subsection">
|
||||
<a name="targetdata">-targetdata: Target Data Layout</a>
|
||||
@ -1295,6 +1273,7 @@ if (X < 3) {</pre>
|
||||
variable.</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<!-------------------------------------------------------------------------- -->
|
||||
<div class="doc_subsection">
|
||||
<a name="loop-deletion">-loop-deletion: Delete dead loops</a>
|
||||
@ -1355,6 +1334,47 @@ if (X < 3) {</pre>
|
||||
<p>A simple loop rotation transformation.</p>
|
||||
</div>
|
||||
|
||||
<!-------------------------------------------------------------------------- -->
|
||||
<div class="doc_subsection">
|
||||
<a name="loop-simplify">-loop-simplify: Canonicalize natural loops</a>
|
||||
</div>
|
||||
<div class="doc_text">
|
||||
<p>
|
||||
This pass performs several transformations to transform natural loops into a
|
||||
simpler form, which makes subsequent analyses and transformations simpler and
|
||||
more effective.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Loop pre-header insertion guarantees that there is a single, non-critical
|
||||
entry edge from outside of the loop to the loop header. This simplifies a
|
||||
number of analyses and transformations, such as LICM.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Loop exit-block insertion guarantees that all exit blocks from the loop
|
||||
(blocks which are outside of the loop that have predecessors inside of the
|
||||
loop) only have predecessors from inside of the loop (and are thus dominated
|
||||
by the loop header). This simplifies transformations such as store-sinking
|
||||
that are built into LICM.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
This pass also guarantees that loops will have exactly one backedge.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Note that the simplifycfg pass will clean up blocks which are split out but
|
||||
end up being unnecessary, so usage of this pass should not pessimize
|
||||
generated code.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
This pass obviously modifies the CFG, but updates loop information and
|
||||
dominator information.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<!-------------------------------------------------------------------------- -->
|
||||
<div class="doc_subsection">
|
||||
<a name="loop-unroll">-loop-unroll: Unroll loops</a>
|
||||
@ -1397,47 +1417,6 @@ if (X < 3) {</pre>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<!-------------------------------------------------------------------------- -->
|
||||
<div class="doc_subsection">
|
||||
<a name="loop-simplify">-loop-simplify: Canonicalize natural loops</a>
|
||||
</div>
|
||||
<div class="doc_text">
|
||||
<p>
|
||||
This pass performs several transformations to transform natural loops into a
|
||||
simpler form, which makes subsequent analyses and transformations simpler and
|
||||
more effective.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Loop pre-header insertion guarantees that there is a single, non-critical
|
||||
entry edge from outside of the loop to the loop header. This simplifies a
|
||||
number of analyses and transformations, such as LICM.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Loop exit-block insertion guarantees that all exit blocks from the loop
|
||||
(blocks which are outside of the loop that have predecessors inside of the
|
||||
loop) only have predecessors from inside of the loop (and are thus dominated
|
||||
by the loop header). This simplifies transformations such as store-sinking
|
||||
that are built into LICM.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
This pass also guarantees that loops will have exactly one backedge.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Note that the simplifycfg pass will clean up blocks which are split out but
|
||||
end up being unnecessary, so usage of this pass should not pessimize
|
||||
generated code.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
This pass obviously modifies the CFG, but updates loop information and
|
||||
dominator information.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<!-------------------------------------------------------------------------- -->
|
||||
<div class="doc_subsection">
|
||||
<a name="loweratomic">-loweratomic: Lower atomic intrinsics to non-atomic form</a>
|
||||
@ -1705,16 +1684,6 @@ if (X < 3) {</pre>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<!-------------------------------------------------------------------------- -->
|
||||
<div class="doc_subsection">
|
||||
<a name="sink">-sink: Code Sinking</a>
|
||||
</div>
|
||||
<div class="doc_text">
|
||||
<p>This pass moves instructions into successor blocks, when possible, so that
|
||||
they aren't executed on paths where their results aren't needed.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<!-------------------------------------------------------------------------- -->
|
||||
<div class="doc_subsection">
|
||||
<a name="simplify-libcalls">-simplify-libcalls: Simplify well-known library calls</a>
|
||||
@ -1747,6 +1716,39 @@ if (X < 3) {</pre>
|
||||
</ol>
|
||||
</div>
|
||||
|
||||
<!-------------------------------------------------------------------------- -->
|
||||
<div class="doc_subsection">
|
||||
<a name="sink">-sink: Code sinking</a>
|
||||
</div>
|
||||
<div class="doc_text">
|
||||
<p>This pass moves instructions into successor blocks, when possible, so that
|
||||
they aren't executed on paths where their results aren't needed.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<!-------------------------------------------------------------------------- -->
|
||||
<div class="doc_subsection">
|
||||
<a name="sretpromotion">-sretpromotion: Promote sret arguments to multiple ret values</a>
|
||||
</div>
|
||||
<div class="doc_text">
|
||||
<p>
|
||||
This pass finds functions that return a struct (using a pointer to the struct
|
||||
as the first argument of the function, marked with the '<tt>sret</tt>' attribute) and
|
||||
replaces them with a new function that simply returns each of the elements of
|
||||
that struct (using multiple return values).
|
||||
</p>
|
||||
|
||||
<p>
|
||||
This pass works under a number of conditions:
|
||||
</p>
|
||||
|
||||
<ul>
|
||||
<li>The returned struct must not contain other structs</li>
|
||||
<li>The returned struct must only be used to load values from</li>
|
||||
<li>The placeholder struct passed in is the result of an <tt>alloca</tt></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<!-------------------------------------------------------------------------- -->
|
||||
<div class="doc_subsection">
|
||||
<a name="strip">-strip: Strip all symbols from a module</a>
|
||||
@ -1769,6 +1771,28 @@ if (X < 3) {</pre>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<!-------------------------------------------------------------------------- -->
|
||||
<div class="doc_subsection">
|
||||
<a name="strip-dead-debug-info">-strip-dead-debug-info: Strip debug info for unused symbols</a>
|
||||
</div>
|
||||
<div class="doc_text">
|
||||
<p>
|
||||
performs code stripping. this transformation can delete:
|
||||
</p>
|
||||
|
||||
<ol>
|
||||
<li>names for virtual registers</li>
|
||||
<li>symbols for internal globals and functions</li>
|
||||
<li>debug information</li>
|
||||
</ol>
|
||||
|
||||
<p>
|
||||
note that this transformation makes code much less readable, so it should
|
||||
only be used in situations where the <tt>strip</tt> utility would be used,
|
||||
such as reducing code size or making it harder to reverse engineer code.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<!-------------------------------------------------------------------------- -->
|
||||
<div class="doc_subsection">
|
||||
<a name="strip-dead-prototypes">-strip-dead-prototypes: Strip Unused Function Prototypes</a>
|
||||
@ -1818,29 +1842,6 @@ if (X < 3) {</pre>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<!-------------------------------------------------------------------------- -->
|
||||
<div class="doc_subsection">
|
||||
<a name="sretpromotion">-sretpromotion: Promote sret arguments</a>
|
||||
</div>
|
||||
<div class="doc_text">
|
||||
<p>
|
||||
This pass finds functions that return a struct (using a pointer to the struct
|
||||
as the first argument of the function, marked with the '<tt>sret</tt>' attribute) and
|
||||
replaces them with a new function that simply returns each of the elements of
|
||||
that struct (using multiple return values).
|
||||
</p>
|
||||
|
||||
<p>
|
||||
This pass works under a number of conditions:
|
||||
</p>
|
||||
|
||||
<ul>
|
||||
<li>The returned struct must not contain other structs</li>
|
||||
<li>The returned struct must only be used to load values from</li>
|
||||
<li>The placeholder struct passed in is the result of an <tt>alloca</tt></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<!-------------------------------------------------------------------------- -->
|
||||
<div class="doc_subsection">
|
||||
<a name="tailcallelim">-tailcallelim: Tail Call Elimination</a>
|
||||
@ -2026,9 +2027,7 @@ if (X < 3) {</pre>
|
||||
|
||||
<!-------------------------------------------------------------------------- -->
|
||||
<div class="doc_subsection">
|
||||
<a name="view-dom-only">-view-dom-only: View dominance tree of function (with no function
|
||||
bodies)
|
||||
</a>
|
||||
<a name="view-dom-only">-view-dom-only: View dominance tree of function (with no function bodies)</a>
|
||||
</div>
|
||||
<div class="doc_text">
|
||||
<p>
|
||||
@ -2049,9 +2048,7 @@ if (X < 3) {</pre>
|
||||
|
||||
<!-------------------------------------------------------------------------- -->
|
||||
<div class="doc_subsection">
|
||||
<a name="view-postdom-only">-view-postdom-only: View postdominance tree of function (with no
|
||||
function bodies)
|
||||
</a>
|
||||
<a name="view-postdom-only">-view-postdom-only: View postdominance tree of function (with no function bodies)</a>
|
||||
</div>
|
||||
<div class="doc_text">
|
||||
<p>
|
||||
|
Loading…
Reference in New Issue
Block a user