Skip to content

Commit a479be0

Browse files
committed
[MC] Change tryParseRegister to return ParseStatus (NFC)
This finishes the work of replacing OperandMatchResultTy with ParseStatus, started in D154101. As a drive-by change, rename some RegNo variables to just Reg (a leftover from the days when RegNo had 'unsigned' type).
1 parent ca23c93 commit a479be0

File tree

22 files changed

+239
-281
lines changed

22 files changed

+239
-281
lines changed

llvm/include/llvm/MC/MCParser/MCTargetAsmParser.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -154,10 +154,12 @@ class ParseStatus {
154154
constexpr bool isNoMatch() const { return Status == StatusTy::NoMatch; }
155155

156156
// Allow implicit conversions to / from OperandMatchResultTy.
157+
LLVM_DEPRECATED("Migrate to ParseStatus", "")
157158
constexpr ParseStatus(OperandMatchResultTy R)
158159
: Status(R == MatchOperand_Success ? Success
159160
: R == MatchOperand_ParseFail ? Failure
160161
: NoMatch) {}
162+
LLVM_DEPRECATED("Migrate to ParseStatus", "")
161163
constexpr operator OperandMatchResultTy() const {
162164
return isSuccess() ? MatchOperand_Success
163165
: isFailure() ? MatchOperand_ParseFail
@@ -421,8 +423,8 @@ class MCTargetAsmParser : public MCAsmParserExtension {
421423
/// Check whether a register specification can be parsed at the current
422424
/// location, without failing the entire parse if it can't. Must not consume
423425
/// tokens if the parse fails.
424-
virtual OperandMatchResultTy
425-
tryParseRegister(MCRegister &Reg, SMLoc &StartLoc, SMLoc &EndLoc) = 0;
426+
virtual ParseStatus tryParseRegister(MCRegister &Reg, SMLoc &StartLoc,
427+
SMLoc &EndLoc) = 0;
426428

427429
/// ParseInstruction - Parse one assembly instruction.
428430
///

llvm/lib/MC/MCParser/MasmParser.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6234,8 +6234,8 @@ bool MasmParser::parseDirectiveIfdef(SMLoc DirectiveLoc, bool expect_defined) {
62346234
bool is_defined = false;
62356235
MCRegister Reg;
62366236
SMLoc StartLoc, EndLoc;
6237-
is_defined = (getTargetParser().tryParseRegister(Reg, StartLoc, EndLoc) ==
6238-
MatchOperand_Success);
6237+
is_defined =
6238+
getTargetParser().tryParseRegister(Reg, StartLoc, EndLoc).isSuccess();
62396239
if (!is_defined) {
62406240
StringRef Name;
62416241
if (check(parseIdentifier(Name), "expected identifier after 'ifdef'") ||
@@ -6354,8 +6354,8 @@ bool MasmParser::parseDirectiveElseIfdef(SMLoc DirectiveLoc,
63546354
bool is_defined = false;
63556355
MCRegister Reg;
63566356
SMLoc StartLoc, EndLoc;
6357-
is_defined = (getTargetParser().tryParseRegister(Reg, StartLoc, EndLoc) ==
6358-
MatchOperand_Success);
6357+
is_defined =
6358+
getTargetParser().tryParseRegister(Reg, StartLoc, EndLoc).isSuccess();
63596359
if (!is_defined) {
63606360
StringRef Name;
63616361
if (check(parseIdentifier(Name),
@@ -6526,8 +6526,8 @@ bool MasmParser::parseDirectiveErrorIfdef(SMLoc DirectiveLoc,
65266526
bool IsDefined = false;
65276527
MCRegister Reg;
65286528
SMLoc StartLoc, EndLoc;
6529-
IsDefined = (getTargetParser().tryParseRegister(Reg, StartLoc, EndLoc) ==
6530-
MatchOperand_Success);
6529+
IsDefined =
6530+
getTargetParser().tryParseRegister(Reg, StartLoc, EndLoc).isSuccess();
65316531
if (!IsDefined) {
65326532
StringRef Name;
65336533
if (check(parseIdentifier(Name), "expected identifier after '.errdef'"))

llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -318,10 +318,9 @@ class AArch64AsmParser : public MCTargetAsmParser {
318318
const MCParsedAsmOperand &Op2) const override;
319319
bool ParseInstruction(ParseInstructionInfo &Info, StringRef Name,
320320
SMLoc NameLoc, OperandVector &Operands) override;
321-
bool parseRegister(MCRegister &RegNo, SMLoc &StartLoc,
322-
SMLoc &EndLoc) override;
323-
OperandMatchResultTy tryParseRegister(MCRegister &RegNo, SMLoc &StartLoc,
324-
SMLoc &EndLoc) override;
321+
bool parseRegister(MCRegister &Reg, SMLoc &StartLoc, SMLoc &EndLoc) override;
322+
ParseStatus tryParseRegister(MCRegister &Reg, SMLoc &StartLoc,
323+
SMLoc &EndLoc) override;
325324
bool ParseDirective(AsmToken DirectiveID) override;
326325
unsigned validateTargetOperandClass(MCParsedAsmOperand &Op,
327326
unsigned Kind) override;
@@ -2839,16 +2838,15 @@ static unsigned matchMatrixRegName(StringRef Name) {
28392838
.Default(0);
28402839
}
28412840

2842-
bool AArch64AsmParser::parseRegister(MCRegister &RegNo, SMLoc &StartLoc,
2841+
bool AArch64AsmParser::parseRegister(MCRegister &Reg, SMLoc &StartLoc,
28432842
SMLoc &EndLoc) {
2844-
return tryParseRegister(RegNo, StartLoc, EndLoc) != MatchOperand_Success;
2843+
return !tryParseRegister(Reg, StartLoc, EndLoc).isSuccess();
28452844
}
28462845

2847-
OperandMatchResultTy AArch64AsmParser::tryParseRegister(MCRegister &RegNo,
2848-
SMLoc &StartLoc,
2849-
SMLoc &EndLoc) {
2846+
ParseStatus AArch64AsmParser::tryParseRegister(MCRegister &Reg, SMLoc &StartLoc,
2847+
SMLoc &EndLoc) {
28502848
StartLoc = getLoc();
2851-
auto Res = tryParseScalarRegister(RegNo);
2849+
ParseStatus Res = tryParseScalarRegister(Reg);
28522850
EndLoc = SMLoc::getFromPointer(getLoc().getPointer() - 1);
28532851
return Res;
28542852
}

llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1495,10 +1495,9 @@ class AMDGPUAsmParser : public MCTargetAsmParser {
14951495
std::unique_ptr<AMDGPUOperand> parseRegister(bool RestoreOnFailure = false);
14961496
bool ParseRegister(MCRegister &RegNo, SMLoc &StartLoc, SMLoc &EndLoc,
14971497
bool RestoreOnFailure);
1498-
bool parseRegister(MCRegister &RegNo, SMLoc &StartLoc,
1499-
SMLoc &EndLoc) override;
1500-
OperandMatchResultTy tryParseRegister(MCRegister &RegNo, SMLoc &StartLoc,
1501-
SMLoc &EndLoc) override;
1498+
bool parseRegister(MCRegister &Reg, SMLoc &StartLoc, SMLoc &EndLoc) override;
1499+
ParseStatus tryParseRegister(MCRegister &Reg, SMLoc &StartLoc,
1500+
SMLoc &EndLoc) override;
15021501
unsigned checkTargetMatchPredicate(MCInst &Inst) override;
15031502
unsigned validateTargetOperandClass(MCParsedAsmOperand &Op,
15041503
unsigned Kind) override;
@@ -2427,23 +2426,21 @@ bool AMDGPUAsmParser::ParseRegister(MCRegister &RegNo, SMLoc &StartLoc,
24272426
return false;
24282427
}
24292428

2430-
bool AMDGPUAsmParser::parseRegister(MCRegister &RegNo, SMLoc &StartLoc,
2429+
bool AMDGPUAsmParser::parseRegister(MCRegister &Reg, SMLoc &StartLoc,
24312430
SMLoc &EndLoc) {
2432-
return ParseRegister(RegNo, StartLoc, EndLoc, /*RestoreOnFailure=*/false);
2431+
return ParseRegister(Reg, StartLoc, EndLoc, /*RestoreOnFailure=*/false);
24332432
}
24342433

2435-
OperandMatchResultTy AMDGPUAsmParser::tryParseRegister(MCRegister &RegNo,
2436-
SMLoc &StartLoc,
2437-
SMLoc &EndLoc) {
2438-
bool Result =
2439-
ParseRegister(RegNo, StartLoc, EndLoc, /*RestoreOnFailure=*/true);
2434+
ParseStatus AMDGPUAsmParser::tryParseRegister(MCRegister &Reg, SMLoc &StartLoc,
2435+
SMLoc &EndLoc) {
2436+
bool Result = ParseRegister(Reg, StartLoc, EndLoc, /*RestoreOnFailure=*/true);
24402437
bool PendingErrors = getParser().hasPendingError();
24412438
getParser().clearPendingErrors();
24422439
if (PendingErrors)
2443-
return MatchOperand_ParseFail;
2440+
return ParseStatus::Failure;
24442441
if (Result)
2445-
return MatchOperand_NoMatch;
2446-
return MatchOperand_Success;
2442+
return ParseStatus::NoMatch;
2443+
return ParseStatus::Success;
24472444
}
24482445

24492446
bool AMDGPUAsmParser::AddNextRegisterToList(unsigned &Reg, unsigned &RegWidth,

llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -704,10 +704,9 @@ class ARMAsmParser : public MCTargetAsmParser {
704704
}
705705

706706
// Implementation of the MCTargetAsmParser interface:
707-
bool parseRegister(MCRegister &RegNo, SMLoc &StartLoc,
708-
SMLoc &EndLoc) override;
709-
OperandMatchResultTy tryParseRegister(MCRegister &RegNo, SMLoc &StartLoc,
710-
SMLoc &EndLoc) override;
707+
bool parseRegister(MCRegister &Reg, SMLoc &StartLoc, SMLoc &EndLoc) override;
708+
ParseStatus tryParseRegister(MCRegister &Reg, SMLoc &StartLoc,
709+
SMLoc &EndLoc) override;
711710
bool ParseInstruction(ParseInstructionInfo &Info, StringRef Name,
712711
SMLoc NameLoc, OperandVector &Operands) override;
713712
bool ParseDirective(AsmToken DirectiveID) override;
@@ -4050,22 +4049,21 @@ static unsigned MatchRegisterName(StringRef Name);
40504049

40514050
/// }
40524051

4053-
bool ARMAsmParser::parseRegister(MCRegister &RegNo, SMLoc &StartLoc,
4052+
bool ARMAsmParser::parseRegister(MCRegister &Reg, SMLoc &StartLoc,
40544053
SMLoc &EndLoc) {
40554054
const AsmToken &Tok = getParser().getTok();
40564055
StartLoc = Tok.getLoc();
40574056
EndLoc = Tok.getEndLoc();
4058-
RegNo = tryParseRegister();
4057+
Reg = tryParseRegister();
40594058

4060-
return (RegNo == (unsigned)-1);
4059+
return Reg == (unsigned)-1;
40614060
}
40624061

4063-
OperandMatchResultTy ARMAsmParser::tryParseRegister(MCRegister &RegNo,
4064-
SMLoc &StartLoc,
4065-
SMLoc &EndLoc) {
4066-
if (parseRegister(RegNo, StartLoc, EndLoc))
4067-
return MatchOperand_NoMatch;
4068-
return MatchOperand_Success;
4062+
ParseStatus ARMAsmParser::tryParseRegister(MCRegister &Reg, SMLoc &StartLoc,
4063+
SMLoc &EndLoc) {
4064+
if (parseRegister(Reg, StartLoc, EndLoc))
4065+
return ParseStatus::NoMatch;
4066+
return ParseStatus::Success;
40694067
}
40704068

40714069
/// Try to parse a register name. The token must be an Identifier when called,

llvm/lib/Target/AVR/AsmParser/AVRAsmParser.cpp

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,9 @@ class AVRAsmParser : public MCTargetAsmParser {
5656
uint64_t &ErrorInfo,
5757
bool MatchingInlineAsm) override;
5858

59-
bool parseRegister(MCRegister &RegNo, SMLoc &StartLoc,
60-
SMLoc &EndLoc) override;
61-
OperandMatchResultTy tryParseRegister(MCRegister &RegNo, SMLoc &StartLoc,
62-
SMLoc &EndLoc) override;
59+
bool parseRegister(MCRegister &Reg, SMLoc &StartLoc, SMLoc &EndLoc) override;
60+
ParseStatus tryParseRegister(MCRegister &Reg, SMLoc &StartLoc,
61+
SMLoc &EndLoc) override;
6362

6463
bool ParseInstruction(ParseInstructionInfo &Info, StringRef Name,
6564
SMLoc NameLoc, OperandVector &Operands) override;
@@ -590,25 +589,24 @@ ParseStatus AVRAsmParser::parseMemriOperand(OperandVector &Operands) {
590589
return ParseStatus::Success;
591590
}
592591

593-
bool AVRAsmParser::parseRegister(MCRegister &RegNo, SMLoc &StartLoc,
592+
bool AVRAsmParser::parseRegister(MCRegister &Reg, SMLoc &StartLoc,
594593
SMLoc &EndLoc) {
595594
StartLoc = Parser.getTok().getLoc();
596-
RegNo = parseRegister(/*RestoreOnFailure=*/false);
595+
Reg = parseRegister(/*RestoreOnFailure=*/false);
597596
EndLoc = Parser.getTok().getLoc();
598597

599-
return (RegNo == AVR::NoRegister);
598+
return Reg == AVR::NoRegister;
600599
}
601600

602-
OperandMatchResultTy AVRAsmParser::tryParseRegister(MCRegister &RegNo,
603-
SMLoc &StartLoc,
604-
SMLoc &EndLoc) {
601+
ParseStatus AVRAsmParser::tryParseRegister(MCRegister &Reg, SMLoc &StartLoc,
602+
SMLoc &EndLoc) {
605603
StartLoc = Parser.getTok().getLoc();
606-
RegNo = parseRegister(/*RestoreOnFailure=*/true);
604+
Reg = parseRegister(/*RestoreOnFailure=*/true);
607605
EndLoc = Parser.getTok().getLoc();
608606

609-
if (RegNo == AVR::NoRegister)
610-
return MatchOperand_NoMatch;
611-
return MatchOperand_Success;
607+
if (Reg == AVR::NoRegister)
608+
return ParseStatus::NoMatch;
609+
return ParseStatus::Success;
612610
}
613611

614612
void AVRAsmParser::eatComma() {

llvm/lib/Target/BPF/AsmParser/BPFAsmParser.cpp

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,9 @@ class BPFAsmParser : public MCTargetAsmParser {
3939
uint64_t &ErrorInfo,
4040
bool MatchingInlineAsm) override;
4141

42-
bool parseRegister(MCRegister &RegNo, SMLoc &StartLoc,
43-
SMLoc &EndLoc) override;
44-
OperandMatchResultTy tryParseRegister(MCRegister &RegNo, SMLoc &StartLoc,
45-
SMLoc &EndLoc) override;
42+
bool parseRegister(MCRegister &Reo, SMLoc &StartLoc, SMLoc &EndLoc) override;
43+
ParseStatus tryParseRegister(MCRegister &Reg, SMLoc &StartLoc,
44+
SMLoc &EndLoc) override;
4645

4746
bool ParseInstruction(ParseInstructionInfo &Info, StringRef Name,
4847
SMLoc NameLoc, OperandVector &Operands) override;
@@ -338,28 +337,27 @@ bool BPFAsmParser::MatchAndEmitInstruction(SMLoc IDLoc, unsigned &Opcode,
338337
llvm_unreachable("Unknown match type detected!");
339338
}
340339

341-
bool BPFAsmParser::parseRegister(MCRegister &RegNo, SMLoc &StartLoc,
340+
bool BPFAsmParser::parseRegister(MCRegister &Reg, SMLoc &StartLoc,
342341
SMLoc &EndLoc) {
343-
if (tryParseRegister(RegNo, StartLoc, EndLoc) != MatchOperand_Success)
342+
if (!tryParseRegister(Reg, StartLoc, EndLoc).isSuccess())
344343
return Error(StartLoc, "invalid register name");
345344
return false;
346345
}
347346

348-
OperandMatchResultTy BPFAsmParser::tryParseRegister(MCRegister &RegNo,
349-
SMLoc &StartLoc,
350-
SMLoc &EndLoc) {
347+
ParseStatus BPFAsmParser::tryParseRegister(MCRegister &Reg, SMLoc &StartLoc,
348+
SMLoc &EndLoc) {
351349
const AsmToken &Tok = getParser().getTok();
352350
StartLoc = Tok.getLoc();
353351
EndLoc = Tok.getEndLoc();
354-
RegNo = 0;
352+
Reg = BPF::NoRegister;
355353
StringRef Name = getLexer().getTok().getIdentifier();
356354

357355
if (!MatchRegisterName(Name)) {
358356
getParser().Lex(); // Eat identifier token.
359-
return MatchOperand_Success;
357+
return ParseStatus::Success;
360358
}
361359

362-
return MatchOperand_NoMatch;
360+
return ParseStatus::NoMatch;
363361
}
364362

365363
ParseStatus BPFAsmParser::parseOperandAsOperator(OperandVector &Operands) {

llvm/lib/Target/CSKY/AsmParser/CSKYAsmParser.cpp

Lines changed: 19 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,7 @@ class CSKYAsmParser : public MCTargetAsmParser {
7272
uint64_t &ErrorInfo,
7373
bool MatchingInlineAsm) override;
7474

75-
bool parseRegister(MCRegister &RegNo, SMLoc &StartLoc,
76-
SMLoc &EndLoc) override;
75+
bool parseRegister(MCRegister &Reg, SMLoc &StartLoc, SMLoc &EndLoc) override;
7776

7877
bool ParseInstruction(ParseInstructionInfo &Info, StringRef Name,
7978
SMLoc NameLoc, OperandVector &Operands) override;
@@ -84,8 +83,8 @@ class CSKYAsmParser : public MCTargetAsmParser {
8483
// possible, compression of the instruction is performed.
8584
void emitToStreamer(MCStreamer &S, const MCInst &Inst);
8685

87-
OperandMatchResultTy tryParseRegister(MCRegister &RegNo, SMLoc &StartLoc,
88-
SMLoc &EndLoc) override;
86+
ParseStatus tryParseRegister(MCRegister &Reg, SMLoc &StartLoc,
87+
SMLoc &EndLoc) override;
8988

9089
bool processInstruction(MCInst &Inst, SMLoc IDLoc, OperandVector &Operands,
9190
MCStreamer &Out);
@@ -1001,24 +1000,24 @@ bool CSKYAsmParser::processInstruction(MCInst &Inst, SMLoc IDLoc,
10011000
// Attempts to match Name as a register (either using the default name or
10021001
// alternative ABI names), setting RegNo to the matching register. Upon
10031002
// failure, returns true and sets RegNo to 0.
1004-
static bool matchRegisterNameHelper(const MCSubtargetInfo &STI,
1005-
MCRegister &RegNo, StringRef Name) {
1006-
RegNo = MatchRegisterName(Name);
1003+
static bool matchRegisterNameHelper(const MCSubtargetInfo &STI, MCRegister &Reg,
1004+
StringRef Name) {
1005+
Reg = MatchRegisterName(Name);
10071006

1008-
if (RegNo == CSKY::NoRegister)
1009-
RegNo = MatchRegisterAltName(Name);
1007+
if (Reg == CSKY::NoRegister)
1008+
Reg = MatchRegisterAltName(Name);
10101009

1011-
return RegNo == CSKY::NoRegister;
1010+
return Reg == CSKY::NoRegister;
10121011
}
10131012

1014-
bool CSKYAsmParser::parseRegister(MCRegister &RegNo, SMLoc &StartLoc,
1013+
bool CSKYAsmParser::parseRegister(MCRegister &Reg, SMLoc &StartLoc,
10151014
SMLoc &EndLoc) {
10161015
const AsmToken &Tok = getParser().getTok();
10171016
StartLoc = Tok.getLoc();
10181017
EndLoc = Tok.getEndLoc();
10191018
StringRef Name = getLexer().getTok().getIdentifier();
10201019

1021-
if (!matchRegisterNameHelper(getSTI(), (MCRegister &)RegNo, Name)) {
1020+
if (!matchRegisterNameHelper(getSTI(), Reg, Name)) {
10221021
getParser().Lex(); // Eat identifier token.
10231022
return false;
10241023
}
@@ -1035,13 +1034,13 @@ ParseStatus CSKYAsmParser::parseRegister(OperandVector &Operands) {
10351034
return ParseStatus::NoMatch;
10361035
case AsmToken::Identifier: {
10371036
StringRef Name = getLexer().getTok().getIdentifier();
1038-
MCRegister RegNo;
1037+
MCRegister Reg;
10391038

1040-
if (matchRegisterNameHelper(getSTI(), (MCRegister &)RegNo, Name))
1039+
if (matchRegisterNameHelper(getSTI(), Reg, Name))
10411040
return ParseStatus::NoMatch;
10421041

10431042
getLexer().Lex();
1044-
Operands.push_back(CSKYOperand::createReg(RegNo, S, E));
1043+
Operands.push_back(CSKYOperand::createReg(Reg, S, E));
10451044

10461045
return ParseStatus::Success;
10471046
}
@@ -1514,20 +1513,19 @@ bool CSKYAsmParser::ParseInstruction(ParseInstructionInfo &Info, StringRef Name,
15141513
return false;
15151514
}
15161515

1517-
OperandMatchResultTy CSKYAsmParser::tryParseRegister(MCRegister &RegNo,
1518-
SMLoc &StartLoc,
1519-
SMLoc &EndLoc) {
1516+
ParseStatus CSKYAsmParser::tryParseRegister(MCRegister &Reg, SMLoc &StartLoc,
1517+
SMLoc &EndLoc) {
15201518
const AsmToken &Tok = getParser().getTok();
15211519
StartLoc = Tok.getLoc();
15221520
EndLoc = Tok.getEndLoc();
15231521

15241522
StringRef Name = getLexer().getTok().getIdentifier();
15251523

1526-
if (matchRegisterNameHelper(getSTI(), (MCRegister &)RegNo, Name))
1527-
return MatchOperand_NoMatch;
1524+
if (matchRegisterNameHelper(getSTI(), Reg, Name))
1525+
return ParseStatus::NoMatch;
15281526

15291527
getParser().Lex(); // Eat identifier token.
1530-
return MatchOperand_Success;
1528+
return ParseStatus::Success;
15311529
}
15321530

15331531
ParseStatus CSKYAsmParser::parseDirective(AsmToken DirectiveID) {

0 commit comments

Comments
 (0)