diff options
author | Chris Lattner <sabre@nondot.org> | 2006-02-24 20:21:58 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2006-02-24 20:21:58 +0000 |
commit | dd26033002b1b4c569df84ac947828c0fc02f6ba (patch) | |
tree | b04195fc8d871d15d9e77e61f5a444d5367c8050 | |
parent | b44b5094110508e2381615b15077b388364f7e8a (diff) |
Use the PrintAsmMemoryOperand to print addressing modes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26364 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/CodeGen/AsmPrinter.cpp | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/lib/CodeGen/AsmPrinter.cpp b/lib/CodeGen/AsmPrinter.cpp index dceaced12f..92a2d7ba8d 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<AsmPrinter*>(this)-> - PrintAsmOperand(MI, OpNo, AsmPrinterVariant, - Modifier[0] ? Modifier : 0)) { + + bool Error; + AsmPrinter *AP = const_cast<AsmPrinter*>(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; +} |