From 50768f89d9a697332fa17345f5752c57fba1dbe0 Mon Sep 17 00:00:00 2001 From: Gordon Henriksen Date: Thu, 25 Oct 2007 08:46:12 +0000 Subject: [PATCH] Bringing Passes.html structurally up-to-date, and enabling semi-automated maintenance. llvm-svn: 43334 --- llvm/docs/Passes.html | 216 +++++++++++++++++++++++++----------------- 1 file changed, 128 insertions(+), 88 deletions(-) diff --git a/llvm/docs/Passes.html b/llvm/docs/Passes.html index 3edb1219d1d5..66ef44bc8630 100644 --- a/llvm/docs/Passes.html +++ b/llvm/docs/Passes.html @@ -7,6 +7,34 @@ + +
LLVM's Analysis and Transform Passes
    @@ -26,11 +54,11 @@

    This document serves as a high level summary of the optimization features that LLVM provides. Optimizations are implemented as Passes that traverse some portion of a program to either collect information or transform the program. - THe table below divides the passes that LLVM provides into three categories. + The table below divides the passes that LLVM provides into three categories. Analysis passes compute information that other passes can use or for debugging or program visualization purposes. Transform passes can use (or invalidate) the analysis passes. Transform passes all mutate the program in some way. - Utility passes provides ome utility but don't otherwise fit categorization. + Utility passes provides some utility but don't otherwise fit categorization. For example passes to extract functions to bitcode or write a module to bitcode are neither analysis nor transform passes.

    The table below provides a quick summary of each pass and links to the more @@ -48,26 +76,23 @@ -callgraphPrint a call graph -callsccPrint SCCs of the Call Graph -cfgsccPrint SCCs of each function CFG +-codegenprepareOptimize for code generation -count-aaCount Alias Analysis Query Responses -debug-aaAA use debugger -domfrontierDominance Frontier Construction --domsetDominator Set Construction -domtreeDominator Tree Construction --etforestET Forest Construction -externalfnconstantsPrint external fn callsites passed constants -globalsmodref-aaSimple mod/ref analysis for globals --idomImmediate Dominators Construction +-gvnGlobal Value Numbering -instcountCounts the various types of Instructions -intervalsInterval Partition Construction -load-vnLoad Value Numbering -loopsNatural Loop Construction +-memdepMemory Dependence Analysis -no-aaNo Alias Analysis (always returns 'may' alias) -no-profileNo Profile Information -postdomfrontierPost-Dominance Frontier Construction --postdomsetPost-Dominator Set Construction -postdomtreePost-Dominator Tree Construction --postetforestPost-ET-Forest Construction --postidomImmediate Post-Dominators Construction -printPrint function to stderr -print-alias-setsAlias Set Printer -print-callgraphPrint Call Graph to 'dot' file @@ -85,7 +110,7 @@ -adceAggressive Dead Code Elimination -argpromotionPromote 'by reference' arguments to scalars -block-placementProfile Guided Basic Block Placement --break-crit-edgesBreak Critical Edges in CFG +-break-crit-edgesBreak critical edges in CFG -ceeCorrelated Expression Elimination -condpropConditional Propagation -constmergeMerge Duplicate Global Constants @@ -98,6 +123,7 @@ -gcseGlobal Common Subexpression Elimination -globaldceDead Global Elimination -globaloptGlobal Variable Optimizer +-gvnpreGlobal Value Numbering/Partial Redundancy Elimination -indmemremIndirect Malloc and Free Removal -indvarsCanonicalize Induction Variables -inlineFunction Integration/Inlining @@ -114,24 +140,26 @@ -licmLoop Invariant Code Motion -loop-extractExtract loops into new functions -loop-extract-singleExtract at most one loop into a new function +-loop-index-splitIndex Split Loops -loop-reduceLoop Strength Reduction --loop-unrollUnroll Loops --loop-unswitchUnswitch Loops --loopsimplifyCanonicalize Natural Loops --lower-packedLower Packed Operations +-loop-rotateRotate Loops +-loop-unrollUnroll loops +-loop-unswitchUnswitch loops +-loopsimplifyCanonicalize natural loops +-lower-packedlowers packed operations to operations on smaller packed datatypes -lowerallocsLower allocations from instructions to calls -lowergcLower GC intrinsics, for GCless code generators --lowerinvokeLower Invoke and Unwind --lowerselectLower Selects To Branches +-lowerinvokeLower invoke and unwind, for unwindless code generators +-lowerselectLower select instructions to branches -lowersetjmpLower Set Jump -lowerswitchLower SwitchInst's to branches -mem2regPromote Memory to Register --mergereturnUnify Function Exit Nodes +-mergereturnUnify function exit nodes -predsimplifyPredicate Simplifier -prune-ehRemove unused exception handling info -raiseallocsRaise allocations from calls to instructions --reassociateReassociate Expressions --reg2memDemote Values to Memory +-reassociateReassociate expressions +-reg2memDemote all values to stack slots -scalarreplScalar Replacement of Aggregates -sccpSparse Conditional Constant Propagation -simplify-libcallsSimplify well-known library calls @@ -139,12 +167,16 @@ -stripStrip all symbols from a module -tailcallelimTail Call Elimination -tailduplicateTail Duplication + + UTILITY PASSES OptionNameDirectory --deadarghaX0rDead Argument Hacking (BUGPOINT ONLY) --extract-blocksExtract Basic Blocks From Module (BUGPOINT ONLY) +-deadarghaX0rDead Argument Hacking (BUGPOINT USE ONLY; DO NOT USE) +-extract-blocksExtract Basic Blocks From Module (for bugpoint use) -emitbitcodeBitcode Writer -verifyModule Verifier +-view-cfgView CFG of function +-view-cfg-onlyView CFG of function (with no function bodies) @@ -172,7 +204,7 @@

    Yet to be written.

    @@ -180,7 +212,7 @@

    Yet to be written.

    @@ -188,7 +220,7 @@

    Yet to be written.

    @@ -196,7 +228,7 @@

    Yet to be written.

    @@ -212,7 +244,15 @@ +
    +

    Yet to be written.

    +
    + + +

    Yet to be written.

    @@ -228,7 +268,7 @@

    Yet to be written.

    @@ -242,14 +282,6 @@

    Yet to be written.

    - - -
    -

    Yet to be written.

    -
    -
    Dominator Tree Construction @@ -258,22 +290,6 @@

    Yet to be written.

    - - -
    -

    Yet to be written.

    -
    - - - -
    -

    Yet to be written.

    -
    -
    Print external fn callsites passed constants @@ -292,7 +308,7 @@

    Yet to be written.

    @@ -330,6 +346,14 @@

    Yet to be written.

    + + +
    +

    Yet to be written.

    +
    +
    No Alias Analysis (always returns 'may' alias) @@ -354,14 +378,6 @@

    Yet to be written.

    - - -
    -

    Yet to be written.

    -
    -
    Post-Dominator Tree Construction @@ -370,22 +386,6 @@

    Yet to be written.

    - - -
    -

    Yet to be written.

    -
    - - - -
    -

    Yet to be written.

    -
    -
    Print function to stderr @@ -515,7 +515,7 @@

    Yet to be written.

    @@ -564,7 +564,7 @@

    This file implements constant propagation and merging. It looks for @@ -642,6 +642,14 @@

    Yet to be written.

    + + +
    +

    Yet to be written.

    +
    +
    Indirect Malloc and Free Removal @@ -770,6 +778,14 @@

    Yet to be written.

    + + +
    +

    Yet to be written.

    +
    +
    Loop Strength Reduction @@ -780,7 +796,7 @@

    Yet to be written.

    @@ -788,7 +804,7 @@

    Yet to be written.

    @@ -796,7 +812,7 @@

    Yet to be written.

    @@ -804,7 +820,15 @@ +
    +

    Yet to be written.

    +
    + + +

    Yet to be written.

    @@ -828,7 +852,7 @@

    Yet to be written.

    @@ -836,7 +860,7 @@

    Yet to be written.

    @@ -868,7 +892,7 @@

    Yet to be written.

    @@ -900,7 +924,7 @@

    Yet to be written.

    @@ -908,7 +932,7 @@

    Yet to be written.

    @@ -978,7 +1002,7 @@

    Yet to be written.

    @@ -986,7 +1010,7 @@

    Yet to be written.

    @@ -1008,6 +1032,22 @@

    Yet to be written.

    + + +
    +

    Yet to be written.

    +
    + + + +
    +

    Yet to be written.

    +
    +