Skip to content

Commit cd1ed64

Browse files
committed
[RISCV] Add version of generateImmOutOfRangeError that takes an SMLoc.
Have the ErrorInfo version call it after looking up ErrorInfo in the Operands. Use the new function in a few places that don't have ErrorInfo and were also generating out of range messages.
1 parent 7d5e6b4 commit cd1ed64

File tree

1 file changed

+20
-12
lines changed

1 file changed

+20
-12
lines changed

llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,8 @@ class RISCVAsmParser : public MCTargetAsmParser {
8787
bool generateImmOutOfRangeError(OperandVector &Operands, uint64_t ErrorInfo,
8888
int64_t Lower, int64_t Upper,
8989
const Twine &Msg);
90+
bool generateImmOutOfRangeError(SMLoc ErrorLoc, int64_t Lower, int64_t Upper,
91+
const Twine &Msg);
9092

9193
bool MatchAndEmitInstruction(SMLoc IDLoc, unsigned &Opcode,
9294
OperandVector &Operands, MCStreamer &Out,
@@ -1167,11 +1169,17 @@ unsigned RISCVAsmParser::checkTargetMatchPredicate(MCInst &Inst) {
11671169
return Match_Success;
11681170
}
11691171

1172+
bool RISCVAsmParser::generateImmOutOfRangeError(
1173+
SMLoc ErrorLoc, int64_t Lower, int64_t Upper,
1174+
const Twine &Msg = "immediate must be an integer in the range") {
1175+
return Error(ErrorLoc, Msg + " [" + Twine(Lower) + ", " + Twine(Upper) + "]");
1176+
}
1177+
11701178
bool RISCVAsmParser::generateImmOutOfRangeError(
11711179
OperandVector &Operands, uint64_t ErrorInfo, int64_t Lower, int64_t Upper,
11721180
const Twine &Msg = "immediate must be an integer in the range") {
11731181
SMLoc ErrorLoc = ((RISCVOperand &)*Operands[ErrorInfo]).getStartLoc();
1174-
return Error(ErrorLoc, Msg + " [" + Twine(Lower) + ", " + Twine(Upper) + "]");
1182+
return generateImmOutOfRangeError(ErrorLoc, Lower, Upper, Msg);
11751183
}
11761184

11771185
bool RISCVAsmParser::MatchAndEmitInstruction(SMLoc IDLoc, unsigned &Opcode,
@@ -1563,8 +1571,9 @@ RISCVAsmParser::parseInsnDirectiveOpcode(OperandVector &Operands) {
15631571
break;
15641572
}
15651573

1566-
Error(S, "opcode must be a valid opcode name or an immediate in the range "
1567-
"[0, 127]");
1574+
generateImmOutOfRangeError(S, 0, 127,
1575+
"opcode must be a valid opcode name or an "
1576+
"immediate in the range");
15681577
return MatchOperand_ParseFail;
15691578
}
15701579

@@ -1624,8 +1633,9 @@ RISCVAsmParser::parseInsnCDirectiveOpcode(OperandVector &Operands) {
16241633
}
16251634
}
16261635

1627-
Error(S, "opcode must be a valid opcode name or an immediate in the range "
1628-
"[0, 2]");
1636+
generateImmOutOfRangeError(S, 0, 2,
1637+
"opcode must be a valid opcode name or an "
1638+
"immediate in the range");
16291639
return MatchOperand_ParseFail;
16301640
}
16311641

@@ -1660,8 +1670,7 @@ RISCVAsmParser::parseCSRSystemRegister(OperandVector &Operands) {
16601670
}
16611671
}
16621672

1663-
Twine Msg = "immediate must be an integer in the range";
1664-
Error(S, Msg + " [" + Twine(0) + ", " + Twine((1 << 12) - 1) + "]");
1673+
generateImmOutOfRangeError(S, 0, (1 << 12) - 1);
16651674
return MatchOperand_ParseFail;
16661675
}
16671676
case AsmToken::Identifier: {
@@ -1688,15 +1697,14 @@ RISCVAsmParser::parseCSRSystemRegister(OperandVector &Operands) {
16881697
return MatchOperand_Success;
16891698
}
16901699

1691-
Twine Msg = "operand must be a valid system register name "
1692-
"or an integer in the range";
1693-
Error(S, Msg + " [" + Twine(0) + ", " + Twine((1 << 12) - 1) + "]");
1700+
generateImmOutOfRangeError(S, 0, (1 << 12) - 1,
1701+
"operand must be a valid system register name "
1702+
"or an integer in the range");
16941703
return MatchOperand_ParseFail;
16951704
}
16961705
case AsmToken::Percent: {
16971706
// Discard operand with modifier.
1698-
Twine Msg = "immediate must be an integer in the range";
1699-
Error(S, Msg + " [" + Twine(0) + ", " + Twine((1 << 12) - 1) + "]");
1707+
generateImmOutOfRangeError(S, 0, (1 << 12) - 1);
17001708
return MatchOperand_ParseFail;
17011709
}
17021710
}

0 commit comments

Comments
 (0)