From 3cedd0b1a02e9a3fc9fee294742079d3e5d23a7f Mon Sep 17 00:00:00 2001 From: Zoran Jovanovic Date: Tue, 15 Sep 2015 15:21:27 +0000 Subject: [PATCH] [mips][microMIPS] Fix an issue with disassembling lwm32 instruction Fixed microMIPS disassembler crash on test case generated by llvm-mc-fuzzer. Differential Revision: http://reviews.llvm.org/D12881 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247698 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/Mips/Disassembler/MipsDisassembler.cpp | 2 +- test/MC/Disassembler/Mips/micromips.txt | 2 ++ test/MC/Disassembler/Mips/micromips_le.txt | 2 ++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/Target/Mips/Disassembler/MipsDisassembler.cpp b/lib/Target/Mips/Disassembler/MipsDisassembler.cpp index 6333d477716..4aa0afd7e03 100644 --- a/lib/Target/Mips/Disassembler/MipsDisassembler.cpp +++ b/lib/Target/Mips/Disassembler/MipsDisassembler.cpp @@ -1915,7 +1915,7 @@ static DecodeStatus DecodeRegListOperand(MCInst &Inst, uint64_t Address, const void *Decoder) { unsigned Regs[] = {Mips::S0, Mips::S1, Mips::S2, Mips::S3, Mips::S4, Mips::S5, - Mips::S6, Mips::FP}; + Mips::S6, Mips::S7, Mips::FP}; unsigned RegNum; unsigned RegLst = fieldFromInstruction(Insn, 21, 5); diff --git a/test/MC/Disassembler/Mips/micromips.txt b/test/MC/Disassembler/Mips/micromips.txt index 71768307879..238d786a2b6 100644 --- a/test/MC/Disassembler/Mips/micromips.txt +++ b/test/MC/Disassembler/Mips/micromips.txt @@ -241,6 +241,8 @@ 0x20 0x44 0x50 0x08 # CHECK: lwm32 $16, $17, 8($4) +0x21 0x3b 0x59 0x84 # CHECK: lwm32 $16, $17, $18, $19, $20, $21, $22, $23, $fp, -1660($27) + 0x20 0x44 0xd0 0x08 # CHECK: swm32 $16, $17, 8($4) 0x22 0x04 0x90 0x08 # CHECK: swp $16, 8($4) diff --git a/test/MC/Disassembler/Mips/micromips_le.txt b/test/MC/Disassembler/Mips/micromips_le.txt index 48046f8d1d4..c3b23741bd0 100644 --- a/test/MC/Disassembler/Mips/micromips_le.txt +++ b/test/MC/Disassembler/Mips/micromips_le.txt @@ -241,6 +241,8 @@ 0x44 0x20 0x08 0x50 # CHECK: lwm32 $16, $17, 8($4) +0x3b 0x21 0x84 0x59 # CHECK: lwm32 $16, $17, $18, $19, $20, $21, $22, $23, $fp, -1660($27) + 0x44 0x20 0x08 0xd0 # CHECK: swm32 $16, $17, 8($4) 0x04 0x22 0x08 0x90 # CHECK: swp $16, 8($4) -- 2.34.1