LLVM API Documentation

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Scalar.cpp
Go to the documentation of this file.
1 //===-- Scalar.cpp --------------------------------------------------------===//
2 //
3 // The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 // This file implements common infrastructure for libLLVMScalarOpts.a, which
11 // implements several scalar transformations over the LLVM intermediate
12 // representation, including the C bindings for that library.
13 //
14 //===----------------------------------------------------------------------===//
15 
16 #include "llvm/Transforms/Scalar.h"
17 #include "llvm-c/Initialization.h"
19 #include "llvm/Analysis/Passes.h"
20 #include "llvm/Analysis/Verifier.h"
21 #include "llvm/IR/DataLayout.h"
22 #include "llvm/InitializePasses.h"
23 #include "llvm/PassManager.h"
24 
25 using namespace llvm;
26 
27 /// initializeScalarOptsPasses - Initialize all passes linked into the
28 /// ScalarOpts library.
30  initializeADCEPass(Registry);
35  initializeDCEPass(Registry);
37  initializeDSEPass(Registry);
38  initializeGVNPass(Registry);
39  initializeEarlyCSEPass(Registry);
42  initializeLICMPass(Registry);
45  initializeLoopRotatePass(Registry);
47  initializeLoopRerollPass(Registry);
48  initializeLoopUnrollPass(Registry);
51  initializeLowerAtomicPass(Registry);
53  initializeMemCpyOptPass(Registry);
55  initializeReassociatePass(Registry);
56  initializeRegToMemPass(Registry);
57  initializeSCCPPass(Registry);
58  initializeIPSCCPPass(Registry);
59  initializeSROAPass(Registry);
60  initializeSROA_DTPass(Registry);
61  initializeSROA_SSAUpPass(Registry);
64  initializeSinkingPass(Registry);
66 }
67 
70 }
71 
73  unwrap(PM)->add(createAggressiveDCEPass());
74 }
75 
78 }
79 
82 }
83 
85  unwrap(PM)->add(createGVNPass());
86 }
87 
89  unwrap(PM)->add(createIndVarSimplifyPass());
90 }
91 
94 }
95 
97  unwrap(PM)->add(createJumpThreadingPass());
98 }
99 
101  unwrap(PM)->add(createLICMPass());
102 }
103 
105  unwrap(PM)->add(createLoopDeletionPass());
106 }
107 
109  unwrap(PM)->add(createLoopIdiomPass());
110 }
111 
113  unwrap(PM)->add(createLoopRotatePass());
114 }
115 
117  unwrap(PM)->add(createLoopRerollPass());
118 }
119 
121  unwrap(PM)->add(createLoopUnrollPass());
122 }
123 
125  unwrap(PM)->add(createLoopUnswitchPass());
126 }
127 
129  unwrap(PM)->add(createMemCpyOptPass());
130 }
131 
134 }
135 
138 }
139 
141  unwrap(PM)->add(createReassociatePass());
142 }
143 
145  unwrap(PM)->add(createSCCPPass());
146 }
147 
150 }
151 
153  unwrap(PM)->add(createScalarReplAggregatesPass(-1, false));
154 }
155 
157  int Threshold) {
158  unwrap(PM)->add(createScalarReplAggregatesPass(Threshold));
159 }
160 
162  // NOTE: The simplify-libcalls pass has been removed.
163 }
164 
167 }
168 
171 }
172 
175 }
176 
178  unwrap(PM)->add(createVerifierPass());
179 }
180 
183 }
184 
186  unwrap(PM)->add(createEarlyCSEPass());
187 }
188 
191 }
192 
195 }
196 
199 }
FunctionPass * createGVNPass(bool NoLoads=false)
Definition: GVN.cpp:724
void LLVMAddJumpThreadingPass(LLVMPassManagerRef PM)
Definition: Scalar.cpp:96
void initializeLoopUnswitchPass(PassRegistry &)
void LLVMAddGVNPass(LLVMPassManagerRef PM)
Definition: Scalar.cpp:84
Pass * createLoopRerollPass()
FunctionPass * createScalarReplAggregatesPass(signed Threshold=-1, bool UseDomTree=true, signed StructMemberThreshold=-1, signed ArrayElementThreshold=-1, signed ScalarLoadThreshold=-1)
void initializeJumpThreadingPass(PassRegistry &)
void LLVMAddLICMPass(LLVMPassManagerRef PM)
Definition: Scalar.cpp:100
void LLVMAddSimplifyLibCallsPass(LLVMPassManagerRef PM)
Definition: Scalar.cpp:161
void LLVMAddTypeBasedAliasAnalysisPass(LLVMPassManagerRef PM)
Definition: Scalar.cpp:189
void LLVMAddReassociatePass(LLVMPassManagerRef PM)
Definition: Scalar.cpp:140
void initializeScalarOpts(PassRegistry &)
Definition: Scalar.cpp:29
void initializeLoopStrengthReducePass(PassRegistry &)
void initializeLoopRerollPass(PassRegistry &)
LLVMContext ** unwrap(LLVMContextRef *Tys)
Definition: LLVMContext.h:119
void LLVMAddConstantPropagationPass(LLVMPassManagerRef PM)
Definition: Scalar.cpp:169
FunctionPass * createDemoteRegisterToMemoryPass()
Definition: Reg2Mem.cpp:131
void initializeDSEPass(PassRegistry &)
void LLVMAddPromoteMemoryToRegisterPass(LLVMPassManagerRef PM)
Definition: Scalar.cpp:136
void initializeEarlyCSEPass(PassRegistry &)
Pass * createLoopRotatePass()
void LLVMAddLoopUnrollPass(LLVMPassManagerRef PM)
Definition: Scalar.cpp:120
void initializeSROA_DTPass(PassRegistry &)
void LLVMAddScalarReplAggregatesPassSSA(LLVMPassManagerRef PM)
Definition: Scalar.cpp:152
FunctionPass * createConstantPropagationPass()
FunctionPass * createReassociatePass()
Pass * createLoopUnswitchPass(bool OptimizeForSize=false)
void initializeConstantPropagationPass(PassRegistry &)
ImmutablePass * createBasicAliasAnalysisPass()
void initializeLoopRotatePass(PassRegistry &)
Pass * createLoopUnrollPass(int Threshold=-1, int Count=-1, int AllowPartial=-1, int Runtime=-1)
FunctionPass * createInstructionCombiningPass()
void initializeLoopUnrollPass(PassRegistry &)
void LLVMAddLoopRerollPass(LLVMPassManagerRef PM)
Definition: Scalar.cpp:116
Pass * createCorrelatedValuePropagationPass()
void LLVMAddDeadStoreEliminationPass(LLVMPassManagerRef PM)
Definition: Scalar.cpp:80
ImmutablePass * createTypeBasedAliasAnalysisPass()
FunctionPass * createJumpThreadingPass()
void initializeLowerExpectIntrinsicPass(PassRegistry &)
void initializeSCCPPass(PassRegistry &)
FunctionPass * createTailCallEliminationPass()
void initializeLoopDeletionPass(PassRegistry &)
void initializeLowerAtomicPass(PassRegistry &)
void LLVMAddLoopRotatePass(LLVMPassManagerRef PM)
Definition: Scalar.cpp:112
void LLVMAddScalarReplAggregatesPassWithThreshold(LLVMPassManagerRef PM, int Threshold)
Definition: Scalar.cpp:156
FunctionPass * createMemCpyOptPass()
void LLVMAddLoopDeletionPass(LLVMPassManagerRef PM)
Definition: Scalar.cpp:104
void initializeIPSCCPPass(PassRegistry &)
FunctionPass * createEarlyCSEPass()
Definition: EarlyCSE.cpp:390
void LLVMAddEarlyCSEPass(LLVMPassManagerRef PM)
Definition: Scalar.cpp:185
void LLVMAddScalarReplAggregatesPass(LLVMPassManagerRef PM)
Definition: Scalar.cpp:148
void LLVMAddLoopIdiomPass(LLVMPassManagerRef PM)
Definition: Scalar.cpp:108
void initializeLICMPass(PassRegistry &)
void LLVMAddInstructionCombiningPass(LLVMPassManagerRef PM)
Definition: Scalar.cpp:92
void initializeStructurizeCFGPass(PassRegistry &)
void initializeRegToMemPass(PassRegistry &)
void initializeCodeGenPreparePass(PassRegistry &)
void initializeCorrelatedValuePropagationPass(PassRegistry &)
struct LLVMOpaquePassRegistry * LLVMPassRegistryRef
Definition: Core.h:128
void LLVMAddSCCPPass(LLVMPassManagerRef PM)
Definition: Scalar.cpp:144
void LLVMInitializeScalarOpts(LLVMPassRegistryRef R)
Definition: Scalar.cpp:68
FunctionPass * createDeadStoreEliminationPass()
void LLVMAddVerifierPass(LLVMPassManagerRef PM)
Definition: Scalar.cpp:177
void initializeSROA_SSAUpPass(PassRegistry &)
void initializeTailCallElimPass(PassRegistry &)
void initializeReassociatePass(PassRegistry &)
Pass * createLoopDeletionPass()
void LLVMAddDemoteMemoryToRegisterPass(LLVMPassManagerRef PM)
Definition: Scalar.cpp:173
void initializeSinkingPass(PassRegistry &)
Pass * createLICMPass()
Definition: LICM.cpp:199
void initializeDCEPass(PassRegistry &)
void initializeIndVarSimplifyPass(PassRegistry &)
void initializeSROAPass(PassRegistry &)
void LLVMAddBasicAliasAnalysisPass(LLVMPassManagerRef PM)
Definition: Scalar.cpp:193
FunctionPass * createCFGSimplificationPass()
Pass * createLoopIdiomPass()
FunctionPass * createSCCPPass()
FunctionPass * createPartiallyInlineLibCallsPass()
FunctionPass * createAggressiveDCEPass()
Definition: ADCE.cpp:95
struct LLVMOpaquePassManager * LLVMPassManagerRef
Definition: Core.h:125
void LLVMAddCorrelatedValuePropagationPass(LLVMPassManagerRef PM)
Definition: Scalar.cpp:181
void LLVMAddLowerExpectIntrinsicPass(LLVMPassManagerRef PM)
Definition: Scalar.cpp:197
void LLVMAddIndVarSimplifyPass(LLVMPassManagerRef PM)
Definition: Scalar.cpp:88
void LLVMAddTailCallEliminationPass(LLVMPassManagerRef PM)
Definition: Scalar.cpp:165
FunctionPass * createPromoteMemoryToRegisterPass()
Definition: Mem2Reg.cpp:88
void LLVMAddPartiallyInlineLibCallsPass(LLVMPassManagerRef PM)
Definition: Scalar.cpp:132
void initializeLoopIdiomRecognizePass(PassRegistry &)
static int const Threshold
void initializeCFGSimplifyPassPass(PassRegistry &)
void initializeMemCpyOptPass(PassRegistry &)
void LLVMAddLoopUnswitchPass(LLVMPassManagerRef PM)
Definition: Scalar.cpp:124
void initializeADCEPass(PassRegistry &)
void initializePartiallyInlineLibCallsPass(PassRegistry &)
void LLVMAddCFGSimplificationPass(LLVMPassManagerRef PM)
Definition: Scalar.cpp:76
void LLVMAddMemCpyOptPass(LLVMPassManagerRef PM)
Definition: Scalar.cpp:128
void LLVMAddAggressiveDCEPass(LLVMPassManagerRef PM)
Definition: Scalar.cpp:72
Pass * createIndVarSimplifyPass()
FunctionPass * createLowerExpectIntrinsicPass()
void initializeDeadInstEliminationPass(PassRegistry &)
void initializeSampleProfileLoaderPass(PassRegistry &)
FunctionPass * createVerifierPass(VerifierFailureAction action=AbortProcessAction)
Create a verifier pass.
Definition: Verifier.cpp:2409
void initializeLoopInstSimplifyPass(PassRegistry &)
void initializeGVNPass(PassRegistry &)