diff --git a/llvm/include/llvm/InitializePasses.h b/llvm/include/llvm/InitializePasses.h index efd82a260f6fb..454a723b3fde4 100644 --- a/llvm/include/llvm/InitializePasses.h +++ b/llvm/include/llvm/InitializePasses.h @@ -157,7 +157,6 @@ void initializeLazyMachineBlockFrequencyInfoPassPass(PassRegistry&); void initializeLazyValueInfoPrinterPass(PassRegistry&); void initializeLazyValueInfoWrapperPassPass(PassRegistry&); void initializeLegacyLICMPassPass(PassRegistry&); -void initializeLegacyLoopSinkPassPass(PassRegistry&); void initializeLegalizerPass(PassRegistry&); void initializeGISelCSEAnalysisWrapperPassPass(PassRegistry &); void initializeGISelKnownBitsAnalysisPass(PassRegistry &); diff --git a/llvm/include/llvm/LinkAllPasses.h b/llvm/include/llvm/LinkAllPasses.h index 91ca10d4c183c..ab7f9f4a2b113 100644 --- a/llvm/include/llvm/LinkAllPasses.h +++ b/llvm/include/llvm/LinkAllPasses.h @@ -87,7 +87,6 @@ namespace { (void) llvm::createKCFIPass(); (void) llvm::createLCSSAPass(); (void) llvm::createLICMPass(); - (void) llvm::createLoopSinkPass(); (void) llvm::createLazyValueInfoPass(); (void) llvm::createLoopExtractorPass(); (void) llvm::createLoopPredicationPass(); diff --git a/llvm/include/llvm/Transforms/Scalar.h b/llvm/include/llvm/Transforms/Scalar.h index cf29eadbd0492..3b24774ddfa06 100644 --- a/llvm/include/llvm/Transforms/Scalar.h +++ b/llvm/include/llvm/Transforms/Scalar.h @@ -61,13 +61,6 @@ FunctionPass *createSROAPass(bool PreserveCFG = true); // Pass *createLICMPass(); -//===----------------------------------------------------------------------===// -// -// LoopSink - This pass sinks invariants from preheader to loop body where -// frequency is lower than loop preheader. -// -Pass *createLoopSinkPass(); - //===----------------------------------------------------------------------===// // // LoopPredication - This pass does loop predication on guards. diff --git a/llvm/lib/Transforms/Scalar/LoopSink.cpp b/llvm/lib/Transforms/Scalar/LoopSink.cpp index 9f99f6214748b..6eedf95e7575e 100644 --- a/llvm/lib/Transforms/Scalar/LoopSink.cpp +++ b/llvm/lib/Transforms/Scalar/LoopSink.cpp @@ -36,13 +36,11 @@ #include "llvm/Analysis/AliasAnalysis.h" #include "llvm/Analysis/BlockFrequencyInfo.h" #include "llvm/Analysis/LoopInfo.h" -#include "llvm/Analysis/LoopPass.h" #include "llvm/Analysis/MemorySSA.h" #include "llvm/Analysis/MemorySSAUpdater.h" #include "llvm/Analysis/ScalarEvolution.h" #include "llvm/IR/Dominators.h" #include "llvm/IR/Instructions.h" -#include "llvm/InitializePasses.h" #include "llvm/Support/BranchProbability.h" #include "llvm/Support/CommandLine.h" #include "llvm/Transforms/Scalar.h" @@ -390,58 +388,3 @@ PreservedAnalyses LoopSinkPass::run(Function &F, FunctionAnalysisManager &FAM) { return PA; } - -namespace { -struct LegacyLoopSinkPass : public LoopPass { - static char ID; - LegacyLoopSinkPass() : LoopPass(ID) { - initializeLegacyLoopSinkPassPass(*PassRegistry::getPassRegistry()); - } - - bool runOnLoop(Loop *L, LPPassManager &LPM) override { - if (skipLoop(L)) - return false; - - BasicBlock *Preheader = L->getLoopPreheader(); - if (!Preheader) - return false; - - // Enable LoopSink only when runtime profile is available. - // With static profile, the sinking decision may be sub-optimal. - if (!Preheader->getParent()->hasProfileData()) - return false; - - AAResults &AA = getAnalysis().getAAResults(); - MemorySSA &MSSA = getAnalysis().getMSSA(); - auto *SE = getAnalysisIfAvailable(); - bool Changed = sinkLoopInvariantInstructions( - *L, AA, getAnalysis().getLoopInfo(), - getAnalysis().getDomTree(), - getAnalysis().getBFI(), - MSSA, SE ? &SE->getSE() : nullptr); - - if (VerifyMemorySSA) - MSSA.verifyMemorySSA(); - - return Changed; - } - - void getAnalysisUsage(AnalysisUsage &AU) const override { - AU.setPreservesCFG(); - AU.addRequired(); - getLoopAnalysisUsage(AU); - AU.addRequired(); - AU.addPreserved(); - } -}; -} - -char LegacyLoopSinkPass::ID = 0; -INITIALIZE_PASS_BEGIN(LegacyLoopSinkPass, "loop-sink", "Loop Sink", false, - false) -INITIALIZE_PASS_DEPENDENCY(LoopPass) -INITIALIZE_PASS_DEPENDENCY(BlockFrequencyInfoWrapperPass) -INITIALIZE_PASS_DEPENDENCY(MemorySSAWrapperPass) -INITIALIZE_PASS_END(LegacyLoopSinkPass, "loop-sink", "Loop Sink", false, false) - -Pass *llvm::createLoopSinkPass() { return new LegacyLoopSinkPass(); } diff --git a/llvm/lib/Transforms/Scalar/Scalar.cpp b/llvm/lib/Transforms/Scalar/Scalar.cpp index df402f260a1f6..69ecc84299295 100644 --- a/llvm/lib/Transforms/Scalar/Scalar.cpp +++ b/llvm/lib/Transforms/Scalar/Scalar.cpp @@ -31,7 +31,6 @@ void llvm::initializeScalarOpts(PassRegistry &Registry) { initializeInferAddressSpacesPass(Registry); initializeInstSimplifyLegacyPassPass(Registry); initializeLegacyLICMPassPass(Registry); - initializeLegacyLoopSinkPassPass(Registry); initializeLoopDataPrefetchLegacyPassPass(Registry); initializeLoopInstSimplifyLegacyPassPass(Registry); initializeLoopPredicationLegacyPassPass(Registry);