The the MC disassembler C API to print in verbose mode.  Perhaps there should be a parameter to request verbose mode?


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139821 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/MC/MCDisassembler/Disassembler.cpp b/lib/MC/MCDisassembler/Disassembler.cpp
index fd462f8..858a58c 100644
--- a/lib/MC/MCDisassembler/Disassembler.cpp
+++ b/lib/MC/MCDisassembler/Disassembler.cpp
@@ -81,6 +81,9 @@
                                                 TheTarget, MAI, MRI,
                                                 Ctx, DisAsm, IP);
   assert(DC && "Allocation failure!");
+
+  IP->setCommentStream(DC->CommentStream);
+
   return DC;
 }
 
@@ -154,6 +157,25 @@
     IP->printInst(&Inst, OS);
     OS.flush();
 
+    DC->CommentStream.flush();
+    assert(DC->CommentsToEmit.back() == '\n');
+
+    DC->CommentsToEmit.push_back('\n');
+    StringRef Comments = DC->CommentsToEmit.str();
+
+    do {
+      // Emit a line of comments.
+      size_t Position = Comments.find('\n');
+      OS << ' ' << DC->getAsmInfo()->getCommentString()
+         << ' ' << Comments.substr(0, Position) << '\n';
+
+      Comments = Comments.substr(Position+1);
+    } while (!Comments.empty());
+
+    DC->CommentsToEmit.clear();
+    // Tell the comment stream that the vector changed underneath it.
+    DC->CommentStream.resync();
+
     assert(OutStringSize != 0 && "Output buffer cannot be zero size");
     size_t OutputSize = std::min(OutStringSize-1, InsnStr.size());
     std::memcpy(OutString, InsnStr.data(), OutputSize);