Changes in directory llvm/lib/CodeGen:
AsmPrinter.cpp updated: 1.52 -> 1.53 --- Log message: Record all of the expanded registers in the DAG and machine instr, fixing several bugs in inline asm expanded operands. --- Diffs of the changes: (+12 -5) AsmPrinter.cpp | 17 ++++++++++++----- 1 files changed, 12 insertions(+), 5 deletions(-) Index: llvm/lib/CodeGen/AsmPrinter.cpp diff -u llvm/lib/CodeGen/AsmPrinter.cpp:1.52 llvm/lib/CodeGen/AsmPrinter.cpp:1.53 --- llvm/lib/CodeGen/AsmPrinter.cpp:1.52 Wed Feb 8 22:46:04 2006 +++ llvm/lib/CodeGen/AsmPrinter.cpp Thu Feb 23 13:21:04 2006 @@ -569,19 +569,26 @@ exit(1); } - char ExtraCode = 0; // FIXME: - - // Okay, we finally have an operand number. Ask the target to print this + // Okay, we finally have a value number. Ask the target to print this // operand! - if (CurVariant == -1 || CurVariant == AsmPrinterVariant) + if (CurVariant == -1 || CurVariant == AsmPrinterVariant) { + unsigned OpNo = 1; + + // Scan to find the machine operand number for the operand. + for (; Val; --Val) + OpNo += MI->getOperand(OpNo).getImmedValue()+1; + + ++OpNo; // Skip over the ID number. + if (const_cast<AsmPrinter*>(this)-> - PrintAsmOperand(MI, Val+1, AsmPrinterVariant, + PrintAsmOperand(MI, OpNo, AsmPrinterVariant, Modifier[0] ? Modifier : 0)) { std::cerr << "Invalid operand found in inline asm: '" << AsmStr << "'\n"; MI->dump(); exit(1); } + } break; } case '{': _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits