|
36 | 36 | #include "llvm/Analysis/AliasAnalysis.h"
|
37 | 37 | #include "llvm/Analysis/BlockFrequencyInfo.h"
|
38 | 38 | #include "llvm/Analysis/LoopInfo.h"
|
39 |
| -#include "llvm/Analysis/LoopPass.h" |
40 | 39 | #include "llvm/Analysis/MemorySSA.h"
|
41 | 40 | #include "llvm/Analysis/MemorySSAUpdater.h"
|
42 | 41 | #include "llvm/Analysis/ScalarEvolution.h"
|
43 | 42 | #include "llvm/IR/Dominators.h"
|
44 | 43 | #include "llvm/IR/Instructions.h"
|
45 |
| -#include "llvm/InitializePasses.h" |
46 | 44 | #include "llvm/Support/BranchProbability.h"
|
47 | 45 | #include "llvm/Support/CommandLine.h"
|
48 | 46 | #include "llvm/Transforms/Scalar.h"
|
@@ -390,58 +388,3 @@ PreservedAnalyses LoopSinkPass::run(Function &F, FunctionAnalysisManager &FAM) {
|
390 | 388 |
|
391 | 389 | return PA;
|
392 | 390 | }
|
393 |
| - |
394 |
| -namespace { |
395 |
| -struct LegacyLoopSinkPass : public LoopPass { |
396 |
| - static char ID; |
397 |
| - LegacyLoopSinkPass() : LoopPass(ID) { |
398 |
| - initializeLegacyLoopSinkPassPass(*PassRegistry::getPassRegistry()); |
399 |
| - } |
400 |
| - |
401 |
| - bool runOnLoop(Loop *L, LPPassManager &LPM) override { |
402 |
| - if (skipLoop(L)) |
403 |
| - return false; |
404 |
| - |
405 |
| - BasicBlock *Preheader = L->getLoopPreheader(); |
406 |
| - if (!Preheader) |
407 |
| - return false; |
408 |
| - |
409 |
| - // Enable LoopSink only when runtime profile is available. |
410 |
| - // With static profile, the sinking decision may be sub-optimal. |
411 |
| - if (!Preheader->getParent()->hasProfileData()) |
412 |
| - return false; |
413 |
| - |
414 |
| - AAResults &AA = getAnalysis<AAResultsWrapperPass>().getAAResults(); |
415 |
| - MemorySSA &MSSA = getAnalysis<MemorySSAWrapperPass>().getMSSA(); |
416 |
| - auto *SE = getAnalysisIfAvailable<ScalarEvolutionWrapperPass>(); |
417 |
| - bool Changed = sinkLoopInvariantInstructions( |
418 |
| - *L, AA, getAnalysis<LoopInfoWrapperPass>().getLoopInfo(), |
419 |
| - getAnalysis<DominatorTreeWrapperPass>().getDomTree(), |
420 |
| - getAnalysis<BlockFrequencyInfoWrapperPass>().getBFI(), |
421 |
| - MSSA, SE ? &SE->getSE() : nullptr); |
422 |
| - |
423 |
| - if (VerifyMemorySSA) |
424 |
| - MSSA.verifyMemorySSA(); |
425 |
| - |
426 |
| - return Changed; |
427 |
| - } |
428 |
| - |
429 |
| - void getAnalysisUsage(AnalysisUsage &AU) const override { |
430 |
| - AU.setPreservesCFG(); |
431 |
| - AU.addRequired<BlockFrequencyInfoWrapperPass>(); |
432 |
| - getLoopAnalysisUsage(AU); |
433 |
| - AU.addRequired<MemorySSAWrapperPass>(); |
434 |
| - AU.addPreserved<MemorySSAWrapperPass>(); |
435 |
| - } |
436 |
| -}; |
437 |
| -} |
438 |
| - |
439 |
| -char LegacyLoopSinkPass::ID = 0; |
440 |
| -INITIALIZE_PASS_BEGIN(LegacyLoopSinkPass, "loop-sink", "Loop Sink", false, |
441 |
| - false) |
442 |
| -INITIALIZE_PASS_DEPENDENCY(LoopPass) |
443 |
| -INITIALIZE_PASS_DEPENDENCY(BlockFrequencyInfoWrapperPass) |
444 |
| -INITIALIZE_PASS_DEPENDENCY(MemorySSAWrapperPass) |
445 |
| -INITIALIZE_PASS_END(LegacyLoopSinkPass, "loop-sink", "Loop Sink", false, false) |
446 |
| - |
447 |
| -Pass *llvm::createLoopSinkPass() { return new LegacyLoopSinkPass(); } |
0 commit comments