diff options
author | Johnny Chen <johnny.chen@apple.com> | 2011-04-11 23:33:30 +0000 |
---|---|---|
committer | Johnny Chen <johnny.chen@apple.com> | 2011-04-11 23:33:30 +0000 |
commit | dc8bf9ec08641477675c9d85cf9fcaa9c31487d5 (patch) | |
tree | cb55aaed5358148a1e5333de49099c22593f0c7f /llvm/lib/Target/ARM/Disassembler/ThumbDisassemblerCore.h | |
parent | 7d4cdae5643413120e19a7de2b6db7b83d1a6b26 (diff) | |
download | bcm5719-llvm-dc8bf9ec08641477675c9d85cf9fcaa9c31487d5.tar.gz bcm5719-llvm-dc8bf9ec08641477675c9d85cf9fcaa9c31487d5.zip |
Thumb disassembler was erroneously rejecting "blx sp" instruction.
rdar://problem/9267838
llvm-svn: 129320
Diffstat (limited to 'llvm/lib/Target/ARM/Disassembler/ThumbDisassemblerCore.h')
-rw-r--r-- | llvm/lib/Target/ARM/Disassembler/ThumbDisassemblerCore.h | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/llvm/lib/Target/ARM/Disassembler/ThumbDisassemblerCore.h b/llvm/lib/Target/ARM/Disassembler/ThumbDisassemblerCore.h index 727fc1332ad..85816e02fef 100644 --- a/llvm/lib/Target/ARM/Disassembler/ThumbDisassemblerCore.h +++ b/llvm/lib/Target/ARM/Disassembler/ThumbDisassemblerCore.h @@ -485,10 +485,13 @@ static bool DisassembleThumb1Special(MCInst &MI, unsigned Opcode, uint32_t insn, return true; // BX/BLX has 1 reg operand: Rm. - if (NumOps == 1) { + if (Opcode == ARM::tBLXr_r9 || Opcode == ARM::tBX_Rm) { + // Handling the two predicate operands before the reg operand. + if (!B->DoPredicateOperands(MI, Opcode, insn, NumOps)) + return false; MI.addOperand(MCOperand::CreateReg(getRegisterEnum(B, ARM::GPRRegClassID, getT1Rm(insn)))); - NumOpsAdded = 1; + NumOpsAdded = 3; return true; } |