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 @@ -1272,7 +1272,8 @@ // Make sure the operands don't reference something unsafe. for (const auto &MO : MI.operands()) - if (MO.isMBB() || MO.isBlockAddress() || MO.isCPI() || MO.isJTI()) + if (MO.isMBB() || MO.isBlockAddress() || MO.isCPI() || MO.isJTI() || + MO.isCFIIndex() || MO.isFI() || MO.isTargetIndex()) return outliner::InstrType::Illegal; // Don't allow instructions which won't be materialized to impact outlining