diff --git a/llvm/include/llvm/Transforms/Utils/Debugify.h b/llvm/include/llvm/Transforms/Utils/Debugify.h --- a/llvm/include/llvm/Transforms/Utils/Debugify.h +++ b/llvm/include/llvm/Transforms/Utils/Debugify.h @@ -104,6 +104,9 @@ struct NewPMDebugifyPass : public llvm::PassInfoMixin { llvm::PreservedAnalyses run(llvm::Module &M, llvm::ModuleAnalysisManager &AM); + void printPipeline(llvm::raw_ostream &OS, + llvm::function_ref + MapClassName2PassName); }; /// Track how much `debugify` information (in the `synthetic` mode only) @@ -152,6 +155,9 @@ struct NewPMCheckDebugifyPass : public llvm::PassInfoMixin { llvm::PreservedAnalyses run(llvm::Module &M, llvm::ModuleAnalysisManager &AM); + void printPipeline(llvm::raw_ostream &OS, + llvm::function_ref + MapClassName2PassName); }; namespace llvm { diff --git a/llvm/lib/Transforms/Utils/Debugify.cpp b/llvm/lib/Transforms/Utils/Debugify.cpp --- a/llvm/lib/Transforms/Utils/Debugify.cpp +++ b/llvm/lib/Transforms/Utils/Debugify.cpp @@ -946,6 +946,13 @@ return PreservedAnalyses::all(); } +void NewPMDebugifyPass::printPipeline( + raw_ostream &OS, function_ref MapClassName2PassName) { + // The debugify pass is not included in the PassRegistry. Just print the pass + // name directly. + OS << "debugify"; +} + ModulePass *createCheckDebugifyModulePass( bool Strip, StringRef NameOfWrappedPass, DebugifyStatsMap *StatsMap, enum DebugifyMode Mode, DebugInfoPerPassMap *DIPreservationMap, @@ -977,6 +984,13 @@ return PreservedAnalyses::all(); } +void NewPMCheckDebugifyPass::printPipeline( + raw_ostream &OS, function_ref MapClassName2PassName) { + // The check-debugify pass is not included in the PassRegistry. Just print the + // pass name directly. + OS << "check-debugify"; +} + static bool isIgnoredPass(StringRef PassID) { return isSpecialPass(PassID, {"PassManager", "PassAdaptor", "AnalysisManagerProxy", "PrintFunctionPass", diff --git a/llvm/test/Other/new-pm-print-pipeline.ll b/llvm/test/Other/new-pm-print-pipeline.ll --- a/llvm/test/Other/new-pm-print-pipeline.ll +++ b/llvm/test/Other/new-pm-print-pipeline.ll @@ -73,3 +73,8 @@ ;; Test that the loop-nest-pass lnicm is printed with the other loop-passes in the pipeline. ; RUN: opt -disable-output -disable-verify -print-pipeline-passes -passes='function(loop-mssa(licm,loop-rotate,loop-deletion,lnicm,loop-rotate))' < %s | FileCheck %s --match-full-lines --check-prefixes=CHECK-23 ; CHECK-23: function(loop-mssa(licm,loop-rotate,loop-deletion,lnicm,loop-rotate)) + +;; Test that -debugify and -check-debugify is printed correctly. +; RUN: opt -disable-output -disable-verify -print-pipeline-passes -passes='debugify,sroa,check-debugify' < %s | FileCheck %s --match-full-lines --check-prefixes=CHECK-24 +; RUN: opt -disable-output -disable-verify -print-pipeline-passes -enable-debugify -passes='sroa' < %s | FileCheck %s --match-full-lines --check-prefixes=CHECK-24 +; CHECK-24: debugify,function(sroa),check-debugify \ No newline at end of file