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 { _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits