Index: lib/Target/RISCV/InstPrinter/RISCVInstPrinter.cpp =================================================================== --- lib/Target/RISCV/InstPrinter/RISCVInstPrinter.cpp +++ lib/Target/RISCV/InstPrinter/RISCVInstPrinter.cpp @@ -101,6 +101,8 @@ O << 'r'; if ((FenceArg & RISCVFenceField::W) != 0) O << 'w'; + if (FenceArg == 0) + O << "unknown"; } void RISCVInstPrinter::printFRMArg(const MCInst *MI, unsigned OpNo, Index: test/MC/Disassembler/RISCV/unknown-fence-field.txt =================================================================== --- /dev/null +++ test/MC/Disassembler/RISCV/unknown-fence-field.txt @@ -0,0 +1,9 @@ +# RUN: llvm-mc -disassemble -triple=riscv32 -mattr=+f,+d < %s 2>&1 | FileCheck %s +# RUN: llvm-mc -disassemble -triple=riscv64 -mattr=+f,+d < %s 2>&1 | FileCheck %s +# +# Test generated by a LLVM MC Disassembler Protocol Buffer Fuzzer +# for the RISC-V assembly language. + +# This decodes as fence , iorw with invalid fence field as 0. +[0x0f 0x00 0xf0 0x00] +# CHECK: fence unknown, iorw