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:
Eli Friedman 2011-03-19 05:02:14 +00:00
parent de8ec5b3af
commit 415247dac4

View File

@ -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 &lt; 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 &lt; 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 &lt; 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 &lt; 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 &lt; 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 &lt; 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 &lt; 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 &lt; 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 &lt; 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>