Skip to content

Commit 7c3c981

Browse files
committed
[Passes] Remove some legacy passes
DFAJumpThreading JumpThreading LibCallsShrink LoopVectorize SLPVectorizer DeadStoreElimination AggressiveDCE CorrelatedValuePropagation IndVarSimplify These are part of the optimization pipeline, of which the legacy version is deprecated and being removed.
1 parent e508545 commit 7c3c981

24 files changed

+5
-676
lines changed

llvm/examples/OrcV2Examples/LLJITWithOptimizingIRTransform/LLJITWithOptimizingIRTransform.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,6 @@ class MyOptimizationTransform {
7474
public:
7575
MyOptimizationTransform() : PM(std::make_unique<legacy::PassManager>()) {
7676
PM->add(createTailCallEliminationPass());
77-
PM->add(createIndVarSimplifyPass());
7877
PM->add(createCFGSimplificationPass());
7978
}
8079

llvm/include/llvm/InitializePasses.h

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,6 @@ void initializeCycleInfoWrapperPassPass(PassRegistry &);
9999
void initializeDAEPass(PassRegistry&);
100100
void initializeDAHPass(PassRegistry&);
101101
void initializeDCELegacyPassPass(PassRegistry&);
102-
void initializeDFAJumpThreadingLegacyPassPass(PassRegistry &);
103102
void initializeDSELegacyPassPass(PassRegistry&);
104103
void initializeDeadMachineInstructionElimPass(PassRegistry&);
105104
void initializeDebugifyMachineModulePass(PassRegistry &);
@@ -189,7 +188,6 @@ void initializeLegacyLoopSinkPassPass(PassRegistry&);
189188
void initializeLegalizerPass(PassRegistry&);
190189
void initializeGISelCSEAnalysisWrapperPassPass(PassRegistry &);
191190
void initializeGISelKnownBitsAnalysisPass(PassRegistry &);
192-
void initializeLibCallsShrinkWrapLegacyPassPass(PassRegistry&);
193191
void initializeLintLegacyPassPass(PassRegistry &);
194192
void initializeLiveDebugValuesPass(PassRegistry&);
195193
void initializeLiveDebugVariablesPass(PassRegistry&);
@@ -215,7 +213,6 @@ void initializeLoopSimplifyCFGLegacyPassPass(PassRegistry&);
215213
void initializeLoopSimplifyPass(PassRegistry&);
216214
void initializeLoopStrengthReducePass(PassRegistry&);
217215
void initializeLoopUnrollPass(PassRegistry&);
218-
void initializeLoopVectorizePass(PassRegistry&);
219216
void initializeLowerAtomicLegacyPassPass(PassRegistry&);
220217
void initializeLowerConstantIntrinsicsPass(PassRegistry&);
221218
void initializeLowerEmuTLSPass(PassRegistry&);
@@ -336,7 +333,6 @@ void initializeRewriteStatepointsForGCLegacyPassPass(PassRegistry &);
336333
void initializeRewriteSymbolsLegacyPassPass(PassRegistry&);
337334
void initializeSCCPLegacyPassPass(PassRegistry&);
338335
void initializeSCEVAAWrapperPassPass(PassRegistry&);
339-
void initializeSLPVectorizerPass(PassRegistry&);
340336
void initializeSROALegacyPassPass(PassRegistry&);
341337
void initializeSafeStackLegacyPassPass(PassRegistry&);
342338
void initializeSafepointIRVerifierPass(PassRegistry&);

llvm/include/llvm/LinkAllPasses.h

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,6 @@ namespace {
6969
return;
7070

7171
(void) llvm::createAAEvalPass();
72-
(void) llvm::createAggressiveDCEPass();
7372
(void)llvm::createBitTrackingDCEPass();
7473
(void) llvm::createAlignmentFromAssumptionsPass();
7574
(void) llvm::createBasicAAWrapperPass();
@@ -81,11 +80,9 @@ namespace {
8180
(void) llvm::createCallGraphViewerPass();
8281
(void) llvm::createCFGSimplificationPass();
8382
(void) llvm::createStructurizeCFGPass();
84-
(void) llvm::createLibCallsShrinkWrapPass();
8583
(void) llvm::createCostModelAnalysisPass();
8684
(void) llvm::createDeadArgEliminationPass();
8785
(void) llvm::createDeadCodeEliminationPass();
88-
(void) llvm::createDeadStoreEliminationPass();
8986
(void) llvm::createDependenceAnalysisWrapperPass();
9087
(void) llvm::createDomOnlyPrinterWrapperPassPass();
9188
(void) llvm::createDomPrinterWrapperPassPass();
@@ -96,7 +93,6 @@ namespace {
9693
(void) llvm::createGuardWideningPass();
9794
(void) llvm::createLoopGuardWideningPass();
9895
(void) llvm::createInductiveRangeCheckEliminationPass();
99-
(void) llvm::createIndVarSimplifyPass();
10096
(void) llvm::createInstSimplifyLegacyPass();
10197
(void) llvm::createInstructionCombiningPass();
10298
(void) llvm::createJMCInstrumenterPass();
@@ -137,8 +133,6 @@ namespace {
137133
(void) llvm::createSingleLoopExtractorPass();
138134
(void) llvm::createTailCallEliminationPass();
139135
(void)llvm::createTLSVariableHoistPass();
140-
(void) llvm::createJumpThreadingPass();
141-
(void) llvm::createDFAJumpThreadingPass();
142136
(void) llvm::createUnifyFunctionExitNodesPass();
143137
(void) llvm::createInstCountPass();
144138
(void) llvm::createConstantHoistingPass();
@@ -164,10 +158,7 @@ namespace {
164158
(void) llvm::createLintLegacyPassPass();
165159
(void) llvm::createSinkingPass();
166160
(void) llvm::createLowerAtomicPass();
167-
(void) llvm::createCorrelatedValuePropagationPass();
168161
(void) llvm::createMemDepPrinter();
169-
(void) llvm::createLoopVectorizePass();
170-
(void) llvm::createSLPVectorizerPass();
171162
(void) llvm::createLoadStoreVectorizerPass();
172163
(void) llvm::createPartiallyInlineLibCallsPass();
173164
(void) llvm::createScalarizerPass();

llvm/include/llvm/Transforms/Scalar.h

Lines changed: 0 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -47,28 +47,13 @@ Pass *createRedundantDbgInstEliminationPass();
4747
//
4848
FunctionPass *createDeadCodeEliminationPass();
4949

50-
//===----------------------------------------------------------------------===//
51-
//
52-
// DeadStoreElimination - This pass deletes stores that are post-dominated by
53-
// must-aliased stores and are not loaded used between the stores.
54-
//
55-
FunctionPass *createDeadStoreEliminationPass();
56-
5750

5851
//===----------------------------------------------------------------------===//
5952
//
6053
// CallSiteSplitting - This pass split call-site based on its known argument
6154
// values.
6255
FunctionPass *createCallSiteSplittingPass();
6356

64-
//===----------------------------------------------------------------------===//
65-
//
66-
// AggressiveDCE - This pass uses the SSA based Aggressive DCE algorithm. This
67-
// algorithm assumes instructions are dead until proven otherwise, which makes
68-
// it more successful are removing non-obviously dead instructions.
69-
//
70-
FunctionPass *createAggressiveDCEPass();
71-
7257
//===----------------------------------------------------------------------===//
7358
//
7459
// GuardWidening - An optimization over the @llvm.experimental.guard intrinsic
@@ -108,13 +93,6 @@ FunctionPass *createSROAPass(bool PreserveCFG = true);
10893
//
10994
Pass *createInductiveRangeCheckEliminationPass();
11095

111-
//===----------------------------------------------------------------------===//
112-
//
113-
// InductionVariableSimplify - Transform induction variables in a program to all
114-
// use a single canonical induction variable per loop.
115-
//
116-
Pass *createIndVarSimplifyPass();
117-
11896
//===----------------------------------------------------------------------===//
11997
//
12098
// LICM - This pass is a loop invariant code motion and memory promotion pass.
@@ -188,22 +166,6 @@ extern char &DemoteRegisterToMemoryID;
188166
//
189167
FunctionPass *createReassociatePass();
190168

191-
//===----------------------------------------------------------------------===//
192-
//
193-
// JumpThreading - Thread control through mult-pred/multi-succ blocks where some
194-
// preds always go to some succ. Thresholds other than minus one
195-
// override the internal BB duplication default threshold.
196-
//
197-
FunctionPass *createJumpThreadingPass(int Threshold = -1);
198-
199-
//===----------------------------------------------------------------------===//
200-
//
201-
// DFAJumpThreading - When a switch statement inside a loop is used to
202-
// implement a deterministic finite automata we can jump thread the switch
203-
// statement reducing number of conditional jumps.
204-
//
205-
FunctionPass *createDFAJumpThreadingPass();
206-
207169
//===----------------------------------------------------------------------===//
208170
//
209171
// CFGSimplification - Merge basic blocks, eliminate unreachable blocks,
@@ -327,12 +289,6 @@ Pass *createLowerWidenableConditionPass();
327289
//
328290
Pass *createMergeICmpsLegacyPass();
329291

330-
//===----------------------------------------------------------------------===//
331-
//
332-
// ValuePropagation - Propagate CFG-derived value information
333-
//
334-
Pass *createCorrelatedValuePropagationPass();
335-
336292
//===----------------------------------------------------------------------===//
337293
//
338294
// InferAddressSpaces - Modify users of addrspacecast instructions with values
@@ -428,13 +384,6 @@ FunctionPass *createNaryReassociatePass();
428384
//
429385
FunctionPass *createLoopDataPrefetchPass();
430386

431-
//===----------------------------------------------------------------------===//
432-
//
433-
// LibCallsShrinkWrap - Shrink-wraps a call to function if the result is not
434-
// used.
435-
//
436-
FunctionPass *createLibCallsShrinkWrapPass();
437-
438387
//===----------------------------------------------------------------------===//
439388
//
440389
// LoopSimplifyCFG - This pass performs basic CFG simplification on loops,

llvm/include/llvm/Transforms/Vectorize.h

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -104,20 +104,6 @@ struct VectorizeConfig {
104104
VectorizeConfig();
105105
};
106106

107-
//===----------------------------------------------------------------------===//
108-
//
109-
// LoopVectorize - Create a loop vectorization pass.
110-
//
111-
Pass *createLoopVectorizePass();
112-
Pass *createLoopVectorizePass(bool InterleaveOnlyWhenForced,
113-
bool VectorizeOnlyWhenForced);
114-
115-
//===----------------------------------------------------------------------===//
116-
//
117-
// SLPVectorizer - Create a bottom-up SLP vectorizer pass.
118-
//
119-
Pass *createSLPVectorizerPass();
120-
121107
//===----------------------------------------------------------------------===//
122108
/// Vectorize the BasicBlock.
123109
///

llvm/lib/Transforms/IPO/PassManagerBuilder.cpp

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -102,17 +102,12 @@ void PassManagerBuilder::addFunctionSimplificationPasses(
102102
if (OptLevel > 1) {
103103
// Speculative execution if the target has divergent branches; otherwise nop.
104104
MPM.add(createSpeculativeExecutionIfHasBranchDivergencePass());
105-
106-
MPM.add(createJumpThreadingPass()); // Thread jumps.
107-
MPM.add(createCorrelatedValuePropagationPass()); // Propagate conditionals
108105
}
109106
MPM.add(
110107
createCFGSimplificationPass(SimplifyCFGOptions().convertSwitchRangeToICmp(
111108
true))); // Merge & remove BBs
112109
// Combine silly seq's
113110
MPM.add(createInstructionCombiningPass());
114-
if (SizeLevel == 0)
115-
MPM.add(createLibCallsShrinkWrapPass());
116111

117112
// TODO: Investigate the cost/benefit of tail call elimination on debugging.
118113
if (OptLevel > 1)
@@ -151,7 +146,6 @@ void PassManagerBuilder::addFunctionSimplificationPasses(
151146
SimplifyCFGOptions().convertSwitchRangeToICmp(true)));
152147
MPM.add(createInstructionCombiningPass());
153148
// We resume loop passes creating a second loop pipeline here.
154-
MPM.add(createIndVarSimplifyPass()); // Canonicalize indvars
155149

156150
// Unroll small loops and perform peeling.
157151
MPM.add(createSimpleLoopUnrollPass(OptLevel, DisableUnrollLoops,
@@ -174,16 +168,10 @@ void PassManagerBuilder::addFunctionSimplificationPasses(
174168
// Run instcombine after redundancy elimination to exploit opportunities
175169
// opened up by them.
176170
MPM.add(createInstructionCombiningPass());
177-
if (OptLevel > 1) {
178-
MPM.add(createJumpThreadingPass()); // Thread jumps
179-
MPM.add(createCorrelatedValuePropagationPass());
180-
}
181-
MPM.add(createAggressiveDCEPass()); // Delete dead instructions
182171

183172
MPM.add(createMemCpyOptPass()); // Remove memcpy / form memset
184173
// TODO: Investigate if this is too expensive at O1.
185174
if (OptLevel > 1) {
186-
MPM.add(createDeadStoreEliminationPass()); // Delete dead stores
187175
MPM.add(createLICMPass(LicmMssaOptCap, LicmMssaNoAccForPromotionCap,
188176
/*AllowSpeculation=*/true));
189177
}
@@ -198,8 +186,6 @@ void PassManagerBuilder::addFunctionSimplificationPasses(
198186
/// FIXME: Should LTO cause any differences to this set of passes?
199187
void PassManagerBuilder::addVectorPasses(legacy::PassManagerBase &PM,
200188
bool IsFullLTO) {
201-
PM.add(createLoopVectorizePass(!LoopsInterleaved, !LoopVectorize));
202-
203189
if (IsFullLTO) {
204190
// The vectorizer may have significantly shortened a loop body; unroll
205191
// again. Unroll small loops to hide loop backedge latency and saturate any
@@ -237,11 +223,6 @@ void PassManagerBuilder::addVectorPasses(legacy::PassManagerBase &PM,
237223
PM.add(createBitTrackingDCEPass());
238224
}
239225

240-
// Optimize parallel scalar instruction chains into SIMD instructions.
241-
if (SLPVectorize) {
242-
PM.add(createSLPVectorizerPass());
243-
}
244-
245226
if (!IsFullLTO) {
246227
PM.add(createInstructionCombiningPass());
247228

llvm/lib/Transforms/Scalar/ADCE.cpp

Lines changed: 0 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -733,50 +733,3 @@ PreservedAnalyses ADCEPass::run(Function &F, FunctionAnalysisManager &FAM) {
733733

734734
return PA;
735735
}
736-
737-
namespace {
738-
739-
struct ADCELegacyPass : public FunctionPass {
740-
static char ID; // Pass identification, replacement for typeid
741-
742-
ADCELegacyPass() : FunctionPass(ID) {
743-
initializeADCELegacyPassPass(*PassRegistry::getPassRegistry());
744-
}
745-
746-
bool runOnFunction(Function &F) override {
747-
if (skipFunction(F))
748-
return false;
749-
750-
// ADCE does not need DominatorTree, but require DominatorTree here
751-
// to update analysis if it is already available.
752-
auto *DTWP = getAnalysisIfAvailable<DominatorTreeWrapperPass>();
753-
auto *DT = DTWP ? &DTWP->getDomTree() : nullptr;
754-
auto &PDT = getAnalysis<PostDominatorTreeWrapperPass>().getPostDomTree();
755-
ADCEChanged Changed =
756-
AggressiveDeadCodeElimination(F, DT, PDT).performDeadCodeElimination();
757-
return Changed.ChangedAnything;
758-
}
759-
760-
void getAnalysisUsage(AnalysisUsage &AU) const override {
761-
AU.addRequired<PostDominatorTreeWrapperPass>();
762-
if (!RemoveControlFlowFlag)
763-
AU.setPreservesCFG();
764-
else {
765-
AU.addPreserved<DominatorTreeWrapperPass>();
766-
AU.addPreserved<PostDominatorTreeWrapperPass>();
767-
}
768-
AU.addPreserved<GlobalsAAWrapperPass>();
769-
}
770-
};
771-
772-
} // end anonymous namespace
773-
774-
char ADCELegacyPass::ID = 0;
775-
776-
INITIALIZE_PASS_BEGIN(ADCELegacyPass, "adce",
777-
"Aggressive Dead Code Elimination", false, false)
778-
INITIALIZE_PASS_DEPENDENCY(PostDominatorTreeWrapperPass)
779-
INITIALIZE_PASS_END(ADCELegacyPass, "adce", "Aggressive Dead Code Elimination",
780-
false, false)
781-
782-
FunctionPass *llvm::createAggressiveDCEPass() { return new ADCELegacyPass(); }

llvm/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp

Lines changed: 0 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -97,43 +97,6 @@ STATISTIC(NumMinMax, "Number of llvm.[us]{min,max} intrinsics removed");
9797
STATISTIC(NumUDivURemsNarrowedExpanded,
9898
"Number of bound udiv's/urem's expanded");
9999

100-
namespace {
101-
102-
class CorrelatedValuePropagation : public FunctionPass {
103-
public:
104-
static char ID;
105-
106-
CorrelatedValuePropagation(): FunctionPass(ID) {
107-
initializeCorrelatedValuePropagationPass(*PassRegistry::getPassRegistry());
108-
}
109-
110-
bool runOnFunction(Function &F) override;
111-
112-
void getAnalysisUsage(AnalysisUsage &AU) const override {
113-
AU.addRequired<DominatorTreeWrapperPass>();
114-
AU.addRequired<LazyValueInfoWrapperPass>();
115-
AU.addPreserved<GlobalsAAWrapperPass>();
116-
AU.addPreserved<DominatorTreeWrapperPass>();
117-
AU.addPreserved<LazyValueInfoWrapperPass>();
118-
}
119-
};
120-
121-
} // end anonymous namespace
122-
123-
char CorrelatedValuePropagation::ID = 0;
124-
125-
INITIALIZE_PASS_BEGIN(CorrelatedValuePropagation, "correlated-propagation",
126-
"Value Propagation", false, false)
127-
INITIALIZE_PASS_DEPENDENCY(DominatorTreeWrapperPass)
128-
INITIALIZE_PASS_DEPENDENCY(LazyValueInfoWrapperPass)
129-
INITIALIZE_PASS_END(CorrelatedValuePropagation, "correlated-propagation",
130-
"Value Propagation", false, false)
131-
132-
// Public interface to the Value Propagation pass
133-
Pass *llvm::createCorrelatedValuePropagationPass() {
134-
return new CorrelatedValuePropagation();
135-
}
136-
137100
static bool processSelect(SelectInst *S, LazyValueInfo *LVI) {
138101
if (S->getType()->isVectorTy()) return false;
139102
if (isa<Constant>(S->getCondition())) return false;
@@ -1221,16 +1184,6 @@ static bool runImpl(Function &F, LazyValueInfo *LVI, DominatorTree *DT,
12211184
return FnChanged;
12221185
}
12231186

1224-
bool CorrelatedValuePropagation::runOnFunction(Function &F) {
1225-
if (skipFunction(F))
1226-
return false;
1227-
1228-
LazyValueInfo *LVI = &getAnalysis<LazyValueInfoWrapperPass>().getLVI();
1229-
DominatorTree *DT = &getAnalysis<DominatorTreeWrapperPass>().getDomTree();
1230-
1231-
return runImpl(F, LVI, DT, getBestSimplifyQuery(*this, F));
1232-
}
1233-
12341187
PreservedAnalyses
12351188
CorrelatedValuePropagationPass::run(Function &F, FunctionAnalysisManager &AM) {
12361189
LazyValueInfo *LVI = &AM.getResult<LazyValueAnalysis>(F);

0 commit comments

Comments
 (0)