From: Chris Lattner Date: Fri, 24 Feb 2006 20:21:58 +0000 (+0000) Subject: Use the PrintAsmMemoryOperand to print addressing modes. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=dd26033002b1b4c569df84ac947828c0fc02f6ba;p=oota-llvm.git Use the PrintAsmMemoryOperand to print addressing modes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26364 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/AsmPrinter.cpp b/lib/CodeGen/AsmPrinter.cpp index dceaced12f9..92a2d7ba8dc 100644 --- a/lib/CodeGen/AsmPrinter.cpp +++ b/lib/CodeGen/AsmPrinter.cpp @@ -580,11 +580,19 @@ void AsmPrinter::printInlineAsm(const MachineInstr *MI) const { OpNo += (OpFlags >> 3) + 1; } + unsigned OpFlags = MI->getOperand(OpNo).getImmedValue(); ++OpNo; // Skip over the ID number. - - if (const_cast(this)-> - PrintAsmOperand(MI, OpNo, AsmPrinterVariant, - Modifier[0] ? Modifier : 0)) { + + bool Error; + AsmPrinter *AP = const_cast(this); + if ((OpFlags & 7) == 4 /*ADDR MODE*/) { + Error = AP->PrintAsmMemoryOperand(MI, OpNo, AsmPrinterVariant, + Modifier[0] ? Modifier : 0); + } else { + Error = AP->PrintAsmOperand(MI, OpNo, AsmPrinterVariant, + Modifier[0] ? Modifier : 0); + } + if (Error) { std::cerr << "Invalid operand found in inline asm: '" << AsmStr << "'\n"; MI->dump(); @@ -633,3 +641,10 @@ bool AsmPrinter::PrintAsmOperand(const MachineInstr *MI, unsigned OpNo, // Target doesn't support this yet! return true; } + +bool AsmPrinter::PrintAsmMemoryOperand(const MachineInstr *MI, unsigned OpNo, + unsigned AsmVariant, + const char *ExtraCode) { + // Target doesn't support this yet! + return true; +}