summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target
diff options
context:
space:
mode:
authorAndrew V. Tischenko <andrew.v.tischenko@gmail.com>2017-10-23 09:36:33 +0000
committerAndrew V. Tischenko <andrew.v.tischenko@gmail.com>2017-10-23 09:36:33 +0000
commiteff4fc0d411ed8b5ca4c2dc410feb8659c998afb (patch)
treefb2991dc5396ef21a21c0fbf87ce0caaf90e9f65 /llvm/lib/Target
parent32fefef7fc8c89738fc5589e48f9935d56b0b590 (diff)
downloadbcm5719-llvm-eff4fc0d411ed8b5ca4c2dc410feb8659c998afb.tar.gz
bcm5719-llvm-eff4fc0d411ed8b5ca4c2dc410feb8659c998afb.zip
Fix for Bug 30718 - Failure to disassemble certain MOV with rex.R. The issue was in illegal segment register index.
Differential Revision: https://reviews.llvm.org/D38786 llvm-svn: 316319
Diffstat (limited to 'llvm/lib/Target')
-rw-r--r--llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.cpp b/llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.cpp
index 80acff22f7b..709fc630633 100644
--- a/llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.cpp
+++ b/llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.cpp
@@ -1453,9 +1453,9 @@ static int readModRM(struct InternalInstruction* insn) {
case TYPE_MM64: \
return prefix##_MM0 + (index & 0x7); \
case TYPE_SEGMENTREG: \
- if (index > 5) \
+ if ((index & 7) > 5) \
*valid = 0; \
- return prefix##_ES + index; \
+ return prefix##_ES + (index & 7); \
case TYPE_DEBUGREG: \
return prefix##_DR0 + index; \
case TYPE_CONTROLREG: \
OpenPOWER on IntegriCloud