[RISCV] Fix decoding of invalid instruction with C extension enabled.
authorAna Pazos <apazos@codeaurora.org>
Thu, 13 Sep 2018 18:21:19 +0000 (18:21 +0000)
committerAna Pazos <apazos@codeaurora.org>
Thu, 13 Sep 2018 18:21:19 +0000 (18:21 +0000)
commitb0799dda77c6b75526e1415331e2a9656abd6f95
tree7dcab35478a5080343f4053945e760089a1178ff
parentf1828e324090999545101aaf170d3566c40d1cd4
[RISCV] Fix decoding of invalid instruction with C extension enabled.

Summary:
The illegal instruction 0x00 0x00 is being wrongly decoded as
c.addi4spn with 0 immediate.

The invalid instruction 0x01 0x61 is being wrongly decoded as
c.addi16sp with 0 immediate.

This bug was uncovered by a LLVM MC Disassembler Protocol Buffer Fuzzer
for the RISC-V assembly language.

Reviewers: asb

Reviewed By: asb

Subscribers: rbar, johnrusso, simoncook, sabuasal, niosHD, kito-cheng, shiva0217, zzheng, edward-jones, mgrang, rogfer01, MartinMosbeck, brucehoult, the_o, rkruppe, PkmX, jocewei, asb

Differential Revision: https://reviews.llvm.org/D51815

llvm-svn: 342159
llvm/lib/Target/RISCV/Disassembler/RISCVDisassembler.cpp
llvm/lib/Target/RISCV/RISCVInstrInfoC.td
llvm/test/MC/Disassembler/RISCV/invalid-instruction.txt [new file with mode: 0644]