Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell98 |
This module provides an enumeration of the various transformation (e.g. optimization) passes
provided by LLVM. They can be used to create a PassManager
to, in turn,
run the passes on Module
s. If you don't know what passes you want, consider
instead using CuratedPassSetSpec
.
- data Pass
- = AggressiveDeadCodeElimination
- | BreakCriticalEdges
- | CodeGenPrepare
- | ConstantPropagation
- | CorrelatedValuePropagation
- | DeadCodeElimination
- | DeadInstructionElimination
- | DeadStoreElimination
- | DemoteRegisterToMemory
- | EarlyCommonSubexpressionElimination
- | GlobalValueNumbering { }
- | InductionVariableSimplify
- | InstructionCombining
- | JumpThreading
- | LoopClosedSingleStaticAssignment
- | LoopInvariantCodeMotion
- | LoopDeletion
- | LoopIdiom
- | LoopInstructionSimplify
- | LoopRotate
- | LoopStrengthReduce
- | LoopUnroll { }
- | LoopUnswitch { }
- | LowerAtomic
- | LowerInvoke { }
- | LowerSwitch
- | LowerExpectIntrinsic
- | MemcpyOptimization
- | PromoteMemoryToRegister
- | Reassociate
- | ScalarReplacementOfAggregates { }
- | OldScalarReplacementOfAggregates { }
- | SparseConditionalConstantPropagation
- | SimplifyLibCalls
- | SimplifyControlFlowGraph
- | Sinking
- | TailCallElimination
- | AlwaysInline { }
- | ArgumentPromotion
- | ConstantMerge
- | FunctionAttributes
- | FunctionInlining { }
- | GlobalDeadCodeElimination
- | InternalizeFunctions {
- exportList :: [String]
- | InterproceduralConstantPropagation
- | InterproceduralSparseConditionalConstantPropagation
- | MergeFunctions
- | PartialInlining
- | PruneExceptionHandling
- | StripDeadDebugInfo
- | StripDebugDeclare
- | StripNonDebugSymbols
- | StripSymbols { }
- | BasicBlockVectorize {
- vectorBits :: Word
- vectorizeBools :: Bool
- vectorizeInts :: Bool
- vectorizeFloats :: Bool
- vectorizePointers :: Bool
- vectorizeCasts :: Bool
- vectorizeMath :: Bool
- vectorizeFusedMultiplyAdd :: Bool
- vectorizeSelect :: Bool
- vectorizeCmp :: Bool
- vectorizeGetElementPtr :: Bool
- vectorizeMemoryOperations :: Bool
- alignedOnly :: Bool
- requiredChainDepth :: Word
- searchLimit :: Word
- maxCandidatePairsForCycleCheck :: Word
- splatBreaksChain :: Bool
- maxInstructions :: Word
- maxIterations :: Word
- powerOfTwoLengthsOnly :: Bool
- noMemoryOperationBoost :: Bool
- fastDependencyAnalysis :: Bool
- | LoopVectorize {
- noUnrolling :: Bool
- | SuperwordLevelParallelismVectorize
- | GCOVProfiler { }
- | AddressSanitizer { }
- | AddressSanitizerModule { }
- | MemorySanitizer { }
- | ThreadSanitizer { }
- | BoundsChecking
- | DebugGeneratedIR { }
- | DebugExistingIR
- defaultLoopVectorize :: Pass
- defaultVectorizeBasicBlocks :: Pass
- newtype GCOVVersion = GCOVVersion String
- defaultGCOVProfiler :: Pass
- defaultAddressSanitizer :: Pass
- defaultAddressSanitizerModule :: Pass
- defaultMemorySanitizer :: Pass
- defaultThreadSanitizer :: Pass
- defaultDebugGeneratedIR :: Pass
Documentation
http://llvm.org/docs/Passes.html#transform-passes
A few passes can make use of information in a TargetMachine
if one
is provided to createPassManager
.
http://llvm.org/doxygen/classllvm_1_1Pass.html
defaultLoopVectorize :: Pass Source
Defaults for the LoopVectorize
pass
defaultVectorizeBasicBlocks :: Pass Source
Defaults for the BasicBlockVectorize
pass - copied from the C++ code to keep these defaults
constant. (The C++ defaults are modifiable through global objects used for command-line processing,
in a design apparently oblivious to uses of LLVM besides the standard command-line tools).
newtype GCOVVersion Source
defaultGCOVProfiler :: Pass Source
Defaults for GCOVProfiler
.
defaultAddressSanitizer :: Pass Source
Defaults for AddressSanitizer
.
defaultAddressSanitizerModule :: Pass Source
Defaults for AddressSanitizerModule
.
defaultMemorySanitizer :: Pass Source
Defaults for MemorySanitizer
.
defaultThreadSanitizer :: Pass Source
Defaults for ThreadSanitizer
.
defaultDebugGeneratedIR :: Pass Source
Defaults for DebugGeneratedIR
.