[Debugfiy] Print the pass name next to the result
authorAnastasis Grammenos <anastasis.gramm2@gmail.com>
Tue, 15 May 2018 23:38:05 +0000 (23:38 +0000)
committerAnastasis Grammenos <anastasis.gramm2@gmail.com>
Tue, 15 May 2018 23:38:05 +0000 (23:38 +0000)
CheckDebugify now prints the pass name right next to the result of the check.

Differential Revision: https://reviews.llvm.org/D46908

llvm-svn: 332416

llvm/test/DebugInfo/debugify-each.ll
llvm/test/DebugInfo/debugify.ll
llvm/tools/opt/Debugify.cpp
llvm/tools/opt/PassPrinters.h
llvm/tools/opt/opt.cpp

index 569c629..85e352f 100644 (file)
@@ -11,14 +11,14 @@ define void @bar() {
 
 ; 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 6d81bb8..c31105b 100644 (file)
@@ -80,6 +80,6 @@ define weak_odr zeroext i1 @baz() {
 ; 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 135a026..6d12b7e 100644 (file)
@@ -126,6 +126,7 @@ bool applyDebugifyMetadata(Module &M,
 
 bool checkDebugifyMetadata(Module &M,
                            iterator_range<Module::iterator> Functions,
+                           StringRef NameOfWrappedPass,
                            StringRef Banner,
                            bool Strip) {
   // Skip modules without debugify metadata.
@@ -190,7 +191,8 @@ bool checkDebugifyMetadata(Module &M,
     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 @@ struct DebugifyFunctionPass : public FunctionPass {
 /// 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 @@ struct CheckDebugifyFunctionPass : public FunctionPass {
     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 @@ struct CheckDebugifyFunctionPass : public FunctionPass {
 
 private:
   bool Strip;
+  StringRef NameOfWrappedPass;
 };
 
 } // end anonymous namespace
@@ -294,17 +300,17 @@ PreservedAnalyses NewPMDebugifyPass::run(Module &M, ModuleAnalysisManager &) {
   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 e5c4110..96a0ef2 100644 (file)
@@ -56,8 +56,13 @@ struct NewPMDebugifyPass : public llvm::PassInfoMixin<NewPMDebugifyPass> {
   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<NewPMCheckDebugifyPass> {
index f55509d..677ddc6 100644 (file)
@@ -278,12 +278,12 @@ public:
       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);