aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Target/M68k/Disassembler/M68kDisassembler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/Target/M68k/Disassembler/M68kDisassembler.cpp')
-rw-r--r--llvm/lib/Target/M68k/Disassembler/M68kDisassembler.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/llvm/lib/Target/M68k/Disassembler/M68kDisassembler.cpp b/llvm/lib/Target/M68k/Disassembler/M68kDisassembler.cpp
index a8453c838493..a08ffa787095 100644
--- a/llvm/lib/Target/M68k/Disassembler/M68kDisassembler.cpp
+++ b/llvm/lib/Target/M68k/Disassembler/M68kDisassembler.cpp
@@ -21,7 +21,7 @@
#include "llvm/MC/MCContext.h"
#include "llvm/MC/MCDisassembler/MCDisassembler.h"
#include "llvm/MC/MCInst.h"
-#include "llvm/Support/TargetRegistry.h"
+#include "llvm/MC/TargetRegistry.h"
using namespace llvm;
@@ -451,7 +451,8 @@ void M68kDisassembler::decodeImm(MCInst &Instr, unsigned Bead,
llvm_unreachable("invalid imm");
}
- Scratch = (Scratch << NumToRead) | Reader.readBits(NumToRead);
+ Scratch = (NumToRead < 32) ? (Scratch << NumToRead) : 0;
+ Scratch |= Reader.readBits(NumToRead);
}
DecodeStatus M68kDisassembler::getInstruction(MCInst &Instr, uint64_t &Size,