diff --git a/llvm/include/llvm/InitializePasses.h b/llvm/include/llvm/InitializePasses.h --- a/llvm/include/llvm/InitializePasses.h +++ b/llvm/include/llvm/InitializePasses.h @@ -342,11 +342,6 @@ void initializeOptimizePHIsPass(PassRegistry&); void initializePAEvalPass(PassRegistry&); void initializePEIPass(PassRegistry&); -void initializePGOIndirectCallPromotionLegacyPassPass(PassRegistry&); -void initializePGOInstrumentationGenLegacyPassPass(PassRegistry&); -void initializePGOInstrumentationUseLegacyPassPass(PassRegistry&); -void initializePGOInstrumentationGenCreateVarLegacyPassPass(PassRegistry&); -void initializePGOMemOPSizeOptLegacyPassPass(PassRegistry&); void initializePHIEliminationPass(PassRegistry&); void initializePartialInlinerLegacyPassPass(PassRegistry&); void initializePartiallyInlineLibCallsLegacyPassPass(PassRegistry&); diff --git a/llvm/include/llvm/LinkAllPasses.h b/llvm/include/llvm/LinkAllPasses.h --- a/llvm/include/llvm/LinkAllPasses.h +++ b/llvm/include/llvm/LinkAllPasses.h @@ -103,11 +103,6 @@ (void) llvm::createDomOnlyViewerPass(); (void) llvm::createDomViewerPass(); (void) llvm::createGCOVProfilerPass(); - (void) llvm::createPGOInstrumentationGenLegacyPass(); - (void) llvm::createPGOInstrumentationUseLegacyPass(); - (void) llvm::createPGOInstrumentationGenCreateVarLegacyPass(); - (void) llvm::createPGOIndirectCallPromotionLegacyPass(); - (void) llvm::createPGOMemOPSizeOptLegacyPass(); (void) llvm::createInstrProfilingLegacyPass(); (void) llvm::createFunctionImportPass(); (void) llvm::createFunctionInliningPass(); diff --git a/llvm/include/llvm/Transforms/IPO/PassManagerBuilder.h b/llvm/include/llvm/Transforms/IPO/PassManagerBuilder.h --- a/llvm/include/llvm/Transforms/IPO/PassManagerBuilder.h +++ b/llvm/include/llvm/Transforms/IPO/PassManagerBuilder.h @@ -213,7 +213,6 @@ void addInitialAliasAnalysisPasses(legacy::PassManagerBase &PM) const; void addLTOOptimizationPasses(legacy::PassManagerBase &PM); void addLateLTOOptimizationPasses(legacy::PassManagerBase &PM); - void addPGOInstrPasses(legacy::PassManagerBase &MPM, bool IsCS); void addFunctionSimplificationPasses(legacy::PassManagerBase &MPM); void addVectorPasses(legacy::PassManagerBase &PM, bool IsFullLTO); diff --git a/llvm/include/llvm/Transforms/Instrumentation.h b/llvm/include/llvm/Transforms/Instrumentation.h --- a/llvm/include/llvm/Transforms/Instrumentation.h +++ b/llvm/include/llvm/Transforms/Instrumentation.h @@ -78,18 +78,6 @@ ModulePass *createGCOVProfilerPass(const GCOVOptions &Options = GCOVOptions::getDefault()); -// PGO Instrumention. Parameter IsCS indicates if this is the context sensitive -// instrumentation. -ModulePass *createPGOInstrumentationGenLegacyPass(bool IsCS = false); -ModulePass * -createPGOInstrumentationUseLegacyPass(StringRef Filename = StringRef(""), - bool IsCS = false); -ModulePass *createPGOInstrumentationGenCreateVarLegacyPass( - StringRef CSInstrName = StringRef("")); -ModulePass *createPGOIndirectCallPromotionLegacyPass(bool InLTO = false, - bool SamplePGO = false); -FunctionPass *createPGOMemOPSizeOptLegacyPass(); - ModulePass *createCGProfileLegacyPass(); // The pgo-specific indirect call promotion function declared below is used by diff --git a/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp b/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp --- a/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp +++ b/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp @@ -327,61 +327,6 @@ FPM.add(createEarlyCSEPass()); } -// Do PGO instrumentation generation or use pass as the option specified. -void PassManagerBuilder::addPGOInstrPasses(legacy::PassManagerBase &MPM, - bool IsCS = false) { - if (IsCS) { - if (!EnablePGOCSInstrGen && !EnablePGOCSInstrUse) - return; - } else if (!EnablePGOInstrGen && PGOInstrUse.empty() && PGOSampleUse.empty()) - return; - - // Perform the preinline and cleanup passes for O1 and above. - // We will not do this inline for context sensitive PGO (when IsCS is true). - if (OptLevel > 0 && !DisablePreInliner && PGOSampleUse.empty() && !IsCS) { - // Create preinline pass. We construct an InlineParams object and specify - // the threshold here to avoid the command line options of the regular - // inliner to influence pre-inlining. The only fields of InlineParams we - // care about are DefaultThreshold and HintThreshold. - InlineParams IP; - IP.DefaultThreshold = PreInlineThreshold; - // FIXME: The hint threshold has the same value used by the regular inliner - // when not optimzing for size. This should probably be lowered after - // performance testing. - // Use PreInlineThreshold for both -Os and -Oz. Not running preinliner makes - // the instrumented binary unusably large. Even if PreInlineThreshold is not - // correct thresold for -Oz, it is better than not running preinliner. - IP.HintThreshold = SizeLevel > 0 ? PreInlineThreshold : 325; - - MPM.add(createFunctionInliningPass(IP)); - MPM.add(createSROAPass()); - MPM.add(createEarlyCSEPass()); // Catch trivial redundancies - MPM.add(createCFGSimplificationPass( - SimplifyCFGOptions().convertSwitchRangeToICmp( - true))); // Merge & remove BBs - MPM.add(createInstructionCombiningPass()); // Combine silly seq's - addExtensionsToPM(EP_Peephole, MPM); - } - if ((EnablePGOInstrGen && !IsCS) || (EnablePGOCSInstrGen && IsCS)) { - MPM.add(createPGOInstrumentationGenLegacyPass(IsCS)); - // Add the profile lowering pass. - InstrProfOptions Options; - if (!PGOInstrGen.empty()) - Options.InstrProfileOutput = PGOInstrGen; - Options.DoCounterPromotion = true; - Options.UseBFIInPromotion = IsCS; - MPM.add(createLoopRotatePass()); - MPM.add(createInstrProfilingLegacyPass(Options, IsCS)); - } - if (!PGOInstrUse.empty()) - MPM.add(createPGOInstrumentationUseLegacyPass(PGOInstrUse, IsCS)); - // Indirect call promotion that promotes intra-module targets only. - // For ThinLTO this is done earlier due to interactions with globalopt - // for imported functions. We don't run this at -O0. - if (OptLevel > 0 && !IsCS) - MPM.add( - createPGOIndirectCallPromotionLegacyPass(false, !PGOSampleUse.empty())); -} void PassManagerBuilder::addFunctionSimplificationPasses( legacy::PassManagerBase &MPM) { // Start of function pass. @@ -423,10 +368,6 @@ MPM.add(createLibCallsShrinkWrapPass()); addExtensionsToPM(EP_Peephole, MPM); - // Optimize memory intrinsic calls based on the profiled size information. - if (SizeLevel == 0) - MPM.add(createPGOMemOPSizeOptLegacyPass()); - // TODO: Investigate the cost/benefit of tail call elimination on debugging. if (OptLevel > 1) MPM.add(createTailCallEliminationPass()); // Eliminate tail calls @@ -666,10 +607,6 @@ void PassManagerBuilder::populateModulePassManager( legacy::PassManagerBase &MPM) { - // Whether this is a default or *LTO pre-link pipeline. The FullLTO post-link - // is handled separately, so just check this is not the ThinLTO post-link. - bool DefaultOrPreLinkPipeline = !PerformThinLTO; - MPM.add(createAnnotation2MetadataLegacyPass()); if (!PGOSampleUse.empty()) { @@ -687,7 +624,6 @@ // If all optimizations are disabled, just run the always-inline pass and, // if enabled, the function merging pass. if (OptLevel == 0) { - addPGOInstrPasses(MPM); if (Inliner) { MPM.add(Inliner); Inliner = nullptr; @@ -741,8 +677,6 @@ // earlier in the pass pipeline, here before globalopt. Otherwise imported // available_externally functions look unreferenced and are removed. if (PerformThinLTO) { - MPM.add(createPGOIndirectCallPromotionLegacyPass(/*InLTO = */ true, - !PGOSampleUse.empty())); MPM.add(createLowerTypeTestsPass(nullptr, nullptr, true)); } @@ -785,19 +719,6 @@ createCFGSimplificationPass(SimplifyCFGOptions().convertSwitchRangeToICmp( true))); // Clean up after IPCP & DAE - // For SamplePGO in ThinLTO compile phase, we do not want to do indirect - // call promotion as it will change the CFG too much to make the 2nd - // profile annotation in backend more difficult. - // PGO instrumentation is added during the compile phase for ThinLTO, do - // not run it a second time - if (DefaultOrPreLinkPipeline && !PrepareForThinLTOUsingPGOSampleProfile) - addPGOInstrPasses(MPM); - - // Create profile COMDAT variables. Lld linker wants to see all variables - // before the LTO/ThinLTO link since it needs to resolve symbols/comdats. - if (!PerformThinLTO && EnablePGOCSInstrGen) - MPM.add(createPGOInstrumentationGenCreateVarLegacyPass(PGOInstrGen)); - // We add a module alias analysis pass here. In part due to bugs in the // analysis infrastructure this "works" in that the analysis stays alive // for the entire SCC pass run below. @@ -848,14 +769,6 @@ // and saves running remaining passes on the eliminated functions. MPM.add(createEliminateAvailableExternallyPass()); - // CSFDO instrumentation and use pass. Don't invoke this for Prepare pass - // for LTO and ThinLTO -- The actual pass will be called after all inlines - // are performed. - // Need to do this after COMDAT variables have been eliminated, - // (i.e. after EliminateAvailableExternallyPass). - if (!(PrepareForLTO || PrepareForThinLTO)) - addPGOInstrPasses(MPM, /* IsCS */ true); - if (EnableOrderFileInstrumentation) MPM.add(createInstrOrderFilePass()); @@ -1022,13 +935,6 @@ // Split call-site with more constrained arguments. PM.add(createCallSiteSplittingPass()); - // Indirect call promotion. This should promote all the targets that are - // left by the earlier promotion pass that promotes intra-module targets. - // This two-step promotion is to save the compile time. For LTO, it should - // produce the same result as if we only do promotion here. - PM.add( - createPGOIndirectCallPromotionLegacyPass(true, !PGOSampleUse.empty())); - // Propage constant function arguments by specializing the functions. if (EnableFunctionSpecialization && OptLevel > 2) PM.add(createFunctionSpecializationPass()); @@ -1094,9 +1000,6 @@ PM.add(createPruneEHPass()); // Remove dead EH info. - // CSFDO instrumentation and use pass. - addPGOInstrPasses(PM, /* IsCS */ true); - // Infer attributes on declarations, call sites, arguments, etc. for an SCC. if (AttributorRun & AttributorRunOption::CGSCC) PM.add(createAttributorCGSCCLegacyPass()); diff --git a/llvm/lib/Transforms/Instrumentation/IndirectCallPromotion.cpp b/llvm/lib/Transforms/Instrumentation/IndirectCallPromotion.cpp --- a/llvm/lib/Transforms/Instrumentation/IndirectCallPromotion.cpp +++ b/llvm/lib/Transforms/Instrumentation/IndirectCallPromotion.cpp @@ -106,55 +106,6 @@ namespace { -class PGOIndirectCallPromotionLegacyPass : public ModulePass { -public: - static char ID; - - PGOIndirectCallPromotionLegacyPass(bool InLTO = false, bool SamplePGO = false) - : ModulePass(ID), InLTO(InLTO), SamplePGO(SamplePGO) { - initializePGOIndirectCallPromotionLegacyPassPass( - *PassRegistry::getPassRegistry()); - } - - void getAnalysisUsage(AnalysisUsage &AU) const override { - AU.addRequired(); - } - - StringRef getPassName() const override { return "PGOIndirectCallPromotion"; } - -private: - bool runOnModule(Module &M) override; - - // If this pass is called in LTO. We need to special handling the PGOFuncName - // for the static variables due to LTO's internalization. - bool InLTO; - - // If this pass is called in SamplePGO. We need to add the prof metadata to - // the promoted direct call. - bool SamplePGO; -}; - -} // end anonymous namespace - -char PGOIndirectCallPromotionLegacyPass::ID = 0; - -INITIALIZE_PASS_BEGIN(PGOIndirectCallPromotionLegacyPass, "pgo-icall-prom", - "Use PGO instrumentation profile to promote indirect " - "calls to direct calls.", - false, false) -INITIALIZE_PASS_DEPENDENCY(ProfileSummaryInfoWrapperPass) -INITIALIZE_PASS_END(PGOIndirectCallPromotionLegacyPass, "pgo-icall-prom", - "Use PGO instrumentation profile to promote indirect " - "calls to direct calls.", - false, false) - -ModulePass *llvm::createPGOIndirectCallPromotionLegacyPass(bool InLTO, - bool SamplePGO) { - return new PGOIndirectCallPromotionLegacyPass(InLTO, SamplePGO); -} - -namespace { - // The class for main data structure to promote indirect calls to conditional // direct calls. class ICallPromotionFunc { @@ -419,15 +370,6 @@ return Changed; } -bool PGOIndirectCallPromotionLegacyPass::runOnModule(Module &M) { - ProfileSummaryInfo *PSI = - &getAnalysis().getPSI(); - - // Command-line option has the priority for InLTO. - return promoteIndirectCalls(M, PSI, InLTO | ICPLTOMode, - SamplePGO | ICPSamplePGOMode); -} - PreservedAnalyses PGOIndirectCallPromotion::run(Module &M, ModuleAnalysisManager &AM) { ProfileSummaryInfo *PSI = &AM.getResult(M); diff --git a/llvm/lib/Transforms/Instrumentation/Instrumentation.cpp b/llvm/lib/Transforms/Instrumentation/Instrumentation.cpp --- a/llvm/lib/Transforms/Instrumentation/Instrumentation.cpp +++ b/llvm/lib/Transforms/Instrumentation/Instrumentation.cpp @@ -98,10 +98,6 @@ initializeBoundsCheckingLegacyPassPass(Registry); initializeControlHeightReductionLegacyPassPass(Registry); initializeGCOVProfilerLegacyPassPass(Registry); - initializePGOInstrumentationGenLegacyPassPass(Registry); - initializePGOInstrumentationUseLegacyPassPass(Registry); - initializePGOIndirectCallPromotionLegacyPassPass(Registry); - initializePGOMemOPSizeOptLegacyPassPass(Registry); initializeCGProfileLegacyPassPass(Registry); initializeInstrOrderFileLegacyPassPass(Registry); initializeInstrProfilingLegacyPassPass(Registry); diff --git a/llvm/lib/Transforms/Instrumentation/PGOInstrumentation.cpp b/llvm/lib/Transforms/Instrumentation/PGOInstrumentation.cpp --- a/llvm/lib/Transforms/Instrumentation/PGOInstrumentation.cpp +++ b/llvm/lib/Transforms/Instrumentation/PGOInstrumentation.cpp @@ -431,125 +431,8 @@ unsigned getNumOfSelectInsts() const { return NSIs; } }; - -class PGOInstrumentationGenLegacyPass : public ModulePass { -public: - static char ID; - - PGOInstrumentationGenLegacyPass(bool IsCS = false) - : ModulePass(ID), IsCS(IsCS) { - initializePGOInstrumentationGenLegacyPassPass( - *PassRegistry::getPassRegistry()); - } - - StringRef getPassName() const override { return "PGOInstrumentationGenPass"; } - -private: - // Is this is context-sensitive instrumentation. - bool IsCS; - bool runOnModule(Module &M) override; - - void getAnalysisUsage(AnalysisUsage &AU) const override { - AU.addRequired(); - AU.addRequired(); - } -}; - -class PGOInstrumentationUseLegacyPass : public ModulePass { -public: - static char ID; - - // Provide the profile filename as the parameter. - PGOInstrumentationUseLegacyPass(std::string Filename = "", bool IsCS = false) - : ModulePass(ID), ProfileFileName(std::move(Filename)), IsCS(IsCS) { - if (!PGOTestProfileFile.empty()) - ProfileFileName = PGOTestProfileFile; - initializePGOInstrumentationUseLegacyPassPass( - *PassRegistry::getPassRegistry()); - } - - StringRef getPassName() const override { return "PGOInstrumentationUsePass"; } - -private: - std::string ProfileFileName; - // Is this is context-sensitive instrumentation use. - bool IsCS; - - bool runOnModule(Module &M) override; - - void getAnalysisUsage(AnalysisUsage &AU) const override { - AU.addRequired(); - AU.addRequired(); - AU.addRequired(); - } -}; - -class PGOInstrumentationGenCreateVarLegacyPass : public ModulePass { -public: - static char ID; - StringRef getPassName() const override { - return "PGOInstrumentationGenCreateVarPass"; - } - PGOInstrumentationGenCreateVarLegacyPass(std::string CSInstrName = "") - : ModulePass(ID), InstrProfileOutput(CSInstrName) { - initializePGOInstrumentationGenCreateVarLegacyPassPass( - *PassRegistry::getPassRegistry()); - } - -private: - bool runOnModule(Module &M) override { - createProfileFileNameVar(M, InstrProfileOutput); - // The variable in a comdat may be discarded by LTO. Ensure the - // declaration will be retained. - appendToCompilerUsed(M, createIRLevelProfileFlagVar(M, /*IsCS=*/true)); - return false; - } - std::string InstrProfileOutput; -}; - } // end anonymous namespace -char PGOInstrumentationGenLegacyPass::ID = 0; - -INITIALIZE_PASS_BEGIN(PGOInstrumentationGenLegacyPass, "pgo-instr-gen", - "PGO instrumentation.", false, false) -INITIALIZE_PASS_DEPENDENCY(BlockFrequencyInfoWrapperPass) -INITIALIZE_PASS_DEPENDENCY(BranchProbabilityInfoWrapperPass) -INITIALIZE_PASS_DEPENDENCY(TargetLibraryInfoWrapperPass) -INITIALIZE_PASS_END(PGOInstrumentationGenLegacyPass, "pgo-instr-gen", - "PGO instrumentation.", false, false) - -ModulePass *llvm::createPGOInstrumentationGenLegacyPass(bool IsCS) { - return new PGOInstrumentationGenLegacyPass(IsCS); -} - -char PGOInstrumentationUseLegacyPass::ID = 0; - -INITIALIZE_PASS_BEGIN(PGOInstrumentationUseLegacyPass, "pgo-instr-use", - "Read PGO instrumentation profile.", false, false) -INITIALIZE_PASS_DEPENDENCY(BlockFrequencyInfoWrapperPass) -INITIALIZE_PASS_DEPENDENCY(BranchProbabilityInfoWrapperPass) -INITIALIZE_PASS_DEPENDENCY(ProfileSummaryInfoWrapperPass) -INITIALIZE_PASS_END(PGOInstrumentationUseLegacyPass, "pgo-instr-use", - "Read PGO instrumentation profile.", false, false) - -ModulePass *llvm::createPGOInstrumentationUseLegacyPass(StringRef Filename, - bool IsCS) { - return new PGOInstrumentationUseLegacyPass(Filename.str(), IsCS); -} - -char PGOInstrumentationGenCreateVarLegacyPass::ID = 0; - -INITIALIZE_PASS(PGOInstrumentationGenCreateVarLegacyPass, - "pgo-instr-gen-create-var", - "Create PGO instrumentation version variable for CSPGO.", false, - false) - -ModulePass * -llvm::createPGOInstrumentationGenCreateVarLegacyPass(StringRef CSInstrName) { - return new PGOInstrumentationGenCreateVarLegacyPass(std::string(CSInstrName)); -} - namespace { /// An MST based instrumentation for PGO @@ -1698,22 +1581,6 @@ return PreservedAnalyses::all(); } -bool PGOInstrumentationGenLegacyPass::runOnModule(Module &M) { - if (skipModule(M)) - return false; - - auto LookupTLI = [this](Function &F) -> TargetLibraryInfo & { - return this->getAnalysis().getTLI(F); - }; - auto LookupBPI = [this](Function &F) { - return &this->getAnalysis(F).getBPI(); - }; - auto LookupBFI = [this](Function &F) { - return &this->getAnalysis(F).getBFI(); - }; - return InstrumentAllFunctions(M, LookupTLI, LookupBPI, LookupBFI, IsCS); -} - PreservedAnalyses PGOInstrumentationGen::run(Module &M, ModuleAnalysisManager &AM) { auto &FAM = AM.getResult(M).getManager(); @@ -2074,25 +1941,6 @@ return PreservedAnalyses::none(); } -bool PGOInstrumentationUseLegacyPass::runOnModule(Module &M) { - if (skipModule(M)) - return false; - - auto LookupTLI = [this](Function &F) -> TargetLibraryInfo & { - return this->getAnalysis().getTLI(F); - }; - auto LookupBPI = [this](Function &F) { - return &this->getAnalysis(F).getBPI(); - }; - auto LookupBFI = [this](Function &F) { - return &this->getAnalysis(F).getBFI(); - }; - - auto *PSI = &getAnalysis().getPSI(); - return annotateAllFunctions(M, ProfileFileName, "", LookupTLI, LookupBPI, - LookupBFI, PSI, IsCS); -} - static std::string getSimpleNodeName(const BasicBlock *Node) { if (!Node->getName().empty()) return std::string(Node->getName()); diff --git a/llvm/lib/Transforms/Instrumentation/PGOMemOPSizeOpt.cpp b/llvm/lib/Transforms/Instrumentation/PGOMemOPSizeOpt.cpp --- a/llvm/lib/Transforms/Instrumentation/PGOMemOPSizeOpt.cpp +++ b/llvm/lib/Transforms/Instrumentation/PGOMemOPSizeOpt.cpp @@ -100,43 +100,6 @@ MemOpMaxOptSize("memop-value-prof-max-opt-size", cl::Hidden, cl::init(128), cl::desc("Optimize the memop size <= this value")); -namespace { -class PGOMemOPSizeOptLegacyPass : public FunctionPass { -public: - static char ID; - - PGOMemOPSizeOptLegacyPass() : FunctionPass(ID) { - initializePGOMemOPSizeOptLegacyPassPass(*PassRegistry::getPassRegistry()); - } - - StringRef getPassName() const override { return "PGOMemOPSize"; } - -private: - bool runOnFunction(Function &F) override; - void getAnalysisUsage(AnalysisUsage &AU) const override { - AU.addRequired(); - AU.addRequired(); - AU.addPreserved(); - AU.addPreserved(); - AU.addRequired(); - } -}; -} // end anonymous namespace - -char PGOMemOPSizeOptLegacyPass::ID = 0; -INITIALIZE_PASS_BEGIN(PGOMemOPSizeOptLegacyPass, "pgo-memop-opt", - "Optimize memory intrinsic using its size value profile", - false, false) -INITIALIZE_PASS_DEPENDENCY(BlockFrequencyInfoWrapperPass) -INITIALIZE_PASS_DEPENDENCY(TargetLibraryInfoWrapperPass) -INITIALIZE_PASS_END(PGOMemOPSizeOptLegacyPass, "pgo-memop-opt", - "Optimize memory intrinsic using its size value profile", - false, false) - -FunctionPass *llvm::createPGOMemOPSizeOptLegacyPass() { - return new PGOMemOPSizeOptLegacyPass(); -} - namespace { static const char *getMIName(const MemIntrinsic *MI) { @@ -515,20 +478,6 @@ return MemOPSizeOpt.isChanged(); } -bool PGOMemOPSizeOptLegacyPass::runOnFunction(Function &F) { - BlockFrequencyInfo &BFI = - getAnalysis().getBFI(); - auto &ORE = getAnalysis().getORE(); - auto *DTWP = getAnalysisIfAvailable(); - DominatorTree *DT = DTWP ? &DTWP->getDomTree() : nullptr; - TargetLibraryInfo &TLI = - getAnalysis().getTLI(F); - return PGOMemOPSizeOptImpl(F, BFI, ORE, DT, TLI); -} - -namespace llvm { -char &PGOMemOPSizeOptID = PGOMemOPSizeOptLegacyPass::ID; - PreservedAnalyses PGOMemOPSizeOpt::run(Function &F, FunctionAnalysisManager &FAM) { auto &BFI = FAM.getResult(F); @@ -542,4 +491,3 @@ PA.preserve(); return PA; } -} // namespace llvm diff --git a/llvm/test/CodeGen/AMDGPU/opt-pipeline.ll b/llvm/test/CodeGen/AMDGPU/opt-pipeline.ll --- a/llvm/test/CodeGen/AMDGPU/opt-pipeline.ll +++ b/llvm/test/CodeGen/AMDGPU/opt-pipeline.ll @@ -118,14 +118,6 @@ ; GCN-O1-NEXT: Optimization Remark Emitter ; GCN-O1-NEXT: Combine redundant instructions ; GCN-O1-NEXT: Conditionally eliminate dead library calls -; GCN-O1-NEXT: Natural Loop Information -; GCN-O1-NEXT: Post-Dominator Tree Construction -; GCN-O1-NEXT: Branch Probability Analysis -; GCN-O1-NEXT: Block Frequency Analysis -; GCN-O1-NEXT: Lazy Branch Probability Analysis -; GCN-O1-NEXT: Lazy Block Frequency Analysis -; GCN-O1-NEXT: Optimization Remark Emitter -; GCN-O1-NEXT: PGOMemOPSize ; GCN-O1-NEXT: Simplify the CFG ; GCN-O1-NEXT: Reassociate expressions ; GCN-O1-NEXT: Dominator Tree Construction @@ -439,14 +431,6 @@ ; GCN-O2-NEXT: Optimization Remark Emitter ; GCN-O2-NEXT: Combine redundant instructions ; GCN-O2-NEXT: Conditionally eliminate dead library calls -; GCN-O2-NEXT: Natural Loop Information -; GCN-O2-NEXT: Post-Dominator Tree Construction -; GCN-O2-NEXT: Branch Probability Analysis -; GCN-O2-NEXT: Block Frequency Analysis -; GCN-O2-NEXT: Lazy Branch Probability Analysis -; GCN-O2-NEXT: Lazy Block Frequency Analysis -; GCN-O2-NEXT: Optimization Remark Emitter -; GCN-O2-NEXT: PGOMemOPSize ; GCN-O2-NEXT: Basic Alias Analysis (stateless AA impl) ; GCN-O2-NEXT: Function Alias Analysis Results ; GCN-O2-NEXT: Natural Loop Information @@ -804,14 +788,6 @@ ; GCN-O3-NEXT: Optimization Remark Emitter ; GCN-O3-NEXT: Combine redundant instructions ; GCN-O3-NEXT: Conditionally eliminate dead library calls -; GCN-O3-NEXT: Natural Loop Information -; GCN-O3-NEXT: Post-Dominator Tree Construction -; GCN-O3-NEXT: Branch Probability Analysis -; GCN-O3-NEXT: Block Frequency Analysis -; GCN-O3-NEXT: Lazy Branch Probability Analysis -; GCN-O3-NEXT: Lazy Block Frequency Analysis -; GCN-O3-NEXT: Optimization Remark Emitter -; GCN-O3-NEXT: PGOMemOPSize ; GCN-O3-NEXT: Basic Alias Analysis (stateless AA impl) ; GCN-O3-NEXT: Function Alias Analysis Results ; GCN-O3-NEXT: Natural Loop Information