MatchRegisterName() returns 0 if it can't match the register.
[oota-llvm.git] / lib / Target / ARM / AsmParser / ARMAsmParser.cpp
index 818630b981c2068b51f8d5e6cf601aca76cfff30..b41b71d4b0a842d9299b24207aa5af7973771fe0 100644 (file)
@@ -387,8 +387,8 @@ int ARMAsmParser::TryParseRegister() {
 
   // FIXME: Validate register for the current architecture; we have to do
   // validation later, so maybe there is no need for this here.
-  int RegNum = MatchRegisterName(Tok.getString());
-  if (RegNum == -1)
+  unsigned RegNum = MatchRegisterName(Tok.getString());
+  if (RegNum == 0)
     return -1;
   Parser.Lex(); // Eat identifier token.
   return RegNum;
@@ -434,13 +434,12 @@ ARMOperand *ARMAsmParser::ParseRegisterList() {
     Error(RegLoc, "register expected");
     return 0;
   }
-  int RegNum = MatchRegisterName(RegTok.getString());
+  int RegNum = TryParseRegister();
   if (RegNum == -1) {
     Error(RegLoc, "register expected");
     return 0;
   }
 
-  Parser.Lex(); // Eat identifier token.
   unsigned RegList = 1 << RegNum;
 
   int HighRegNum = RegNum;
@@ -454,7 +453,7 @@ ARMOperand *ARMAsmParser::ParseRegisterList() {
       Error(RegLoc, "register expected");
       return 0;
     }
-    int RegNum = MatchRegisterName(RegTok.getString());
+    int RegNum = TryParseRegister();
     if (RegNum == -1) {
       Error(RegLoc, "register expected");
       return 0;
@@ -466,8 +465,6 @@ ARMOperand *ARMAsmParser::ParseRegisterList() {
       Warning(RegLoc, "register not in ascending order in register list");
     RegList |= 1 << RegNum;
     HighRegNum = RegNum;
-
-    Parser.Lex(); // Eat identifier token.
   }
   const AsmToken &RCurlyTok = Parser.getTok();
   if (RCurlyTok.isNot(AsmToken::RCurly)) {