summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohnny Chen <johnny.chen@apple.com>2010-04-14 22:04:45 +0000
committerJohnny Chen <johnny.chen@apple.com>2010-04-14 22:04:45 +0000
commit2fd100a4cb6c7c013f9bf78fc06b655515b0851c (patch)
treebbd1a606e3c41a3c9fe302246a1ad499fc3680cf
parent7ad3b2a3f0188f5bceb4937e90085c52665672b4 (diff)
downloadllvm-2fd100a4cb6c7c013f9bf78fc06b655515b0851c.tar.gz
llvm-2fd100a4cb6c7c013f9bf78fc06b655515b0851c.tar.bz2
llvm-2fd100a4cb6c7c013f9bf78fc06b655515b0851c.tar.xz
For t2BFI disassembly, apply the same error checking as in r101205.
Change the error msg to read "Encoding error: msb < lsb". git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101293 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp4
-rw-r--r--lib/Target/ARM/Disassembler/ThumbDisassemblerCore.h5
2 files changed, 6 insertions, 3 deletions
diff --git a/lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp b/lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp
index a8dbd9c172..eb9c2cd7a2 100644
--- a/lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp
+++ b/lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp
@@ -892,8 +892,8 @@ static inline bool getBFCInvMask(uint32_t insn, uint32_t &mask) {
uint32_t lsb = slice(insn, 11, 7);
uint32_t msb = slice(insn, 20, 16);
uint32_t Val = 0;
- if (lsb > msb) {
- errs() << "Encoding error: lsb > msb\n";
+ if (msb < lsb) {
+ errs() << "Encoding error: msb < lsb\n";
return false;
}
diff --git a/lib/Target/ARM/Disassembler/ThumbDisassemblerCore.h b/lib/Target/ARM/Disassembler/ThumbDisassemblerCore.h
index aac2d2b0fe..4bc407095a 100644
--- a/lib/Target/ARM/Disassembler/ThumbDisassemblerCore.h
+++ b/lib/Target/ARM/Disassembler/ThumbDisassemblerCore.h
@@ -1552,7 +1552,10 @@ static bool DisassembleThumb2DPBinImm(MCInst &MI, unsigned Opcode,
Opcode == ARM::t2BFI) && "Invalid opcode");
MI.addOperand(MCOperand::CreateImm(getLsb(insn)));
if (Opcode == ARM::t2BFI) {
- assert(getMsb(insn) >= getLsb(insn) && "Encoding error");
+ if (getMsb(insn) < getLsb(insn)) {
+ errs() << "Encoding error: msb < lsb\n";
+ return false;
+ }
MI.addOperand(MCOperand::CreateImm(getMsb(insn) - getLsb(insn) + 1));
} else
MI.addOperand(MCOperand::CreateImm(getWidthMinus1(insn) + 1));