diff --git a/llvm/lib/Target/RISCV/RISCVInstrInfo.h b/llvm/lib/Target/RISCV/RISCVInstrInfo.h --- a/llvm/lib/Target/RISCV/RISCVInstrInfo.h +++ b/llvm/lib/Target/RISCV/RISCVInstrInfo.h @@ -15,6 +15,7 @@ #include "RISCVRegisterInfo.h" #include "llvm/CodeGen/TargetInstrInfo.h" +#include "llvm/IR/DiagnosticInfo.h" #define GET_INSTRINFO_HEADER #include "RISCVGenInstrInfo.inc" diff --git a/llvm/lib/Target/RISCV/RISCVInstrInfo.cpp b/llvm/lib/Target/RISCV/RISCVInstrInfo.cpp --- a/llvm/lib/Target/RISCV/RISCVInstrInfo.cpp +++ b/llvm/lib/Target/RISCV/RISCVInstrInfo.cpp @@ -1196,8 +1196,10 @@ BuildMI(MBB, II, DL, TII->get(RISCV::ADDI), VN) .addReg(RISCV::X0) .addImm(NumOfVReg); - assert(MF.getSubtarget().hasStdExtM() && - "M-extension must be enabled to calculate the vscaled size/offset."); + if (!MF.getSubtarget().hasStdExtM()) + MF.getFunction().getContext().diagnose(DiagnosticInfoUnsupported{ + MF.getFunction(), + "M-extension must be enabled to calculate the vscaled size/offset."}); BuildMI(MBB, II, DL, TII->get(RISCV::MUL), FactorRegister) .addReg(SizeOfVector, RegState::Kill) .addReg(VN, RegState::Kill);