@@ -103,7 +103,7 @@ class PPCAsmParser : public MCTargetAsmParser {
103103
104104 bool isPPC64 () const { return IsPPC64; }
105105
106- bool matchRegisterName (MCRegister &RegNo, int64_t &IntVal);
106+ MCRegister matchRegisterName (int64_t &IntVal);
107107
108108 bool parseRegister (MCRegister &Reg, SMLoc &StartLoc, SMLoc &EndLoc) override ;
109109 ParseStatus tryParseRegister (MCRegister &Reg, SMLoc &StartLoc,
@@ -1291,13 +1291,14 @@ bool PPCAsmParser::matchAndEmitInstruction(SMLoc IDLoc, unsigned &Opcode,
12911291 llvm_unreachable (" Implement any new match types added!" );
12921292}
12931293
1294- bool PPCAsmParser::matchRegisterName (MCRegister &RegNo, int64_t &IntVal) {
1294+ MCRegister PPCAsmParser::matchRegisterName (int64_t &IntVal) {
12951295 if (getParser ().getTok ().is (AsmToken::Percent))
12961296 getParser ().Lex (); // Eat the '%'.
12971297
12981298 if (!getParser ().getTok ().is (AsmToken::Identifier))
1299- return true ;
1299+ return MCRegister () ;
13001300
1301+ MCRegister RegNo;
13011302 StringRef Name = getParser ().getTok ().getString ();
13021303 if (Name.equals_insensitive (" lr" )) {
13031304 RegNo = isPPC64 () ? PPC::LR8 : PPC::LR;
@@ -1345,9 +1346,10 @@ bool PPCAsmParser::matchRegisterName(MCRegister &RegNo, int64_t &IntVal) {
13451346 !Name.substr (3 ).getAsInteger (10 , IntVal) && IntVal < 8 ) {
13461347 RegNo = DMRRegs[IntVal];
13471348 } else
1348- return true ;
1349+ return MCRegister ();
1350+
13491351 getParser ().Lex ();
1350- return false ;
1352+ return RegNo ;
13511353}
13521354
13531355bool PPCAsmParser::parseRegister (MCRegister &Reg, SMLoc &StartLoc,
@@ -1362,9 +1364,8 @@ ParseStatus PPCAsmParser::tryParseRegister(MCRegister &Reg, SMLoc &StartLoc,
13621364 const AsmToken &Tok = getParser ().getTok ();
13631365 StartLoc = Tok.getLoc ();
13641366 EndLoc = Tok.getEndLoc ();
1365- Reg = PPC::NoRegister;
13661367 int64_t IntVal;
1367- if (matchRegisterName (Reg, IntVal))
1368+ if (! (Reg = matchRegisterName ( IntVal) ))
13681369 return ParseStatus::NoMatch;
13691370 return ParseStatus::Success;
13701371}
@@ -1541,9 +1542,8 @@ bool PPCAsmParser::parseOperand(OperandVector &Operands) {
15411542 // Special handling for register names. These are interpreted
15421543 // as immediates corresponding to the register number.
15431544 case AsmToken::Percent: {
1544- MCRegister RegNo;
15451545 int64_t IntVal;
1546- if (matchRegisterName (RegNo, IntVal))
1546+ if (! matchRegisterName (IntVal))
15471547 return Error (S, " invalid register name" );
15481548
15491549 Operands.push_back (PPCOperand::CreateImm (IntVal, S, E, isPPC64 ()));
@@ -1627,8 +1627,7 @@ bool PPCAsmParser::parseOperand(OperandVector &Operands) {
16271627 int64_t IntVal;
16281628 switch (getLexer ().getKind ()) {
16291629 case AsmToken::Percent: {
1630- MCRegister RegNo;
1631- if (matchRegisterName (RegNo, IntVal))
1630+ if (!matchRegisterName (IntVal))
16321631 return Error (S, " invalid register name" );
16331632 break ;
16341633 }
0 commit comments