diff --git a/llvm/include/llvm/InitializePasses.h b/llvm/include/llvm/InitializePasses.h index 2305db4f775d4..eff6222abd704 100644 --- a/llvm/include/llvm/InitializePasses.h +++ b/llvm/include/llvm/InitializePasses.h @@ -172,7 +172,6 @@ void initializeLocalStackSlotPassPass(PassRegistry&); void initializeLocalizerPass(PassRegistry&); void initializeLoopDataPrefetchLegacyPassPass(PassRegistry&); void initializeLoopExtractorLegacyPassPass(PassRegistry &); -void initializeLoopGuardWideningLegacyPassPass(PassRegistry&); void initializeLoopInfoWrapperPassPass(PassRegistry&); void initializeLoopPassPass(PassRegistry&); void initializeLoopPredicationLegacyPassPass(PassRegistry&); diff --git a/llvm/include/llvm/LinkAllPasses.h b/llvm/include/llvm/LinkAllPasses.h index 0d15481034151..9585a32ec230a 100644 --- a/llvm/include/llvm/LinkAllPasses.h +++ b/llvm/include/llvm/LinkAllPasses.h @@ -79,7 +79,6 @@ namespace { (void) llvm::createDomViewerWrapperPassPass(); (void) llvm::createAlwaysInlinerLegacyPass(); (void) llvm::createGlobalsAAWrapperPass(); - (void) llvm::createLoopGuardWideningPass(); (void) llvm::createInstSimplifyLegacyPass(); (void) llvm::createInstructionCombiningPass(); (void) llvm::createJMCInstrumenterPass(); diff --git a/llvm/include/llvm/Transforms/Scalar.h b/llvm/include/llvm/Transforms/Scalar.h index 111e5446603d2..1ee1fb34cddfa 100644 --- a/llvm/include/llvm/Transforms/Scalar.h +++ b/llvm/include/llvm/Transforms/Scalar.h @@ -39,16 +39,6 @@ Pass *createRedundantDbgInstEliminationPass(); // FunctionPass *createDeadCodeEliminationPass(); -//===----------------------------------------------------------------------===// -// -// LoopGuardWidening - Analogous to the GuardWidening pass, but restricted to a -// single loop at a time for use within a LoopPassManager. Desired effect is -// to widen guards into preheader or a single guard within loop if that's not -// possible. -// -Pass *createLoopGuardWideningPass(); - - //===----------------------------------------------------------------------===// // // SROA - Replace aggregates or pieces of aggregates with scalar SSA values. diff --git a/llvm/lib/Transforms/Scalar/GuardWidening.cpp b/llvm/lib/Transforms/Scalar/GuardWidening.cpp index 0dd99f45f670d..5506dd82efd45 100644 --- a/llvm/lib/Transforms/Scalar/GuardWidening.cpp +++ b/llvm/lib/Transforms/Scalar/GuardWidening.cpp @@ -45,7 +45,6 @@ #include "llvm/Analysis/AssumptionCache.h" #include "llvm/Analysis/GuardUtils.h" #include "llvm/Analysis/LoopInfo.h" -#include "llvm/Analysis/LoopPass.h" #include "llvm/Analysis/MemorySSAUpdater.h" #include "llvm/Analysis/PostDominators.h" #include "llvm/Analysis/ValueTracking.h" @@ -54,8 +53,6 @@ #include "llvm/IR/IRBuilder.h" #include "llvm/IR/IntrinsicInst.h" #include "llvm/IR/PatternMatch.h" -#include "llvm/InitializePasses.h" -#include "llvm/Pass.h" #include "llvm/Support/CommandLine.h" #include "llvm/Support/Debug.h" #include "llvm/Support/KnownBits.h" @@ -1013,63 +1010,3 @@ PreservedAnalyses GuardWideningPass::run(Loop &L, LoopAnalysisManager &AM, PA.preserve(); return PA; } - -namespace { -/// Restricted to a single loop at a time. Can be -/// scheduled with other loop passes w/o breaking out of LPM -struct LoopGuardWideningLegacyPass : public LoopPass { - static char ID; - - LoopGuardWideningLegacyPass() : LoopPass(ID) { - initializeLoopGuardWideningLegacyPassPass(*PassRegistry::getPassRegistry()); - } - - bool runOnLoop(Loop *L, LPPassManager &LPM) override { - if (skipLoop(L)) - return false; - auto &DT = getAnalysis().getDomTree(); - auto &LI = getAnalysis().getLoopInfo(); - auto &AC = getAnalysis().getAssumptionCache( - *L->getHeader()->getParent()); - auto *PDTWP = getAnalysisIfAvailable(); - auto *PDT = PDTWP ? &PDTWP->getPostDomTree() : nullptr; - auto *MSSAWP = getAnalysisIfAvailable(); - std::unique_ptr MSSAU; - if (MSSAWP) - MSSAU = std::make_unique(&MSSAWP->getMSSA()); - - BasicBlock *RootBB = L->getLoopPredecessor(); - if (!RootBB) - RootBB = L->getHeader(); - auto BlockFilter = [&](BasicBlock *BB) { - return BB == RootBB || L->contains(BB); - }; - return GuardWideningImpl(DT, PDT, LI, AC, MSSAU ? MSSAU.get() : nullptr, - DT.getNode(RootBB), BlockFilter) - .run(); - } - - void getAnalysisUsage(AnalysisUsage &AU) const override { - AU.setPreservesCFG(); - getLoopAnalysisUsage(AU); - AU.addPreserved(); - AU.addPreserved(); - } -}; -} - -char LoopGuardWideningLegacyPass::ID = 0; - -INITIALIZE_PASS_BEGIN(LoopGuardWideningLegacyPass, "loop-guard-widening", - "Widen guards (within a single loop, as a loop pass)", - false, false) -INITIALIZE_PASS_DEPENDENCY(DominatorTreeWrapperPass) -INITIALIZE_PASS_DEPENDENCY(PostDominatorTreeWrapperPass) -INITIALIZE_PASS_DEPENDENCY(LoopInfoWrapperPass) -INITIALIZE_PASS_END(LoopGuardWideningLegacyPass, "loop-guard-widening", - "Widen guards (within a single loop, as a loop pass)", - false, false) - -Pass *llvm::createLoopGuardWideningPass() { - return new LoopGuardWideningLegacyPass(); -} diff --git a/llvm/lib/Transforms/Scalar/Scalar.cpp b/llvm/lib/Transforms/Scalar/Scalar.cpp index 80db06b03a901..4df270bcf0b83 100644 --- a/llvm/lib/Transforms/Scalar/Scalar.cpp +++ b/llvm/lib/Transforms/Scalar/Scalar.cpp @@ -21,7 +21,6 @@ using namespace llvm; void llvm::initializeScalarOpts(PassRegistry &Registry) { initializeConstantHoistingLegacyPassPass(Registry); initializeDCELegacyPassPass(Registry); - initializeLoopGuardWideningLegacyPassPass(Registry); initializeGVNLegacyPassPass(Registry); initializeEarlyCSELegacyPassPass(Registry); initializeEarlyCSEMemSSALegacyPassPass(Registry);