Skip to content

Commit bbaf087

Browse files
committed
[RISCV] Assert on all invalid inputs to getStackAdjBase and printRegList. NFC
1 parent 12cf6d3 commit bbaf087

File tree

3 files changed

+8
-3
lines changed

3 files changed

+8
-3
lines changed

llvm/lib/Target/RISCV/MCTargetDesc/RISCVBaseInfo.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,8 @@ float RISCVLoadFPImm::getFPImm(unsigned Imm) {
241241
}
242242

243243
void RISCVZC::printRegList(unsigned RlistEncode, raw_ostream &OS) {
244+
assert(RlistEncode >= RLISTENCODE::RA &&
245+
RlistEncode <= RLISTENCODE::RA_S0_S11 && "Invalid Rlist");
244246
OS << "{ra";
245247
if (RlistEncode > RISCVZC::RA) {
246248
OS << ", s0";

llvm/lib/Target/RISCV/MCTargetDesc/RISCVBaseInfo.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -651,8 +651,8 @@ inline static unsigned encodeRegListNumRegs(unsigned NumRegs) {
651651
}
652652

653653
inline static unsigned getStackAdjBase(unsigned RlistVal, bool IsRV64) {
654-
assert(RlistVal != RLISTENCODE::INVALID_RLIST &&
655-
"{ra, s0-s10} is not supported, s11 must be included.");
654+
assert(RlistVal >= RLISTENCODE::RA && RlistVal <= RLISTENCODE::RA_S0_S11 &&
655+
"Invalid Rlist");
656656
unsigned NumRegs = (RlistVal - RLISTENCODE::RA) + 1;
657657
// s10 and s11 are saved together.
658658
if (RlistVal == RLISTENCODE::RA_S0_S11)

llvm/lib/Target/RISCV/MCTargetDesc/RISCVInstPrinter.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,10 @@ void RISCVInstPrinter::printVTypeI(const MCInst *MI, unsigned OpNo,
225225
void RISCVInstPrinter::printRegList(const MCInst *MI, unsigned OpNo,
226226
const MCSubtargetInfo &STI, raw_ostream &O) {
227227
unsigned Imm = MI->getOperand(OpNo).getImm();
228+
229+
assert(Imm >= RISCVZC::RLISTENCODE::RA &&
230+
Imm <= RISCVZC::RLISTENCODE::RA_S0_S11 && "Invalid Rlist");
231+
228232
O << "{";
229233
printRegName(O, RISCV::X1);
230234

@@ -281,7 +285,6 @@ void RISCVInstPrinter::printStackAdj(const MCInst *MI, unsigned OpNo,
281285
bool IsRV64 = STI.hasFeature(RISCV::Feature64Bit);
282286
int64_t StackAdj = 0;
283287
auto RlistVal = MI->getOperand(0).getImm();
284-
assert(RlistVal != 16 && "Incorrect rlist.");
285288
auto Base = RISCVZC::getStackAdjBase(RlistVal, IsRV64);
286289
StackAdj = Imm + Base;
287290
assert((StackAdj >= Base && StackAdj <= Base + 48) &&

0 commit comments

Comments
 (0)