diff options
author | Bob Wilson <bob.wilson@apple.com> | 2010-03-16 23:01:13 +0000 |
---|---|---|
committer | Bob Wilson <bob.wilson@apple.com> | 2010-03-16 23:01:13 +0000 |
commit | a43e6bf69093b9870548e7d782ea148e2ddd6449 (patch) | |
tree | e7a7fc62ce5817b26e22659ca8d8a80460b4f008 /lib/Target/ARM/AsmPrinter/ARMInstPrinter.cpp | |
parent | 4507f089d48c5adb454cd12b68333d5590ce05dd (diff) |
Revert 98683. It is breaking something in the disassembler.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98692 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/ARM/AsmPrinter/ARMInstPrinter.cpp')
-rw-r--r-- | lib/Target/ARM/AsmPrinter/ARMInstPrinter.cpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/lib/Target/ARM/AsmPrinter/ARMInstPrinter.cpp b/lib/Target/ARM/AsmPrinter/ARMInstPrinter.cpp index cf7fb6bf22..c1d68fbdf2 100644 --- a/lib/Target/ARM/AsmPrinter/ARMInstPrinter.cpp +++ b/lib/Target/ARM/AsmPrinter/ARMInstPrinter.cpp @@ -268,13 +268,17 @@ void ARMInstPrinter::printAddrMode5Operand(const MCInst *MI, unsigned OpNum, void ARMInstPrinter::printAddrMode6Operand(const MCInst *MI, unsigned OpNum) { const MCOperand &MO1 = MI->getOperand(OpNum); const MCOperand &MO2 = MI->getOperand(OpNum+1); + const MCOperand &MO3 = MI->getOperand(OpNum+2); - O << "[" << getRegisterName(MO1.getReg()); - if (MO2.getImm()) { - // FIXME: Both darwin as and GNU as violate ARM docs here. - O << ", :" << MO2.getImm(); + // FIXME: No support yet for specifying alignment. + O << '[' << getRegisterName(MO1.getReg()) << ']'; + + if (ARM_AM::getAM6WBFlag(MO3.getImm())) { + if (MO2.getReg() == 0) + O << '!'; + else + O << ", " << getRegisterName(MO2.getReg()); } - O << "]"; } void ARMInstPrinter::printAddrModePCOperand(const MCInst *MI, unsigned OpNum, |