[llvm-commits] CVS: llvm/lib/CodeGen/AsmPrinter.cpp

Chris Lattner sabre at nondot.org
Tue Sep 26 17:00:06 PDT 2006



Changes in directory llvm/lib/CodeGen:

AsmPrinter.cpp updated: 1.99 -> 1.100
---
Log message:

Add support for ${:comment}, which expands to the current target's comment
character, and ${:uid} which expands to a unique ID for the MachineInstr. 
More can be added if/when they are needed.



---
Diffs of the changes:  (+24 -0)

 AsmPrinter.cpp |   24 ++++++++++++++++++++++++
 1 files changed, 24 insertions(+)


Index: llvm/lib/CodeGen/AsmPrinter.cpp
diff -u llvm/lib/CodeGen/AsmPrinter.cpp:1.99 llvm/lib/CodeGen/AsmPrinter.cpp:1.100
--- llvm/lib/CodeGen/AsmPrinter.cpp:1.99	Mon Sep 25 22:38:18 2006
+++ llvm/lib/CodeGen/AsmPrinter.cpp	Tue Sep 26 18:59:50 2006
@@ -619,6 +619,30 @@
   abort();
 }
 
+/// PrintSpecial - Print information related to the specified machine instr
+/// that is independent of the operand, and may be independent of the instr
+/// itself.  This can be useful for portably encoding the comment character
+/// or other bits of target-specific knowledge into the asmstrings.  The
+/// syntax used is ${:comment}.  Targets can override this to add support
+/// for their own strange codes.
+void AsmPrinter::PrintSpecial(const MachineInstr *MI, const char *Code) {
+  if (!strcmp(Code, "comment")) {
+    O << TAI->getCommentString();
+  } else if (!strcmp(Code, "uid")) {
+    // Assign a unique ID to this machine instruction.
+    static const MachineInstr *LastMI = 0;
+    static unsigned Counter = 0U-1;
+    // If this is a new machine instruction, bump the counter.
+    if (LastMI != MI) { ++Counter; LastMI = MI; }
+    O << Counter;
+  } else {
+    std::cerr << "Unknown special formatter '" << Code
+              << "' for machine instr: " << *MI;
+    exit(1);
+  }    
+}
+
+
 /// printInlineAsm - This method formats and prints the specified machine
 /// instruction that is an inline asm.
 void AsmPrinter::printInlineAsm(const MachineInstr *MI) const {






More information about the llvm-commits mailing list