llvm-general-3.2.6.0: General purpose LLVM bindings

Safe HaskellSafe-Inferred

LLVM.General.Transforms

Description

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 Modules. If you don't know what passes you want, consider instead using CuratedPassSetSpec.

Synopsis

Documentation

data Pass

Constructors

AggressiveDeadCodeElimination 
BlockPlacement 
BreakCriticalEdges 
CodeGenPrepare

can use a TargetLowering

ConstantPropagation 
CorrelatedValuePropagation 
DeadCodeElimination 
DeadInstructionElimination 
DeadStoreElimination 
DemoteRegisterToMemory 
EarlyCommonSubexpressionElimination 
GlobalValueNumbering 

Fields

noLoads :: Bool
 
InductionVariableSimplify 
InstructionCombining 
JumpThreading 
LoopClosedSingleStaticAssignment 
LoopInvariantCodeMotion 
LoopDeletion 
LoopIdiom 
LoopInstructionSimplify 
LoopRotate 
LoopStrengthReduce

can use a TargetLowering

LoopUnroll 
LoopUnswitch 
LowerAtomic 
LowerInvoke

can use a TargetLowering

LowerSwitch 
LowerExpectIntrinsic 
MemcpyOptimization 
PromoteMemoryToRegister 
Reassociate 
ScalarReplacementOfAggregates 
OldScalarReplacementOfAggregates 
SparseConditionalConstantPropagation 
SimplifyLibCalls 
SimplifyControlFlowGraph 
Sinking 
TailCallElimination 
AlwaysInline 

Fields

insertLifetime :: Bool
 
ArgumentPromotion 
ConstantMerge 
FunctionAttributes 
FunctionInlining 
GlobalDeadCodeElimination 
InternalizeFunctions 

Fields

exportList :: [String]
 
InterproceduralConstantPropagation 
InterproceduralSparseConditionalConstantPropagation 
MergeFunctions 
PartialInlining 
PruneExceptionHandling 
StripDeadDebugInfo 
StripDebugDeclare 
StripNonDebugSymbols 
StripSymbols 

Fields

onlyDebugInfo :: Bool
 
BasicBlockVectorize 
LoopVectorize 
EdgeProfiler 
OptimalEdgeProfiler 
PathProfiler 
GCOVProfiler 
AddressSanitizer 
ThreadSanitizer 
BoundsChecking 

defaultVectorizeBasicBlocks :: Pass

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).