diff --git a/docs/Passes.html b/docs/Passes.html index a5349c3b85c2..061b90d678b3 100644 --- a/docs/Passes.html +++ b/docs/Passes.html @@ -75,9 +75,8 @@ ANALYSIS PASSES OptionName -aa-evalExhaustive Alias Analysis Precision Evaluator --basicaaBasic Alias Analysis (default AA impl) +-basicaaBasic Alias Analysis (stateless AA impl) -basiccgBasic CallGraph Construction --codegenprepareOptimize for code generation -count-aaCount Alias Analysis Query Responses -debug-aaAA use debugger -domfrontierDominance Frontier Construction @@ -85,27 +84,23 @@ -dot-callgraphPrint Call Graph to 'dot' file -dot-cfgPrint CFG of function to 'dot' file -dot-cfg-onlyPrint CFG of function to 'dot' file (with no function bodies) --dot-domPrint dominator tree of function to 'dot' file --dot-dom-onlyPrint dominator tree of function to 'dot' file (with no function bodies) --dot-postdomPrint post dominator tree of function to 'dot' file --dot-postdom-onlyPrint post dominator tree of function to 'dot' file (with no function bodies) +-dot-domPrint dominance tree of function to 'dot' file +-dot-dom-onlyPrint dominance tree of function to 'dot' file (with no function bodies) +-dot-postdomPrint postdominance tree of function to 'dot' file +-dot-postdom-onlyPrint postdominance tree of function to 'dot' file (with no function bodies) -globalsmodref-aaSimple mod/ref analysis for globals -instcountCounts the various types of Instructions --interprocedural-aa-evalExhaustive Interprocedural Alias Analysis Precision Evaluator --interprocedural-basic-aaInterprocedural Basic Alias Analysis -intervalsInterval Partition Construction -iv-usersInduction Variable Users -lazy-value-infoLazy Value Information Analysis -ldaLoop Dependence Analysis -libcall-aaLibCall Alias Analysis --lintCheck for common errors in LLVM IR --live-valuesValue Liveness Analysis +-lintStatically lint-checks LLVM IR -loopsNatural Loop Information -memdepMemory Dependence Analysis --module-debuginfoPrints module debug info metadata +-module-debuginfoDecodes module-level debug info -no-aaNo Alias Analysis (always returns 'may' alias) -no-profileNo Profile Information --pointertrackingTrack pointer bounds -postdomfrontierPost-Dominance Frontier Construction -postdomtreePost-Dominator Tree Construction -print-alias-setsAlias Set Printer @@ -120,8 +115,8 @@ -print-used-typesFind Used Types -profile-estimatorEstimate profiling information -profile-loaderLoad profile information from llvmprof.out --regionsDetect single entry single exit regions in a function -profile-verifierVerify profiling information +-regionsDetect single entry single exit regions -scalar-evolutionScalar Evolution Analysis -scev-aaScalarEvolution-based Alias Analysis -targetdataTarget Data Layout @@ -129,13 +124,12 @@ TRANSFORM PASSES OptionName --abcdRemove redundant conditional branches -adceAggressive Dead Code Elimination -always-inlineInliner for always_inline functions -argpromotionPromote 'by reference' arguments to scalars -block-placementProfile Guided Basic Block Placement -break-crit-edgesBreak critical edges in CFG --codegenpreparePrepare a function for code generation +-codegenprepareOptimize for code generation -constmergeMerge Duplicate Global Constants -constpropSimple constant propagation -dceDead Code Elimination @@ -155,46 +149,40 @@ -internalizeInternalize Global Symbols -ipconstpropInterprocedural constant propagation -ipsccpInterprocedural Sparse Conditional Constant Propagation --jump-threadingThread control through conditional blocks +-jump-threadingJump Threading -lcssaLoop-Closed SSA Form Pass -licmLoop Invariant Code Motion --loop-deletionDead Loop Deletion Pass +-loop-deletionDelete dead loops -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-rotateRotate Loops +-loop-simplifyCanonicalize natural loops -loop-unrollUnroll loops -loop-unswitchUnswitch loops --loop-simplifyCanonicalize natural loops --loweratomicLower atomic intrinsics +-loweratomicLower atomic intrinsics to non-atomic form -lowerinvokeLower invoke and unwind, for unwindless code generators -lowersetjmpLower Set Jump -lowerswitchLower SwitchInst's to branches -mem2regPromote Memory to Register --memcpyoptOptimize use of memcpy and friends +-memcpyoptMemCpy Optimization -mergefuncMerge Functions -mergereturnUnify function exit nodes -partial-inlinerPartial Inliner --partialspecializationPartial Specialization -prune-ehRemove unused exception handling info -reassociateReassociate expressions -reg2memDemote all values to stack slots --scalarreplScalar Replacement of Aggregates +-scalarreplScalar Replacement of Aggregates (DT) -sccpSparse Conditional Constant Propagation --sinkCode Sinking -simplify-libcallsSimplify well-known library calls --simplify-libcalls-halfpowrSimplify half_powr library calls -simplifycfgSimplify the CFG --split-gepsSplit complex GEPs into simple GEPs --ssiStatic Single Information Construction --ssi-everythingStatic Single Information Construction (everything, intended for debugging) +-sinkCode sinking +-sretpromotionPromote sret arguments to multiple ret values -stripStrip all symbols from a module -strip-dead-debug-infoStrip debug info for unused symbols --strip-dead-prototypesRemove unused function declarations +-strip-dead-prototypesStrip Unused Function Prototypes -strip-debug-declareStrip all llvm.dbg.declare intrinsics -strip-nondebugStrip all symbols, except dbg symbols, from a module --sretpromotionPromote sret arguments -tailcallelimTail Call Elimination -tailduplicateTail Duplication @@ -208,10 +196,10 @@ -verifyModule Verifier -view-cfgView CFG of function -view-cfg-onlyView CFG of function (with no function bodies) --view-domView dominator tree of function --view-dom-onlyView dominator tree of function (with no function bodies) --view-postdomView post dominator tree of function --view-postdom-onlyView post dominator tree of function (with no function bodies) +-view-domView dominance tree of function +-view-dom-onlyView dominance tree of function (with no function bodies) +-view-postdomView postdominance tree of function +-view-postdom-onlyView postdominance tree of function (with no function bodies) @@ -237,7 +225,7 @@
- -basicaa: Basic Alias Analysis (default AA impl) + -basicaa: Basic Alias Analysis (stateless AA impl)

@@ -504,7 +492,7 @@

- -lint: Check for common errors in LLVM IR + -lint: Statically lint-checks LLVM IR

This pass statically checks for common and easily-identified constructs @@ -535,15 +523,7 @@

-
-

LLVM IR Value liveness analysis pass.

-
- - -

@@ -569,7 +549,7 @@

This pass decodes the debug info metadata in a module and prints in a @@ -855,21 +835,6 @@

This section describes the LLVM Transform Passes.

- - -
-

ABCD removes conditional branch instructions that can be proved redundant. - With the SSI representation, each variable has a constraint. By analyzing these - constraints we can prove that a branch is redundant. When a branch is proved - redundant it means that one direction will always be taken; thus, we can change - this branch into an unconditional jump.

-

It is advisable to run SimplifyCFG and - Aggressive Dead Code Elimination after ABCD - to clean up the code.

-
-
-adce: Aggressive Dead Code Elimination @@ -1284,7 +1249,7 @@

@@ -1378,7 +1343,7 @@

@@ -1414,17 +1379,6 @@

- - -
-

- This pass divides loop's iteration range by spliting loop such that each - individual loop is executed efficiently. -

-
-
-loop-reduce: Loop Strength Reduction @@ -1664,7 +1618,7 @@

@@ -1715,22 +1669,6 @@

- - -
-

This pass finds function arguments that are often a common constant and - specializes a version of the called function for that constant. - - This pass simply does the cloning for functions it specializes. It depends - on IPSCCP and DAE to clean up the results. - - The initial heuristic favors constant arguments that are used in control - flow. -

-
-
-prune-eh: Remove unused exception handling info @@ -1786,7 +1724,7 @@

@@ -1852,16 +1790,6 @@

- - -
-

Simple pass that applies an experimental transformation on calls - to specific functions. -

-
-
-simplifycfg: Simplify the CFG @@ -1881,43 +1809,6 @@
- - -
-

This function breaks GEPs with more than 2 non-zero operands into smaller - GEPs each with no more than 2 non-zero operands. This exposes redundancy - between GEPs with common initial operand sequences. -

-
- - - -
-

This pass converts a list of variables to the Static Single Information - form. - - We are building an on-demand representation, that is, we do not convert - every single variable in the target function to SSI form. Rather, we receive - a list of target variables that must be converted. We also do not - completely convert a target variable to the SSI format. Instead, we only - change the variable in the points where new information can be attached - to its live range, that is, at branch points. -

-
- - - -
-

A pass that runs SSI on every non-void variable, intended for debugging. -

-
-