Better error-handling for DisassembleThumb2DPModImm() with 2-reg operands where
authorJohnny Chen <johnny.chen@apple.com>
Tue, 20 Apr 2010 01:01:57 +0000 (01:01 +0000)
committerJohnny Chen <johnny.chen@apple.com>
Tue, 20 Apr 2010 01:01:57 +0000 (01:01 +0000)
d==15 is considered illegal.  Return false instead of assert().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101852 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM/Disassembler/ThumbDisassemblerCore.h

index 001d0c6dff5a368fd414930afb9961b4eaae7137..a3d7ffe52e4ba05fe8af1f2021ed762d7b27d08c 100644 (file)
@@ -1413,7 +1413,10 @@ static bool DisassembleThumb2DPModImm(MCInst &MI, unsigned Opcode,
   ++OpIdx;
 
   if (TwoReg) {
-    assert(!NoDstReg && "Internal error");
+    if (NoDstReg) {
+      DEBUG(errs() << "Thumb encoding error: d==15 for DPModImm 2-reg instr.\n");
+      return false;
+    }
     MI.addOperand(MCOperand::CreateReg(getRegisterEnum(B, ARM::GPRRegClassID,
                                                        decodeRn(insn))));
     ++OpIdx;