summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
authorBob Wilson <bob.wilson@apple.com>2011-01-28 17:50:30 +0000
committerBob Wilson <bob.wilson@apple.com>2011-01-28 17:50:30 +0000
commit775eec2280fb505433d0d07f9f8056e1328e60f9 (patch)
tree21d3856107cbaa9b7a300b92198bec275d593f8c /llvm
parentc3cc59c119b186aff98b7577cbec89c08bcd6746 (diff)
downloadbcm5719-llvm-775eec2280fb505433d0d07f9f8056e1328e60f9.tar.gz
bcm5719-llvm-775eec2280fb505433d0d07f9f8056e1328e60f9.zip
PR9030: Fix disassembly of ARM "mov pc, lr" instruction.
Patch by Jyun-Yan You. llvm-svn: 124492
Diffstat (limited to 'llvm')
-rw-r--r--llvm/lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp4
-rw-r--r--llvm/test/MC/Disassembler/ARM/arm-tests.txt3
2 files changed, 5 insertions, 2 deletions
diff --git a/llvm/lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp b/llvm/lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp
index 752e2855dcd..45c6c300aa1 100644
--- a/llvm/lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp
+++ b/llvm/lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp
@@ -801,8 +801,8 @@ static bool DisassembleBrMiscFrm(MCInst &MI, unsigned Opcode, uint32_t insn,
OpIdx = 0;
- // BX_RET has only two predicate operands, do an early return.
- if (Opcode == ARM::BX_RET)
+ // BX_RET and MOVPCLR have only two predicate operands; do an early return.
+ if (Opcode == ARM::BX_RET || Opcode == ARM::MOVPCLR)
return true;
// BLXr9 and BX take one GPR reg.
diff --git a/llvm/test/MC/Disassembler/ARM/arm-tests.txt b/llvm/test/MC/Disassembler/ARM/arm-tests.txt
index e5952f075f4..07d349fc3b8 100644
--- a/llvm/test/MC/Disassembler/ARM/arm-tests.txt
+++ b/llvm/test/MC/Disassembler/ARM/arm-tests.txt
@@ -9,6 +9,9 @@
# CHECK: bfi r8, r0, #16, #1
0x10 0x88 0xd0 0xe7
+# CHECK: mov pc, lr
+0x0e 0xf0 0xa0 0xe1
+
# CHECK: cmn r0, #1
0x01 0x00 0x70 0xe3
OpenPOWER on IntegriCloud