OSDN Git Service

In the disassembler C API, be careful not to confuse the comment streamer that the...
authorOwen Anderson <resistor@mac.com>
Wed, 21 Sep 2011 00:25:23 +0000 (00:25 +0000)
committerOwen Anderson <resistor@mac.com>
Wed, 21 Sep 2011 00:25:23 +0000 (00:25 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140217 91177308-0d34-0410-b5e6-96231b3b80d8

lib/MC/MCDisassembler/Disassembler.cpp
lib/MC/MCInstPrinter.cpp
lib/Target/ARM/InstPrinter/ARMInstPrinter.cpp
lib/Target/MBlaze/InstPrinter/MBlazeInstPrinter.cpp
lib/Target/MSP430/InstPrinter/MSP430InstPrinter.cpp
lib/Target/Mips/InstPrinter/MipsInstPrinter.cpp
lib/Target/PowerPC/InstPrinter/PPCInstPrinter.cpp
lib/Target/X86/InstPrinter/X86ATTInstPrinter.cpp
lib/Target/X86/InstPrinter/X86IntelInstPrinter.cpp

index 14fab08..07e0056 100644 (file)
@@ -82,8 +82,6 @@ LLVMDisasmContextRef LLVMCreateDisasm(const char *TripleName, void *DisInfo,
                                                 Ctx, DisAsm, IP);
   assert(DC && "Allocation failure!");
 
-  IP->setCommentStream(DC->CommentStream);
-
   return DC;
 }
 
index e15e107..5dbd4b0 100644 (file)
@@ -8,6 +8,7 @@
 //===----------------------------------------------------------------------===//
 
 #include "llvm/MC/MCInstPrinter.h"
+#include "llvm/MC/MCAsmInfo.h"
 #include "llvm/ADT/StringRef.h"
 #include "llvm/Support/raw_ostream.h"
 using namespace llvm;
@@ -26,5 +27,10 @@ void MCInstPrinter::printRegName(raw_ostream &OS, unsigned RegNo) const {
 }
 
 void MCInstPrinter::printAnnotation(raw_ostream &OS, StringRef Annot) {
-  if (!Annot.empty()) OS << Annot << "\n";
+  if (!Annot.empty()) {
+    if (CommentStream)
+      (*CommentStream) << Annot << "\n";
+    else
+      OS << " " << MAI.getCommentString() << " " << Annot << "\n";
+  }
 }
index 5bbd19f..277d44c 100644 (file)
@@ -72,7 +72,7 @@ void ARMInstPrinter::printInst(const MCInst *MI, raw_ostream &O,
 
     O << ", " << getRegisterName(MO2.getReg());
     assert(ARM_AM::getSORegOffset(MO3.getImm()) == 0);
-    if (CommentStream) printAnnotation(*CommentStream, Annot);
+    if (CommentStream) printAnnotation(O, Annot);
     return;
   }
 
@@ -90,12 +90,12 @@ void ARMInstPrinter::printInst(const MCInst *MI, raw_ostream &O,
       << ", " << getRegisterName(MO1.getReg());
 
     if (ARM_AM::getSORegShOp(MO2.getImm()) == ARM_AM::rrx) {
-      if (CommentStream) printAnnotation(*CommentStream, Annot);
+      if (CommentStream) printAnnotation(O, Annot);
       return;
     }
 
     O << ", #" << translateShiftImm(ARM_AM::getSORegOffset(MO2.getImm()));
-    if (CommentStream) printAnnotation(*CommentStream, Annot);
+    if (CommentStream) printAnnotation(O, Annot);
     return;
   }
 
@@ -109,7 +109,7 @@ void ARMInstPrinter::printInst(const MCInst *MI, raw_ostream &O,
       O << ".w";
     O << '\t';
     printRegisterList(MI, 4, O);
-    if (CommentStream) printAnnotation(*CommentStream, Annot);
+    if (CommentStream) printAnnotation(O, Annot);
     return;
   }
   if (Opcode == ARM::STR_PRE_IMM && MI->getOperand(2).getReg() == ARM::SP &&
@@ -117,7 +117,7 @@ void ARMInstPrinter::printInst(const MCInst *MI, raw_ostream &O,
     O << '\t' << "push";
     printPredicateOperand(MI, 4, O);
     O << "\t{" << getRegisterName(MI->getOperand(1).getReg()) << "}";
-    if (CommentStream) printAnnotation(*CommentStream, Annot);
+    if (CommentStream) printAnnotation(O, Annot);
     return;
   }
 
@@ -130,7 +130,7 @@ void ARMInstPrinter::printInst(const MCInst *MI, raw_ostream &O,
       O << ".w";
     O << '\t';
     printRegisterList(MI, 4, O);
-    if (CommentStream) printAnnotation(*CommentStream, Annot);
+    if (CommentStream) printAnnotation(O, Annot);
     return;
   }
   if (Opcode == ARM::LDR_POST_IMM && MI->getOperand(2).getReg() == ARM::SP &&
@@ -138,7 +138,7 @@ void ARMInstPrinter::printInst(const MCInst *MI, raw_ostream &O,
     O << '\t' << "pop";
     printPredicateOperand(MI, 5, O);
     O << "\t{" << getRegisterName(MI->getOperand(0).getReg()) << "}";
-    if (CommentStream) printAnnotation(*CommentStream, Annot);
+    if (CommentStream) printAnnotation(O, Annot);
     return;
   }
 
@@ -150,7 +150,7 @@ void ARMInstPrinter::printInst(const MCInst *MI, raw_ostream &O,
     printPredicateOperand(MI, 2, O);
     O << '\t';
     printRegisterList(MI, 4, O);
-    if (CommentStream) printAnnotation(*CommentStream, Annot);
+    if (CommentStream) printAnnotation(O, Annot);
     return;
   }
 
@@ -161,7 +161,7 @@ void ARMInstPrinter::printInst(const MCInst *MI, raw_ostream &O,
     printPredicateOperand(MI, 2, O);
     O << '\t';
     printRegisterList(MI, 4, O);
-    if (CommentStream) printAnnotation(*CommentStream, Annot);
+    if (CommentStream) printAnnotation(O, Annot);
     return;
   }
 
@@ -180,7 +180,7 @@ void ARMInstPrinter::printInst(const MCInst *MI, raw_ostream &O,
     if (Writeback) O << "!";
     O << ", ";
     printRegisterList(MI, 3, O);
-    if (CommentStream) printAnnotation(*CommentStream, Annot);
+    if (CommentStream) printAnnotation(O, Annot);
     return;
   }
 
@@ -189,12 +189,12 @@ void ARMInstPrinter::printInst(const MCInst *MI, raw_ostream &O,
       MI->getOperand(1).getReg() == ARM::R8) {
     O << "\tnop";
     printPredicateOperand(MI, 2, O);
-    if (CommentStream) printAnnotation(*CommentStream, Annot);
+    if (CommentStream) printAnnotation(O, Annot);
     return;
   }
 
   printInstruction(MI, O);
-  if (CommentStream) printAnnotation(*CommentStream, Annot);
+  if (CommentStream) printAnnotation(O, Annot);
 }
 
 void ARMInstPrinter::printOperand(const MCInst *MI, unsigned OpNo,
index 7ece492..f470be3 100644 (file)
@@ -28,7 +28,7 @@ using namespace llvm;
 void MBlazeInstPrinter::printInst(const MCInst *MI, raw_ostream &O,
                                   StringRef Annot) {
   printInstruction(MI, O);
-  if (CommentStream) printAnnotation(*CommentStream, Annot);
+  if (CommentStream) printAnnotation(O, Annot);
 }
 
 void MBlazeInstPrinter::printOperand(const MCInst *MI, unsigned OpNo,
index 18151f4..10a8f9a 100644 (file)
@@ -28,7 +28,7 @@ using namespace llvm;
 void MSP430InstPrinter::printInst(const MCInst *MI, raw_ostream &O,
                                   StringRef Annot) {
   printInstruction(MI, O);
-  if (CommentStream) printAnnotation(*CommentStream, Annot);
+  if (CommentStream) printAnnotation(O, Annot);
 }
 
 void MSP430InstPrinter::printPCRelImmOperand(const MCInst *MI, unsigned OpNo,
index 7c7dca2..e26fb14 100644 (file)
@@ -72,7 +72,7 @@ void MipsInstPrinter::printRegName(raw_ostream &OS, unsigned RegNo) const {
 void MipsInstPrinter::printInst(const MCInst *MI, raw_ostream &O,
                                 StringRef Annot) {
   printInstruction(MI, O);
-  if (CommentStream) printAnnotation(*CommentStream, Annot);
+  if (CommentStream) printAnnotation(O, Annot);
 }
 
 void MipsInstPrinter::printOperand(const MCInst *MI, unsigned OpNo,
index c22b13a..ac5eb77 100644 (file)
@@ -52,7 +52,7 @@ void PPCInstPrinter::printInst(const MCInst *MI, raw_ostream &O,
       printOperand(MI, 1, O);
       O << ", " << (unsigned int)SH;
 
-      if (CommentStream) printAnnotation(*CommentStream, Annot);
+      if (CommentStream) printAnnotation(O, Annot);
       return;
     }
   }
@@ -63,7 +63,7 @@ void PPCInstPrinter::printInst(const MCInst *MI, raw_ostream &O,
     printOperand(MI, 0, O);
     O << ", ";
     printOperand(MI, 1, O);
-    if (CommentStream) printAnnotation(*CommentStream, Annot);
+    if (CommentStream) printAnnotation(O, Annot);
     return;
   }
   
@@ -77,13 +77,13 @@ void PPCInstPrinter::printInst(const MCInst *MI, raw_ostream &O,
       O << ", ";
       printOperand(MI, 1, O);
       O << ", " << (unsigned int)SH;
-      if (CommentStream) printAnnotation(*CommentStream, Annot);
+      if (CommentStream) printAnnotation(O, Annot);
       return;
     }
   }
   
   printInstruction(MI, O);
-  if (CommentStream) printAnnotation(*CommentStream, Annot);
+  if (CommentStream) printAnnotation(O, Annot);
 }
 
 
index 1fefd57..029d491 100644 (file)
@@ -47,7 +47,7 @@ void X86ATTInstPrinter::printInst(const MCInst *MI, raw_ostream &OS,
   
   // If verbose assembly is enabled, we can print some informative comments.
   if (CommentStream) {
-    printAnnotation(*CommentStream, Annot);
+    printAnnotation(OS, Annot);
     EmitAnyX86InstComments(MI, *CommentStream, getRegisterName);
   }
 }
index 8ff3ac8..f9ab5ae 100644 (file)
@@ -38,7 +38,7 @@ void X86IntelInstPrinter::printInst(const MCInst *MI, raw_ostream &OS,
   
   // If verbose assembly is enabled, we can print some informative comments.
   if (CommentStream) {
-    printAnnotation(*CommentStream, Annot);
+    printAnnotation(OS, Annot);
     EmitAnyX86InstComments(MI, *CommentStream, getRegisterName);
   }
 }