diff options
Diffstat (limited to '0003-IPO-Remove-various-legacy-passes.patch')
-rw-r--r-- | 0003-IPO-Remove-various-legacy-passes.patch | 826 |
1 files changed, 826 insertions, 0 deletions
diff --git a/0003-IPO-Remove-various-legacy-passes.patch b/0003-IPO-Remove-various-legacy-passes.patch new file mode 100644 index 000000000000..76330ff53a95 --- /dev/null +++ b/0003-IPO-Remove-various-legacy-passes.patch @@ -0,0 +1,826 @@ +From 773d663e4729f55d23cb04f78a9d003643f2cb37 Mon Sep 17 00:00:00 2001 +From: Arthur Eubanks <aeubanks@google.com> +Date: Mon, 27 Feb 2023 19:00:37 -0800 +Subject: [PATCH] [IPO] Remove various legacy passes + +These are part of the optimization pipeline, of which the legacy pass manager version is deprecated and being removed. +--- + llvm/include/llvm-c/Transforms/IPO.h | 6 -- + llvm/include/llvm/InitializePasses.h | 2 - + llvm/include/llvm/LinkAllPasses.h | 6 -- + llvm/include/llvm/Transforms/IPO.h | 28 ------ + llvm/include/llvm/Transforms/IPO/Attributor.h | 3 - + .../llvm/Transforms/IPO/ForceFunctionAttrs.h | 4 - + .../llvm/Transforms/IPO/FunctionAttrs.h | 4 - + .../llvm/Transforms/IPO/InferFunctionAttrs.h | 5 - + .../Transforms/IPO/Annotation2Metadata.cpp | 28 ------ + llvm/lib/Transforms/IPO/Attributor.cpp | 95 ------------------- + llvm/lib/Transforms/IPO/ConstantMerge.cpp | 29 ------ + llvm/lib/Transforms/IPO/ElimAvailExtern.cpp | 30 ------ + .../lib/Transforms/IPO/ForceFunctionAttrs.cpp | 29 ------ + llvm/lib/Transforms/IPO/FunctionAttrs.cpp | 42 -------- + llvm/lib/Transforms/IPO/GlobalDCE.cpp | 41 -------- + llvm/lib/Transforms/IPO/IPO.cpp | 21 ---- + .../lib/Transforms/IPO/InferFunctionAttrs.cpp | 35 ------- + .../lib/Transforms/IPO/PassManagerBuilder.cpp | 41 -------- + llvm/test/CodeGen/ARM/pr26669.ll | 31 ------ + .../Other/opt-legacy-syntax-deprecation.ll | 2 +- + llvm/tools/bugpoint/ExtractFunction.cpp | 1 - + 21 files changed, 1 insertion(+), 482 deletions(-) + delete mode 100644 llvm/test/CodeGen/ARM/pr26669.ll + +diff --git a/llvm/include/llvm-c/Transforms/IPO.h b/llvm/include/llvm-c/Transforms/IPO.h +index 53aa20fbd886..c558aa37f1c3 100644 +--- a/llvm/include/llvm-c/Transforms/IPO.h ++++ b/llvm/include/llvm-c/Transforms/IPO.h +@@ -27,9 +27,6 @@ LLVM_C_EXTERN_C_BEGIN + * @{ + */ + +-/** See llvm::createConstantMergePass function. */ +-void LLVMAddConstantMergePass(LLVMPassManagerRef PM); +- + /** See llvm::createDeadArgEliminationPass function. */ + void LLVMAddDeadArgEliminationPass(LLVMPassManagerRef PM); + +@@ -39,9 +36,6 @@ void LLVMAddFunctionAttrsPass(LLVMPassManagerRef PM); + /** See llvm::createAlwaysInlinerPass function. */ + void LLVMAddAlwaysInlinerPass(LLVMPassManagerRef PM); + +-/** See llvm::createGlobalDCEPass function. */ +-void LLVMAddGlobalDCEPass(LLVMPassManagerRef PM); +- + /** + * @} + */ +diff --git a/llvm/include/llvm/InitializePasses.h b/llvm/include/llvm/InitializePasses.h +index 2924b02774bd..2fdce85c2599 100644 +--- a/llvm/include/llvm/InitializePasses.h ++++ b/llvm/include/llvm/InitializePasses.h +@@ -60,8 +60,6 @@ void initializeAssumeBuilderPassLegacyPassPass(PassRegistry &); + void initializeAnnotation2MetadataLegacyPass(PassRegistry &); + void initializeAssumptionCacheTrackerPass(PassRegistry&); + void initializeAtomicExpandPass(PassRegistry&); +-void initializeAttributorLegacyPassPass(PassRegistry&); +-void initializeAttributorCGSCCLegacyPassPass(PassRegistry &); + void initializeBasicBlockSectionsProfileReaderPass(PassRegistry &); + void initializeBasicBlockSectionsPass(PassRegistry &); + void initializeBDCELegacyPassPass(PassRegistry&); +diff --git a/llvm/include/llvm/LinkAllPasses.h b/llvm/include/llvm/LinkAllPasses.h +index 8f07acd0bdf5..3f20916af2f3 100644 +--- a/llvm/include/llvm/LinkAllPasses.h ++++ b/llvm/include/llvm/LinkAllPasses.h +@@ -82,7 +82,6 @@ namespace { + (void) llvm::createCFGSimplificationPass(); + (void) llvm::createStructurizeCFGPass(); + (void) llvm::createLibCallsShrinkWrapPass(); +- (void) llvm::createConstantMergePass(); + (void) llvm::createCostModelAnalysisPass(); + (void) llvm::createDeadArgEliminationPass(); + (void) llvm::createDeadCodeEliminationPass(); +@@ -93,7 +92,6 @@ namespace { + (void) llvm::createDomOnlyViewerWrapperPassPass(); + (void) llvm::createDomViewerWrapperPassPass(); + (void) llvm::createAlwaysInlinerLegacyPass(); +- (void) llvm::createGlobalDCEPass(); + (void) llvm::createGlobalsAAWrapperPass(); + (void) llvm::createGuardWideningPass(); + (void) llvm::createLoopGuardWideningPass(); +@@ -154,9 +152,6 @@ namespace { + (void) llvm::createPostDomTree(); + (void) llvm::createInstructionNamerPass(); + (void) llvm::createMetaRenamerPass(); +- (void) llvm::createAttributorLegacyPass(); +- (void) llvm::createAttributorCGSCCLegacyPass(); +- (void) llvm::createPostOrderFunctionAttrsLegacyPass(); + (void) llvm::createMergeICmpsLegacyPass(); + (void) llvm::createExpandLargeDivRemPass(); + (void) llvm::createExpandMemCmpPass(); +@@ -185,7 +180,6 @@ namespace { + (void) llvm::createMustExecutePrinter(); + (void) llvm::createMustBeExecutedContextPrinter(); + (void) llvm::createFloat2IntPass(); +- (void) llvm::createEliminateAvailableExternallyPass(); + (void)llvm::createScalarizeMaskedMemIntrinLegacyPass(); + (void) llvm::createHardwareLoopsLegacyPass(); + (void) llvm::createInjectTLIMappingsLegacyPass(); +diff --git a/llvm/include/llvm/Transforms/IPO.h b/llvm/include/llvm/Transforms/IPO.h +index 4c6eb6f6e644..da2143625dc7 100644 +--- a/llvm/include/llvm/Transforms/IPO.h ++++ b/llvm/include/llvm/Transforms/IPO.h +@@ -27,34 +27,6 @@ class BasicBlock; + class GlobalValue; + class raw_ostream; + +-//===----------------------------------------------------------------------===// +-// +-// This pass adds !annotation metadata to entries in the +-// @llvm.global.annotations global constant. +-// +-ModulePass *createAnnotation2MetadataLegacyPass(); +- +-//===----------------------------------------------------------------------===// +-/// createConstantMergePass - This function returns a new pass that merges +-/// duplicate global constants together into a single constant that is shared. +-/// This is useful because some passes (ie TraceValues) insert a lot of string +-/// constants into the program, regardless of whether or not they duplicate an +-/// existing string. +-/// +-ModulePass *createConstantMergePass(); +- +-//===----------------------------------------------------------------------===// +-/// createGlobalDCEPass - This transform is designed to eliminate unreachable +-/// internal globals (functions or global variables) +-/// +-ModulePass *createGlobalDCEPass(); +- +-//===----------------------------------------------------------------------===// +-/// This transform is designed to eliminate available external globals +-/// (functions or global variables) +-/// +-ModulePass *createEliminateAvailableExternallyPass(); +- + //===----------------------------------------------------------------------===// + /// createGVExtractionPass - If deleteFn is true, this pass deletes + /// the specified global values. Otherwise, it deletes as much of the module as +diff --git a/llvm/include/llvm/Transforms/IPO/Attributor.h b/llvm/include/llvm/Transforms/IPO/Attributor.h +index 694a807d8861..968e482eff1b 100644 +--- a/llvm/include/llvm/Transforms/IPO/Attributor.h ++++ b/llvm/include/llvm/Transforms/IPO/Attributor.h +@@ -3223,9 +3223,6 @@ struct AttributorCGSCCPass : public PassInfoMixin<AttributorCGSCCPass> { + LazyCallGraph &CG, CGSCCUpdateResult &UR); + }; + +-Pass *createAttributorLegacyPass(); +-Pass *createAttributorCGSCCLegacyPass(); +- + /// Helper function to clamp a state \p S of type \p StateType with the + /// information in \p R and indicate/return if \p S did change (as-in update is + /// required to be run again). +diff --git a/llvm/include/llvm/Transforms/IPO/ForceFunctionAttrs.h b/llvm/include/llvm/Transforms/IPO/ForceFunctionAttrs.h +index 07c7cac77354..52667e19bc88 100644 +--- a/llvm/include/llvm/Transforms/IPO/ForceFunctionAttrs.h ++++ b/llvm/include/llvm/Transforms/IPO/ForceFunctionAttrs.h +@@ -17,7 +17,6 @@ + + namespace llvm { + class Module; +-class Pass; + + /// Pass which forces specific function attributes into the IR, primarily as + /// a debugging tool. +@@ -25,9 +24,6 @@ struct ForceFunctionAttrsPass : PassInfoMixin<ForceFunctionAttrsPass> { + PreservedAnalyses run(Module &M, ModuleAnalysisManager &); + }; + +-/// Create a legacy pass manager instance of a pass to force function attrs. +-Pass *createForceFunctionAttrsLegacyPass(); +- + } + + #endif // LLVM_TRANSFORMS_IPO_FORCEFUNCTIONATTRS_H +diff --git a/llvm/include/llvm/Transforms/IPO/FunctionAttrs.h b/llvm/include/llvm/Transforms/IPO/FunctionAttrs.h +index fc7cca83496b..1cab52b2cca8 100644 +--- a/llvm/include/llvm/Transforms/IPO/FunctionAttrs.h ++++ b/llvm/include/llvm/Transforms/IPO/FunctionAttrs.h +@@ -52,10 +52,6 @@ struct PostOrderFunctionAttrsPass : PassInfoMixin<PostOrderFunctionAttrsPass> { + LazyCallGraph &CG, CGSCCUpdateResult &UR); + }; + +-/// Create a legacy pass manager instance of a pass to compute function attrs +-/// in post-order. +-Pass *createPostOrderFunctionAttrsLegacyPass(); +- + /// A pass to do RPO deduction and propagation of function attributes. + /// + /// This pass provides a general RPO or "top down" propagation of +diff --git a/llvm/include/llvm/Transforms/IPO/InferFunctionAttrs.h b/llvm/include/llvm/Transforms/IPO/InferFunctionAttrs.h +index 880af2b46d7f..8addf49fc0d8 100644 +--- a/llvm/include/llvm/Transforms/IPO/InferFunctionAttrs.h ++++ b/llvm/include/llvm/Transforms/IPO/InferFunctionAttrs.h +@@ -19,7 +19,6 @@ + + namespace llvm { + class Module; +-class Pass; + + /// A pass which infers function attributes from the names and signatures of + /// function declarations in a module. +@@ -27,10 +26,6 @@ struct InferFunctionAttrsPass : PassInfoMixin<InferFunctionAttrsPass> { + PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM); + }; + +-/// Create a legacy pass manager instance of a pass to infer function +-/// attributes. +-Pass *createInferFunctionAttrsLegacyPass(); +- + } + + #endif // LLVM_TRANSFORMS_IPO_INFERFUNCTIONATTRS_H +diff --git a/llvm/lib/Transforms/IPO/Annotation2Metadata.cpp b/llvm/lib/Transforms/IPO/Annotation2Metadata.cpp +index 6cc04544cabc..7156e65f45a5 100644 +--- a/llvm/lib/Transforms/IPO/Annotation2Metadata.cpp ++++ b/llvm/lib/Transforms/IPO/Annotation2Metadata.cpp +@@ -64,34 +64,6 @@ static bool convertAnnotation2Metadata(Module &M) { + return true; + } + +-namespace { +-struct Annotation2MetadataLegacy : public ModulePass { +- static char ID; +- +- Annotation2MetadataLegacy() : ModulePass(ID) { +- initializeAnnotation2MetadataLegacyPass(*PassRegistry::getPassRegistry()); +- } +- +- bool runOnModule(Module &M) override { return convertAnnotation2Metadata(M); } +- +- void getAnalysisUsage(AnalysisUsage &AU) const override { +- AU.setPreservesAll(); +- } +-}; +- +-} // end anonymous namespace +- +-char Annotation2MetadataLegacy::ID = 0; +- +-INITIALIZE_PASS_BEGIN(Annotation2MetadataLegacy, DEBUG_TYPE, +- "Annotation2Metadata", false, false) +-INITIALIZE_PASS_END(Annotation2MetadataLegacy, DEBUG_TYPE, +- "Annotation2Metadata", false, false) +- +-ModulePass *llvm::createAnnotation2MetadataLegacyPass() { +- return new Annotation2MetadataLegacy(); +-} +- + PreservedAnalyses Annotation2MetadataPass::run(Module &M, + ModuleAnalysisManager &AM) { + convertAnnotation2Metadata(M); +diff --git a/llvm/lib/Transforms/IPO/Attributor.cpp b/llvm/lib/Transforms/IPO/Attributor.cpp +index 3485a9af1633..6cb74cd4aacd 100644 +--- a/llvm/lib/Transforms/IPO/Attributor.cpp ++++ b/llvm/lib/Transforms/IPO/Attributor.cpp +@@ -3747,98 +3747,3 @@ template <> struct DOTGraphTraits<AADepGraph *> : public DefaultDOTGraphTraits { + }; + + } // end namespace llvm +- +-namespace { +- +-struct AttributorLegacyPass : public ModulePass { +- static char ID; +- +- AttributorLegacyPass() : ModulePass(ID) { +- initializeAttributorLegacyPassPass(*PassRegistry::getPassRegistry()); +- } +- +- bool runOnModule(Module &M) override { +- if (skipModule(M)) +- return false; +- +- AnalysisGetter AG; +- SetVector<Function *> Functions; +- for (Function &F : M) +- Functions.insert(&F); +- +- CallGraphUpdater CGUpdater; +- BumpPtrAllocator Allocator; +- InformationCache InfoCache(M, AG, Allocator, /* CGSCC */ nullptr); +- return runAttributorOnFunctions(InfoCache, Functions, AG, CGUpdater, +- /* DeleteFns*/ true, +- /* IsModulePass */ true); +- } +- +- void getAnalysisUsage(AnalysisUsage &AU) const override { +- // FIXME: Think about passes we will preserve and add them here. +- AU.addRequired<TargetLibraryInfoWrapperPass>(); +- } +-}; +- +-struct AttributorCGSCCLegacyPass : public CallGraphSCCPass { +- static char ID; +- +- AttributorCGSCCLegacyPass() : CallGraphSCCPass(ID) { +- initializeAttributorCGSCCLegacyPassPass(*PassRegistry::getPassRegistry()); +- } +- +- bool runOnSCC(CallGraphSCC &SCC) override { +- if (skipSCC(SCC)) +- return false; +- +- SetVector<Function *> Functions; +- for (CallGraphNode *CGN : SCC) +- if (Function *Fn = CGN->getFunction()) +- if (!Fn->isDeclaration()) +- Functions.insert(Fn); +- +- if (Functions.empty()) +- return false; +- +- AnalysisGetter AG; +- CallGraph &CG = const_cast<CallGraph &>(SCC.getCallGraph()); +- CallGraphUpdater CGUpdater; +- CGUpdater.initialize(CG, SCC); +- Module &M = *Functions.back()->getParent(); +- BumpPtrAllocator Allocator; +- InformationCache InfoCache(M, AG, Allocator, /* CGSCC */ &Functions); +- return runAttributorOnFunctions(InfoCache, Functions, AG, CGUpdater, +- /* DeleteFns */ false, +- /* IsModulePass */ false); +- } +- +- void getAnalysisUsage(AnalysisUsage &AU) const override { +- // FIXME: Think about passes we will preserve and add them here. +- AU.addRequired<TargetLibraryInfoWrapperPass>(); +- CallGraphSCCPass::getAnalysisUsage(AU); +- } +-}; +- +-} // end anonymous namespace +- +-Pass *llvm::createAttributorLegacyPass() { return new AttributorLegacyPass(); } +-Pass *llvm::createAttributorCGSCCLegacyPass() { +- return new AttributorCGSCCLegacyPass(); +-} +- +-char AttributorLegacyPass::ID = 0; +-char AttributorCGSCCLegacyPass::ID = 0; +- +-INITIALIZE_PASS_BEGIN(AttributorLegacyPass, "attributor", +- "Deduce and propagate attributes", false, false) +-INITIALIZE_PASS_DEPENDENCY(TargetLibraryInfoWrapperPass) +-INITIALIZE_PASS_END(AttributorLegacyPass, "attributor", +- "Deduce and propagate attributes", false, false) +-INITIALIZE_PASS_BEGIN(AttributorCGSCCLegacyPass, "attributor-cgscc", +- "Deduce and propagate attributes (CGSCC pass)", false, +- false) +-INITIALIZE_PASS_DEPENDENCY(TargetLibraryInfoWrapperPass) +-INITIALIZE_PASS_DEPENDENCY(CallGraphWrapperPass) +-INITIALIZE_PASS_END(AttributorCGSCCLegacyPass, "attributor-cgscc", +- "Deduce and propagate attributes (CGSCC pass)", false, +- false) +diff --git a/llvm/lib/Transforms/IPO/ConstantMerge.cpp b/llvm/lib/Transforms/IPO/ConstantMerge.cpp +index 77bc377f4514..06d258fdb4e7 100644 +--- a/llvm/lib/Transforms/IPO/ConstantMerge.cpp ++++ b/llvm/lib/Transforms/IPO/ConstantMerge.cpp +@@ -251,32 +251,3 @@ PreservedAnalyses ConstantMergePass::run(Module &M, ModuleAnalysisManager &) { + return PreservedAnalyses::all(); + return PreservedAnalyses::none(); + } +- +-namespace { +- +-struct ConstantMergeLegacyPass : public ModulePass { +- static char ID; // Pass identification, replacement for typeid +- +- ConstantMergeLegacyPass() : ModulePass(ID) { +- initializeConstantMergeLegacyPassPass(*PassRegistry::getPassRegistry()); +- } +- +- // For this pass, process all of the globals in the module, eliminating +- // duplicate constants. +- bool runOnModule(Module &M) override { +- if (skipModule(M)) +- return false; +- return mergeConstants(M); +- } +-}; +- +-} // end anonymous namespace +- +-char ConstantMergeLegacyPass::ID = 0; +- +-INITIALIZE_PASS(ConstantMergeLegacyPass, "constmerge", +- "Merge Duplicate Global Constants", false, false) +- +-ModulePass *llvm::createConstantMergePass() { +- return new ConstantMergeLegacyPass(); +-} +diff --git a/llvm/lib/Transforms/IPO/ElimAvailExtern.cpp b/llvm/lib/Transforms/IPO/ElimAvailExtern.cpp +index 7f138d206fac..2ba1ff45b3db 100644 +--- a/llvm/lib/Transforms/IPO/ElimAvailExtern.cpp ++++ b/llvm/lib/Transforms/IPO/ElimAvailExtern.cpp +@@ -70,33 +70,3 @@ EliminateAvailableExternallyPass::run(Module &M, ModuleAnalysisManager &) { + return PreservedAnalyses::all(); + return PreservedAnalyses::none(); + } +- +-namespace { +- +-struct EliminateAvailableExternallyLegacyPass : public ModulePass { +- static char ID; // Pass identification, replacement for typeid +- +- EliminateAvailableExternallyLegacyPass() : ModulePass(ID) { +- initializeEliminateAvailableExternallyLegacyPassPass( +- *PassRegistry::getPassRegistry()); +- } +- +- // run - Do the EliminateAvailableExternally pass on the specified module, +- // optionally updating the specified callgraph to reflect the changes. +- bool runOnModule(Module &M) override { +- if (skipModule(M)) +- return false; +- return eliminateAvailableExternally(M); +- } +-}; +- +-} // end anonymous namespace +- +-char EliminateAvailableExternallyLegacyPass::ID = 0; +- +-INITIALIZE_PASS(EliminateAvailableExternallyLegacyPass, "elim-avail-extern", +- "Eliminate Available Externally Globals", false, false) +- +-ModulePass *llvm::createEliminateAvailableExternallyPass() { +- return new EliminateAvailableExternallyLegacyPass(); +-} +diff --git a/llvm/lib/Transforms/IPO/ForceFunctionAttrs.cpp b/llvm/lib/Transforms/IPO/ForceFunctionAttrs.cpp +index b10c2ea13469..2b8411d32fec 100644 +--- a/llvm/lib/Transforms/IPO/ForceFunctionAttrs.cpp ++++ b/llvm/lib/Transforms/IPO/ForceFunctionAttrs.cpp +@@ -80,32 +80,3 @@ PreservedAnalyses ForceFunctionAttrsPass::run(Module &M, + // Just conservatively invalidate analyses, this isn't likely to be important. + return PreservedAnalyses::none(); + } +- +-namespace { +-struct ForceFunctionAttrsLegacyPass : public ModulePass { +- static char ID; // Pass identification, replacement for typeid +- ForceFunctionAttrsLegacyPass() : ModulePass(ID) { +- initializeForceFunctionAttrsLegacyPassPass( +- *PassRegistry::getPassRegistry()); +- } +- +- bool runOnModule(Module &M) override { +- if (!hasForceAttributes()) +- return false; +- +- for (Function &F : M.functions()) +- forceAttributes(F); +- +- // Conservatively assume we changed something. +- return true; +- } +-}; +-} +- +-char ForceFunctionAttrsLegacyPass::ID = 0; +-INITIALIZE_PASS(ForceFunctionAttrsLegacyPass, "forceattrs", +- "Force set function attributes", false, false) +- +-Pass *llvm::createForceFunctionAttrsLegacyPass() { +- return new ForceFunctionAttrsLegacyPass(); +-} +diff --git a/llvm/lib/Transforms/IPO/FunctionAttrs.cpp b/llvm/lib/Transforms/IPO/FunctionAttrs.cpp +index 76a89a8b673c..68a4860dc190 100644 +--- a/llvm/lib/Transforms/IPO/FunctionAttrs.cpp ++++ b/llvm/lib/Transforms/IPO/FunctionAttrs.cpp +@@ -1808,42 +1808,6 @@ PreservedAnalyses PostOrderFunctionAttrsPass::run(LazyCallGraph::SCC &C, + return PA; + } + +-namespace { +- +-struct PostOrderFunctionAttrsLegacyPass : public CallGraphSCCPass { +- // Pass identification, replacement for typeid +- static char ID; +- +- PostOrderFunctionAttrsLegacyPass() : CallGraphSCCPass(ID) { +- initializePostOrderFunctionAttrsLegacyPassPass( +- *PassRegistry::getPassRegistry()); +- } +- +- bool runOnSCC(CallGraphSCC &SCC) override; +- +- void getAnalysisUsage(AnalysisUsage &AU) const override { +- AU.setPreservesCFG(); +- AU.addRequired<AssumptionCacheTracker>(); +- getAAResultsAnalysisUsage(AU); +- CallGraphSCCPass::getAnalysisUsage(AU); +- } +-}; +- +-} // end anonymous namespace +- +-char PostOrderFunctionAttrsLegacyPass::ID = 0; +-INITIALIZE_PASS_BEGIN(PostOrderFunctionAttrsLegacyPass, "function-attrs", +- "Deduce function attributes", false, false) +-INITIALIZE_PASS_DEPENDENCY(AAResultsWrapperPass) +-INITIALIZE_PASS_DEPENDENCY(AssumptionCacheTracker) +-INITIALIZE_PASS_DEPENDENCY(CallGraphWrapperPass) +-INITIALIZE_PASS_END(PostOrderFunctionAttrsLegacyPass, "function-attrs", +- "Deduce function attributes", false, false) +- +-Pass *llvm::createPostOrderFunctionAttrsLegacyPass() { +- return new PostOrderFunctionAttrsLegacyPass(); +-} +- + template <typename AARGetterT> + static bool runImpl(CallGraphSCC &SCC, AARGetterT AARGetter) { + SmallVector<Function *, 8> Functions; +@@ -1854,12 +1818,6 @@ static bool runImpl(CallGraphSCC &SCC, AARGetterT AARGetter) { + return !deriveAttrsInPostOrder(Functions, AARGetter).empty(); + } + +-bool PostOrderFunctionAttrsLegacyPass::runOnSCC(CallGraphSCC &SCC) { +- if (skipSCC(SCC)) +- return false; +- return runImpl(SCC, LegacyAARGetter(*this)); +-} +- + static bool addNoRecurseAttrsTopDown(Function &F) { + // We check the preconditions for the function prior to calling this to avoid + // the cost of building up a reversible post-order list. We assert them here +diff --git a/llvm/lib/Transforms/IPO/GlobalDCE.cpp b/llvm/lib/Transforms/IPO/GlobalDCE.cpp +index 2f2bb174a8c8..4aa5ae8f6a03 100644 +--- a/llvm/lib/Transforms/IPO/GlobalDCE.cpp ++++ b/llvm/lib/Transforms/IPO/GlobalDCE.cpp +@@ -42,47 +42,6 @@ STATISTIC(NumIFuncs, "Number of indirect functions removed"); + STATISTIC(NumVariables, "Number of global variables removed"); + STATISTIC(NumVFuncs, "Number of virtual functions removed"); + +-namespace { +- class GlobalDCELegacyPass : public ModulePass { +- public: +- static char ID; // Pass identification, replacement for typeid +- GlobalDCELegacyPass() : ModulePass(ID) { +- initializeGlobalDCELegacyPassPass(*PassRegistry::getPassRegistry()); +- } +- +- // run - Do the GlobalDCE pass on the specified module, optionally updating +- // the specified callgraph to reflect the changes. +- // +- bool runOnModule(Module &M) override { +- if (skipModule(M)) +- return false; +- +- // We need a minimally functional dummy module analysis manager. It needs +- // to at least know about the possibility of proxying a function analysis +- // manager. +- FunctionAnalysisManager DummyFAM; +- ModuleAnalysisManager DummyMAM; +- DummyMAM.registerPass( +- [&] { return FunctionAnalysisManagerModuleProxy(DummyFAM); }); +- +- auto PA = Impl.run(M, DummyMAM); +- return !PA.areAllPreserved(); +- } +- +- private: +- GlobalDCEPass Impl; +- }; +-} +- +-char GlobalDCELegacyPass::ID = 0; +-INITIALIZE_PASS(GlobalDCELegacyPass, "globaldce", +- "Dead Global Elimination", false, false) +- +-// Public interface to the GlobalDCEPass. +-ModulePass *llvm::createGlobalDCEPass() { +- return new GlobalDCELegacyPass(); +-} +- + /// Returns true if F is effectively empty. + static bool isEmptyFunction(Function *F) { + // Skip external functions. +diff --git a/llvm/lib/Transforms/IPO/IPO.cpp b/llvm/lib/Transforms/IPO/IPO.cpp +index 6fa706a91b0b..eb0a91bbbc90 100644 +--- a/llvm/lib/Transforms/IPO/IPO.cpp ++++ b/llvm/lib/Transforms/IPO/IPO.cpp +@@ -23,43 +23,22 @@ + using namespace llvm; + + void llvm::initializeIPO(PassRegistry &Registry) { +- initializeAnnotation2MetadataLegacyPass(Registry); +- initializeConstantMergeLegacyPassPass(Registry); + initializeDAEPass(Registry); + initializeDAHPass(Registry); +- initializeForceFunctionAttrsLegacyPassPass(Registry); +- initializeGlobalDCELegacyPassPass(Registry); + initializeAlwaysInlinerLegacyPassPass(Registry); +- initializeInferFunctionAttrsLegacyPassPass(Registry); + initializeLoopExtractorLegacyPassPass(Registry); + initializeSingleLoopExtractorPass(Registry); +- initializeAttributorLegacyPassPass(Registry); +- initializeAttributorCGSCCLegacyPassPass(Registry); +- initializePostOrderFunctionAttrsLegacyPassPass(Registry); + initializeBarrierNoopPass(Registry); +- initializeEliminateAvailableExternallyLegacyPassPass(Registry); + } + + void LLVMInitializeIPO(LLVMPassRegistryRef R) { + initializeIPO(*unwrap(R)); + } + +-void LLVMAddConstantMergePass(LLVMPassManagerRef PM) { +- unwrap(PM)->add(createConstantMergePass()); +-} +- + void LLVMAddDeadArgEliminationPass(LLVMPassManagerRef PM) { + unwrap(PM)->add(createDeadArgEliminationPass()); + } + +-void LLVMAddFunctionAttrsPass(LLVMPassManagerRef PM) { +- unwrap(PM)->add(createPostOrderFunctionAttrsLegacyPass()); +-} +- + void LLVMAddAlwaysInlinerPass(LLVMPassManagerRef PM) { + unwrap(PM)->add(llvm::createAlwaysInlinerLegacyPass()); + } +- +-void LLVMAddGlobalDCEPass(LLVMPassManagerRef PM) { +- unwrap(PM)->add(createGlobalDCEPass()); +-} +diff --git a/llvm/lib/Transforms/IPO/InferFunctionAttrs.cpp b/llvm/lib/Transforms/IPO/InferFunctionAttrs.cpp +index 76f8f1a7a482..b4f7967ec60a 100644 +--- a/llvm/lib/Transforms/IPO/InferFunctionAttrs.cpp ++++ b/llvm/lib/Transforms/IPO/InferFunctionAttrs.cpp +@@ -52,38 +52,3 @@ PreservedAnalyses InferFunctionAttrsPass::run(Module &M, + // out all the passes. + return PreservedAnalyses::none(); + } +- +-namespace { +-struct InferFunctionAttrsLegacyPass : public ModulePass { +- static char ID; // Pass identification, replacement for typeid +- InferFunctionAttrsLegacyPass() : ModulePass(ID) { +- initializeInferFunctionAttrsLegacyPassPass( +- *PassRegistry::getPassRegistry()); +- } +- +- void getAnalysisUsage(AnalysisUsage &AU) const override { +- AU.addRequired<TargetLibraryInfoWrapperPass>(); +- } +- +- bool runOnModule(Module &M) override { +- if (skipModule(M)) +- return false; +- +- auto GetTLI = [this](Function &F) -> TargetLibraryInfo & { +- return this->getAnalysis<TargetLibraryInfoWrapperPass>().getTLI(F); +- }; +- return inferAllPrototypeAttributes(M, GetTLI); +- } +-}; +-} +- +-char InferFunctionAttrsLegacyPass::ID = 0; +-INITIALIZE_PASS_BEGIN(InferFunctionAttrsLegacyPass, "inferattrs", +- "Infer set function attributes", false, false) +-INITIALIZE_PASS_DEPENDENCY(TargetLibraryInfoWrapperPass) +-INITIALIZE_PASS_END(InferFunctionAttrsLegacyPass, "inferattrs", +- "Infer set function attributes", false, false) +- +-Pass *llvm::createInferFunctionAttrsLegacyPass() { +- return new InferFunctionAttrsLegacyPass(); +-} +diff --git a/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp b/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp +index ed394a1822de..4fdd2c9073ac 100644 +--- a/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp ++++ b/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp +@@ -273,11 +273,6 @@ void PassManagerBuilder::addVectorPasses(legacy::PassManagerBase &PM, + + void PassManagerBuilder::populateModulePassManager( + legacy::PassManagerBase &MPM) { +- MPM.add(createAnnotation2MetadataLegacyPass()); +- +- // Allow forcing function attributes as a debugging and tuning aid. +- MPM.add(createForceFunctionAttrsLegacyPass()); +- + // If all optimizations are disabled, just run the always-inline pass and, + // if enabled, the function merging pass. + if (OptLevel == 0) { +@@ -295,9 +290,6 @@ void PassManagerBuilder::populateModulePassManager( + + addInitialAliasAnalysisPasses(MPM); + +- // Infer attributes about declarations if possible. +- MPM.add(createInferFunctionAttrsLegacyPass()); +- + if (OptLevel > 2) + MPM.add(createCallSiteSplittingPass()); + +@@ -317,15 +309,11 @@ void PassManagerBuilder::populateModulePassManager( + MPM.add(createGlobalsAAWrapperPass()); + + // Start of CallGraph SCC passes. +- bool RunInliner = false; + if (Inliner) { + MPM.add(Inliner); + Inliner = nullptr; +- RunInliner = true; + } + +- MPM.add(createPostOrderFunctionAttrsLegacyPass()); +- + addFunctionSimplificationPasses(MPM); + + // FIXME: This is a HACK! The inliner pass above implicitly creates a CGSCC +@@ -333,28 +321,6 @@ void PassManagerBuilder::populateModulePassManager( + // we must insert a no-op module pass to reset the pass manager. + MPM.add(createBarrierNoopPass()); + +- if (OptLevel > 1) +- // Remove avail extern fns and globals definitions if we aren't +- // compiling an object file for later LTO. For LTO we want to preserve +- // these so they are eligible for inlining at link-time. Note if they +- // are unreferenced they will be removed by GlobalDCE later, so +- // this only impacts referenced available externally globals. +- // Eventually they will be suppressed during codegen, but eliminating +- // here enables more opportunity for GlobalDCE as it may make +- // globals referenced by available external functions dead +- // and saves running remaining passes on the eliminated functions. +- MPM.add(createEliminateAvailableExternallyPass()); +- +- // The inliner performs some kind of dead code elimination as it goes, +- // but there are cases that are not really caught by it. We might +- // at some point consider teaching the inliner about them, but it +- // is OK for now to run GlobalOpt + GlobalDCE in tandem as their +- // benefits generally outweight the cost, making the whole pipeline +- // faster. +- if (RunInliner) { +- MPM.add(createGlobalDCEPass()); +- } +- + // We add a fresh GlobalsModRef run at this point. This is particularly + // useful as the above will have inlined, DCE'ed, and function-attr + // propagated everything. We should at this point have a reasonably minimal +@@ -382,13 +348,6 @@ void PassManagerBuilder::populateModulePassManager( + + addVectorPasses(MPM, /* IsFullLTO */ false); + +- // GlobalOpt already deletes dead functions and globals, at -O2 try a +- // late pass of GlobalDCE. It is capable of deleting dead cycles. +- if (OptLevel > 1) { +- MPM.add(createGlobalDCEPass()); // Remove dead fns and globals. +- MPM.add(createConstantMergePass()); // Merge dup global constants +- } +- + // LoopSink pass sinks instructions hoisted by LICM, which serves as a + // canonicalization pass that enables other optimizations. As a result, + // LoopSink pass needs to be a very late IR pass to avoid undoing LICM +diff --git a/llvm/test/CodeGen/ARM/pr26669.ll b/llvm/test/CodeGen/ARM/pr26669.ll +deleted file mode 100644 +index b3de1843da38..000000000000 +--- a/llvm/test/CodeGen/ARM/pr26669.ll ++++ /dev/null +@@ -1,31 +0,0 @@ +-; RUN: opt -S -globaldce -sjljehprepare < %s | FileCheck %s +-target datalayout = "e-m:o-p:32:32-f64:32:64-v64:32:64-v128:32:128-a:0:32-n32-S32" +-target triple = "thumbv7--ios5.0.0" +- +-define void @g() personality ptr @__gxx_personality_sj0 { +-entry: +- %exn.slot = alloca ptr +- %ehselector.slot = alloca i32 +- invoke void @f() +- to label %try.cont unwind label %lpad +- +-lpad: ; preds = %entry +- %0 = landingpad { ptr, i32 } +- cleanup +- br label %try.cont +- +-try.cont: ; preds = %catch, %invoke.cont +- ret void +-} +- +-declare void @f() +- +-declare i32 @__gxx_personality_sj0(...) +- +-; CHECK-LABEL: define void @g( +-; CHECK: call void @llvm.eh.sjlj.callsite( +-; CHECK: call void @_Unwind_SjLj_Register( +-; CHECK: invoke void @f( +-; CHECK: landingpad +-; CHECK-NEXT: cleanup +-; CHECK: call void @_Unwind_SjLj_Unregister( +diff --git a/llvm/test/Other/opt-legacy-syntax-deprecation.ll b/llvm/test/Other/opt-legacy-syntax-deprecation.ll +index b7247a7ceef4..a5a33564fd7e 100644 +--- a/llvm/test/Other/opt-legacy-syntax-deprecation.ll ++++ b/llvm/test/Other/opt-legacy-syntax-deprecation.ll +@@ -3,7 +3,7 @@ + ; RUN: opt /dev/null -disable-output 2>&1 | FileCheck %s --check-prefix=OK --allow-empty + ; RUN: opt /dev/null -disable-output -passes=instcombine 2>&1 | FileCheck %s --check-prefix=OK --allow-empty + ; RUN: not opt /dev/null -disable-output -instcombine 2>&1 | FileCheck %s --check-prefix=WARN +-; RUN: not opt /dev/null -disable-output -instcombine -globaldce 2>&1 | FileCheck %s --check-prefix=WARN ++; RUN: not opt /dev/null -disable-output -instcombine -always-inline 2>&1 | FileCheck %s --check-prefix=WARN + ; RUN: opt /dev/null -disable-output -instcombine -enable-new-pm=0 2>&1 | FileCheck %s --check-prefix=OK --allow-empty + ; RUN: opt /dev/null -disable-output -codegenprepare -mtriple=x86_64-unknown-linux-gnu 2>&1 | FileCheck %s --check-prefix=OK --allow-empty + +diff --git a/llvm/tools/bugpoint/ExtractFunction.cpp b/llvm/tools/bugpoint/ExtractFunction.cpp +index 5047aa35d7e7..dd9a82c32035 100644 +--- a/llvm/tools/bugpoint/ExtractFunction.cpp ++++ b/llvm/tools/bugpoint/ExtractFunction.cpp +@@ -133,7 +133,6 @@ BugDriver::performFinalCleanups(std::unique_ptr<Module> M, + I->setLinkage(GlobalValue::ExternalLinkage); + + std::vector<std::string> CleanupPasses; +- CleanupPasses.push_back("globaldce"); + + if (MayModifySemantics) + CleanupPasses.push_back("deadarghaX0r"); +-- +2.39.2 + |