summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp
diff options
context:
space:
mode:
authorOwen Anderson <resistor@mac.com>2011-08-26 06:19:51 +0000
committerOwen Anderson <resistor@mac.com>2011-08-26 06:19:51 +0000
commit149695627a5c7b49d69404e7f32bcf013bbb297a (patch)
tree44e324d16168e2378602737ebb91594b358a5c75 /llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp
parenta8a39bc3465a4bb890b4250573d8cf7a99c12666 (diff)
downloadbcm5719-llvm-149695627a5c7b49d69404e7f32bcf013bbb297a.tar.gz
bcm5719-llvm-149695627a5c7b49d69404e7f32bcf013bbb297a.zip
Fix PR10755 by checking for invalid predicate codes from UNPREDICTABLE t2IT instructions when decoding their successors.
This is the last disassembly crash detected by exhaustive Thumb2 instruction space. Major thanks to Chandler Carruth for making this kind of exhaustive testing possible. llvm-svn: 138625
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 0d945fdf591..f1c5ce8bc52 100644
--- a/llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp
+++ b/llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp
@@ -376,6 +376,8 @@ void ThumbDisassembler::AddThumbPredicate(MCInst &MI) const {
unsigned CC;
if (!ITBlock.empty()) {
CC = ITBlock.back();
+ if (CC == 0xF)
+ CC = ARMCC::AL;
ITBlock.pop_back();
} else
CC = ARMCC::AL;
OpenPOWER on IntegriCloud