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 | c7ba918b8417533ae89e2c18aaf1b26879536edc (patch) | |
| tree | a6306367f1cd959f340dac9b3adebad272771e8f /llvm/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp | |
| parent | 1668355e06268683fd0b4fcf4bc176150172f374 (diff) | |
| download | bcm5719-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.cpp | 13 |
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, |

