Skip to content

Commit c9055e9

Browse files
committed
[RISCV] Remove Specifier::VK_Invalid
1 parent 42a8813 commit c9055e9

File tree

4 files changed

+8
-10
lines changed

4 files changed

+8
-10
lines changed

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

+3-3
Original file line numberDiff line numberDiff line change
@@ -2220,8 +2220,8 @@ ParseStatus RISCVAsmParser::parseOperandWithModifier(OperandVector &Operands) {
22202220
if (getLexer().getKind() != AsmToken::Identifier)
22212221
return Error(getLoc(), "expected valid identifier for operand modifier");
22222222
StringRef Identifier = getParser().getTok().getIdentifier();
2223-
RISCVMCExpr::Specifier VK = RISCVMCExpr::getSpecifierForName(Identifier);
2224-
if (VK == RISCVMCExpr::VK_Invalid)
2223+
auto Spec = RISCVMCExpr::getSpecifierForName(Identifier);
2224+
if (!Spec)
22252225
return Error(getLoc(), "unrecognized operand modifier");
22262226

22272227
getParser().Lex(); // Eat the identifier
@@ -2232,7 +2232,7 @@ ParseStatus RISCVAsmParser::parseOperandWithModifier(OperandVector &Operands) {
22322232
if (getParser().parseParenExpression(SubExpr, E))
22332233
return ParseStatus::Failure;
22342234

2235-
const MCExpr *ModExpr = RISCVMCExpr::create(SubExpr, VK, getContext());
2235+
const MCExpr *ModExpr = RISCVMCExpr::create(SubExpr, *Spec, getContext());
22362236
Operands.push_back(RISCVOperand::createImm(ModExpr, S, E, isRV64()));
22372237
return ParseStatus::Success;
22382238
}

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

-1
Original file line numberDiff line numberDiff line change
@@ -443,7 +443,6 @@ uint64_t RISCVMCCodeEmitter::getImmOpValue(const MCInst &MI, unsigned OpNo,
443443

444444
switch (RVExpr->getSpecifier()) {
445445
case RISCVMCExpr::VK_None:
446-
case RISCVMCExpr::VK_Invalid:
447446
case RISCVMCExpr::VK_32_PCREL:
448447
llvm_unreachable("Unhandled fixup kind!");
449448
case RISCVMCExpr::VK_TPREL_ADD:

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

+4-4
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,9 @@ void RISCVMCExpr::visitUsedExpr(MCStreamer &Streamer) const {
102102
Streamer.visitUsedExpr(*getSubExpr());
103103
}
104104

105-
RISCVMCExpr::Specifier RISCVMCExpr::getSpecifierForName(StringRef name) {
106-
return StringSwitch<RISCVMCExpr::Specifier>(name)
105+
std::optional<RISCVMCExpr::Specifier>
106+
RISCVMCExpr::getSpecifierForName(StringRef name) {
107+
return StringSwitch<std::optional<RISCVMCExpr::Specifier>>(name)
107108
.Case("lo", VK_LO)
108109
.Case("hi", VK_HI)
109110
.Case("pcrel_lo", VK_PCREL_LO)
@@ -118,12 +119,11 @@ RISCVMCExpr::Specifier RISCVMCExpr::getSpecifierForName(StringRef name) {
118119
.Case("tlsdesc_load_lo", VK_TLSDESC_LOAD_LO)
119120
.Case("tlsdesc_add_lo", VK_TLSDESC_ADD_LO)
120121
.Case("tlsdesc_call", VK_TLSDESC_CALL)
121-
.Default(VK_Invalid);
122+
.Default(std::nullopt);
122123
}
123124

124125
StringRef RISCVMCExpr::getSpecifierName(Specifier S) {
125126
switch (S) {
126-
case VK_Invalid:
127127
case VK_None:
128128
llvm_unreachable("Invalid ELF symbol kind");
129129
case VK_LO:

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

+1-2
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@ class RISCVMCExpr : public MCTargetExpr {
4141
VK_TLSDESC_LOAD_LO,
4242
VK_TLSDESC_ADD_LO,
4343
VK_TLSDESC_CALL,
44-
VK_Invalid // Must be the last item
4544
};
4645

4746
private:
@@ -82,7 +81,7 @@ class RISCVMCExpr : public MCTargetExpr {
8281
return E->getKind() == MCExpr::Target;
8382
}
8483

85-
static Specifier getSpecifierForName(StringRef name);
84+
static std::optional<Specifier> getSpecifierForName(StringRef name);
8685
static StringRef getSpecifierName(Specifier Kind);
8786
};
8887

0 commit comments

Comments
 (0)