From a0c3b97221c8f29a123a3a2173f1550550788671 Mon Sep 17 00:00:00 2001 From: Owen Anderson Date: Thu, 15 Sep 2011 23:38:46 +0000 Subject: Don't attach annotations to MCInst's. Instead, have the disassembler return, and the printer accept, an annotation string which can be passed through if the client cares about annotations. llvm-svn: 139876 --- llvm/lib/MC/MCDisassembler/Disassembler.cpp | 24 ++++++------------------ 1 file changed, 6 insertions(+), 18 deletions(-) (limited to 'llvm/lib/MC/MCDisassembler/Disassembler.cpp') diff --git a/llvm/lib/MC/MCDisassembler/Disassembler.cpp b/llvm/lib/MC/MCDisassembler/Disassembler.cpp index 858a58cf35e..14fab08b874 100644 --- a/llvm/lib/MC/MCDisassembler/Disassembler.cpp +++ b/llvm/lib/MC/MCDisassembler/Disassembler.cpp @@ -144,7 +144,7 @@ size_t LLVMDisasmInstruction(LLVMDisasmContextRef DCR, uint8_t *Bytes, MCInstPrinter *IP = DC->getIP(); MCDisassembler::DecodeStatus S; S = DisAsm->getInstruction(Inst, Size, MemoryObject, PC, - /*REMOVE*/ nulls()); + /*REMOVE*/ nulls(), DC->CommentStream); switch (S) { case MCDisassembler::Fail: case MCDisassembler::SoftFail: @@ -152,28 +152,16 @@ size_t LLVMDisasmInstruction(LLVMDisasmContextRef DCR, uint8_t *Bytes, return 0; case MCDisassembler::Success: { - SmallVector InsnStr; - raw_svector_ostream OS(InsnStr); - 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()); + SmallVector InsnStr; + raw_svector_ostream OS(InsnStr); + IP->printInst(&Inst, OS, Comments); + OS.flush(); - DC->CommentsToEmit.clear(); // Tell the comment stream that the vector changed underneath it. + DC->CommentsToEmit.clear(); DC->CommentStream.resync(); assert(OutStringSize != 0 && "Output buffer cannot be zero size"); -- cgit v1.2.3