Changes in directory llvm/lib/CodeGen:
AsmPrinter.cpp updated: 1.47 -> 1.48 --- Log message: Add support for modifier characters to operand printers --- Diffs of the changes: (+21 -2) AsmPrinter.cpp | 23 +++++++++++++++++++++-- 1 files changed, 21 insertions(+), 2 deletions(-) Index: llvm/lib/CodeGen/AsmPrinter.cpp diff -u llvm/lib/CodeGen/AsmPrinter.cpp:1.47 llvm/lib/CodeGen/AsmPrinter.cpp:1.48 --- llvm/lib/CodeGen/AsmPrinter.cpp:1.47 Sat Feb 4 19:46:49 2006 +++ llvm/lib/CodeGen/AsmPrinter.cpp Mon Feb 6 16:17:23 2006 @@ -538,7 +538,23 @@ } LastEmitted = IDEnd; + char Modifier[2] = { 0, 0 }; + if (HasCurlyBraces) { + // If we have curly braces, check for a modifier character. This + // supports syntax like ${0:u}, which correspond to "%u0" in GCC asm. + if (*LastEmitted == ':') { + ++LastEmitted; // Consume ':' character. + if (*LastEmitted == 0) { + std::cerr << "Bad ${:} expression in inline asm string: '" + << AsmStr << "'\n"; + exit(1); + } + + Modifier[0] = *LastEmitted; + ++LastEmitted; // Consume modifier character. + } + if (*LastEmitted != '}') { std::cerr << "Bad ${} expression in inline asm string: '" << AsmStr << "'\n"; @@ -553,11 +569,14 @@ exit(1); } + char ExtraCode = 0; // FIXME: + // Okay, we finally have an operand number. Ask the target to print this // operand! if (CurVariant == -1 || CurVariant == AsmPrinterVariant) if (const_cast<AsmPrinter*>(this)-> - PrintAsmOperand(MI, Val+1, AsmPrinterVariant)) { + PrintAsmOperand(MI, Val+1, AsmPrinterVariant, + Modifier[0] ? Modifier : 0)) { std::cerr << "Invalid operand found in inline asm: '" << AsmStr << "'\n"; MI->dump(); @@ -601,7 +620,7 @@ /// instruction, using the specified assembler variant. Targets should /// overried this to format as appropriate. bool AsmPrinter::PrintAsmOperand(const MachineInstr *MI, unsigned OpNo, - unsigned AsmVariant) { + unsigned AsmVariant, const char *ExtraCode) { // Target doesn't support this yet! return true; } _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits