summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp
diff options
context:
space:
mode:
authorBob Wilson <bob.wilson@apple.com>2010-03-16 23:01:13 +0000
committerBob Wilson <bob.wilson@apple.com>2010-03-16 23:01:13 +0000
commitc7ba918b8417533ae89e2c18aaf1b26879536edc (patch)
treea6306367f1cd959f340dac9b3adebad272771e8f /llvm/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp
parent1668355e06268683fd0b4fcf4bc176150172f374 (diff)
downloadbcm5719-llvm-c7ba918b8417533ae89e2c18aaf1b26879536edc.tar.gz
bcm5719-llvm-c7ba918b8417533ae89e2c18aaf1b26879536edc.zip
Revert 98683. It is breaking something in the disassembler.
llvm-svn: 98692
Diffstat (limited to 'llvm/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp')
-rw-r--r--llvm/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp13
1 files changed, 11 insertions, 2 deletions
diff --git a/llvm/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp b/llvm/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp
index 54535724b84..447afdd4fab 100644
--- a/llvm/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp
+++ b/llvm/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp
@@ -562,13 +562,22 @@ void ARMAsmPrinter::printAddrMode5Operand(const MachineInstr *MI, int Op,
void ARMAsmPrinter::printAddrMode6Operand(const MachineInstr *MI, int Op) {
const MachineOperand &MO1 = MI->getOperand(Op);
const MachineOperand &MO2 = MI->getOperand(Op+1);
+ const MachineOperand &MO3 = MI->getOperand(Op+2);
+ const MachineOperand &MO4 = MI->getOperand(Op+3);
O << "[" << getRegisterName(MO1.getReg());
- if (MO2.getImm()) {
+ if (MO4.getImm()) {
// FIXME: Both darwin as and GNU as violate ARM docs here.
- O << ", :" << MO2.getImm();
+ O << ", :" << MO4.getImm();
}
O << "]";
+
+ if (ARM_AM::getAM6WBFlag(MO3.getImm())) {
+ if (MO2.getReg() == 0)
+ O << "!";
+ else
+ O << ", " << getRegisterName(MO2.getReg());
+ }
}
void ARMAsmPrinter::printAddrModePCOperand(const MachineInstr *MI, int Op,
OpenPOWER on IntegriCloud