summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp
diff options
context:
space:
mode:
authorTim Northover <tnorthover@apple.com>2018-06-26 11:39:20 +0000
committerTim Northover <tnorthover@apple.com>2018-06-26 11:39:20 +0000
commitb73efb85bab8e77b9149174a413cc98068c73294 (patch)
treeaf0deb11acccf10fbdccb313eeb8551f0e3b4e40 /llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp
parentbf5485811500e2534b17925aed80265d1b1c5af2 (diff)
downloadbcm5719-llvm-b73efb85bab8e77b9149174a413cc98068c73294.tar.gz
bcm5719-llvm-b73efb85bab8e77b9149174a413cc98068c73294.zip
ARM: correctly decode VFP instructions following unpredictable t2IT
When the condition code for an IT instruction is "AL" we get strange "15" predicates on subsequent instructions. These are dealt with for most instructions by treating them as "ARMCC::AL", but VFP takes a different path which didn't have this code. llvm-svn: 335594
Diffstat (limited to 'llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp')
-rw-r--r--llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp b/llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp
index f21dce3f3ad..4733cf49827 100644
--- a/llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp
+++ b/llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp
@@ -659,6 +659,8 @@ ThumbDisassembler::AddThumbPredicate(MCInst &MI) const {
void ThumbDisassembler::UpdateThumbVFPPredicate(MCInst &MI) const {
unsigned CC;
CC = ITBlock.getITCC();
+ if (CC == 0xF)
+ CC = ARMCC::AL;
if (ITBlock.instrInITBlock())
ITBlock.advanceITState();
OpenPOWER on IntegriCloud