Index: llvm/trunk/test/DebugInfo/debugify-each.ll =================================================================== --- llvm/trunk/test/DebugInfo/debugify-each.ll +++ llvm/trunk/test/DebugInfo/debugify-each.ll @@ -11,14 +11,14 @@ ; Verify that the module & function (check-)debugify passes run at least twice. -; CHECK-DAG: CheckModuleDebugify: PASS -; CHECK-DAG: CheckFunctionDebugify: PASS -; CHECK-DAG: CheckFunctionDebugify: PASS -; CHECK-DAG: CheckFunctionDebugify: PASS -; CHECK-DAG: CheckFunctionDebugify: PASS +; CHECK-DAG: CheckModuleDebugify [{{.*}}]: PASS +; CHECK-DAG: CheckFunctionDebugify [{{.*}}]: PASS +; CHECK-DAG: CheckFunctionDebugify [{{.*}}]: PASS +; CHECK-DAG: CheckFunctionDebugify [{{.*}}]: PASS +; CHECK-DAG: CheckFunctionDebugify [{{.*}}]: PASS -; CHECK-DAG: CheckModuleDebugify: PASS -; CHECK-DAG: CheckFunctionDebugify: PASS -; CHECK-DAG: CheckFunctionDebugify: PASS -; CHECK-DAG: CheckFunctionDebugify: PASS -; CHECK-DAG: CheckFunctionDebugify: PASS +; CHECK-DAG: CheckModuleDebugify [{{.*}}]: PASS +; CHECK-DAG: CheckFunctionDebugify [{{.*}}]: PASS +; CHECK-DAG: CheckFunctionDebugify [{{.*}}]: PASS +; CHECK-DAG: CheckFunctionDebugify [{{.*}}]: PASS +; CHECK-DAG: CheckFunctionDebugify [{{.*}}]: PASS Index: llvm/trunk/test/DebugInfo/debugify.ll =================================================================== --- llvm/trunk/test/DebugInfo/debugify.ll +++ llvm/trunk/test/DebugInfo/debugify.ll @@ -80,6 +80,6 @@ ; CHECK-FAIL: WARNING: Missing line 3 ; CHECK-FAIL: WARNING: Missing line 4 ; CHECK-FAIL: ERROR: Missing variable 1 -; CHECK-FAIL: CheckModuleDebugify: FAIL +; CHECK-FAIL: CheckModuleDebugify [{{.*}}]: FAIL -; PASS: CheckModuleDebugify: PASS +; PASS: CheckModuleDebugify [{{.*}}]: PASS Index: llvm/trunk/tools/opt/Debugify.cpp =================================================================== --- llvm/trunk/tools/opt/Debugify.cpp +++ llvm/trunk/tools/opt/Debugify.cpp @@ -126,6 +126,7 @@ bool checkDebugifyMetadata(Module &M, iterator_range Functions, + StringRef NameOfWrappedPass, StringRef Banner, bool Strip) { // Skip modules without debugify metadata. @@ -190,7 +191,8 @@ outs() << "ERROR: Missing variable " << Idx + 1 << "\n"; HasErrors |= MissingVars.count() > 0; - outs() << Banner << (HasErrors ? "FAIL" : "PASS") << '\n'; + outs() << Banner << " [" << NameOfWrappedPass << "]: " + << (HasErrors ? "FAIL" : "PASS") << '\n'; if (HasErrors) { outs() << "Module IR Dump\n"; M.print(outs(), nullptr, false); @@ -245,16 +247,18 @@ /// legacy module pass manager. struct CheckDebugifyModulePass : public ModulePass { bool runOnModule(Module &M) override { - return checkDebugifyMetadata(M, M.functions(), "CheckModuleDebugify: ", - Strip); + return checkDebugifyMetadata(M, M.functions(), NameOfWrappedPass, + "CheckModuleDebugify", Strip); } - CheckDebugifyModulePass(bool Strip = false) : ModulePass(ID), Strip(Strip) {} + CheckDebugifyModulePass(bool Strip = false, StringRef NameOfWrappedPass = "") + : ModulePass(ID), Strip(Strip), NameOfWrappedPass(NameOfWrappedPass) {} static char ID; // Pass identification. private: bool Strip; + StringRef NameOfWrappedPass; }; /// FunctionPass for checking debug info inserted by -debugify-function, used @@ -264,10 +268,11 @@ Module &M = *F.getParent(); auto FuncIt = F.getIterator(); return checkDebugifyMetadata(M, make_range(FuncIt, std::next(FuncIt)), - "CheckFunctionDebugify: ", Strip); + NameOfWrappedPass, "CheckFunctionDebugify", Strip); } - CheckDebugifyFunctionPass(bool Strip = false) : FunctionPass(ID), Strip(Strip) {} + CheckDebugifyFunctionPass(bool Strip = false, StringRef NameOfWrappedPass = "") + : FunctionPass(ID), Strip(Strip), NameOfWrappedPass(NameOfWrappedPass) {} void getAnalysisUsage(AnalysisUsage &AU) const override { AU.setPreservesAll(); @@ -277,6 +282,7 @@ private: bool Strip; + StringRef NameOfWrappedPass; }; } // end anonymous namespace @@ -294,17 +300,17 @@ return PreservedAnalyses::all(); } -ModulePass *createCheckDebugifyModulePass(bool Strip) { - return new CheckDebugifyModulePass(Strip); +ModulePass *createCheckDebugifyModulePass(bool Strip, StringRef NameOfWrappedPass) { + return new CheckDebugifyModulePass(Strip, NameOfWrappedPass); } -FunctionPass *createCheckDebugifyFunctionPass(bool Strip) { - return new CheckDebugifyFunctionPass(Strip); +FunctionPass *createCheckDebugifyFunctionPass(bool Strip, StringRef NameOfWrappedPass) { + return new CheckDebugifyFunctionPass(Strip, NameOfWrappedPass); } PreservedAnalyses NewPMCheckDebugifyPass::run(Module &M, ModuleAnalysisManager &) { - checkDebugifyMetadata(M, M.functions(), "CheckModuleDebugify: ", false); + checkDebugifyMetadata(M, M.functions(), "", "CheckModuleDebugify", false); return PreservedAnalyses::all(); } Index: llvm/trunk/tools/opt/PassPrinters.h =================================================================== --- llvm/trunk/tools/opt/PassPrinters.h +++ llvm/trunk/tools/opt/PassPrinters.h @@ -56,8 +56,13 @@ llvm::PreservedAnalyses run(llvm::Module &M, llvm::ModuleAnalysisManager &AM); }; -llvm::ModulePass *createCheckDebugifyModulePass(bool Strip = false); -llvm::FunctionPass *createCheckDebugifyFunctionPass(bool Strip = false); +llvm::ModulePass * +createCheckDebugifyModulePass(bool Strip = false, + llvm::StringRef NameOfWrappedPass = ""); + +llvm::FunctionPass * +createCheckDebugifyFunctionPass(bool Strip = false, + llvm::StringRef NameOfWrappedPass = ""); struct NewPMCheckDebugifyPass : public llvm::PassInfoMixin { Index: llvm/trunk/tools/opt/opt.cpp =================================================================== --- llvm/trunk/tools/opt/opt.cpp +++ llvm/trunk/tools/opt/opt.cpp @@ -278,12 +278,12 @@ case PT_Function: super::add(createDebugifyFunctionPass()); super::add(P); - super::add(createCheckDebugifyFunctionPass(true)); + super::add(createCheckDebugifyFunctionPass(true, P->getPassName())); break; case PT_Module: super::add(createDebugifyModulePass()); super::add(P); - super::add(createCheckDebugifyModulePass(true)); + super::add(createCheckDebugifyModulePass(true, P->getPassName())); break; default: super::add(P);