change the MC "ParseInstruction" interface to make it the

implementation's job to check for and lex the EndOfStatement
marker.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113347 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2010-09-08 05:10:46 +00:00
parent 9607c40601
commit 34e53140c2
3 changed files with 9 additions and 7 deletions

View File

@ -917,8 +917,6 @@ bool AsmParser::ParseStatement() {
SmallVector<MCParsedAsmOperand*, 8> ParsedOperands;
bool HadError = getTargetParser().ParseInstruction(Opcode.str(), IDLoc,
ParsedOperands);
if (!HadError && Lexer.isNot(AsmToken::EndOfStatement))
HadError = TokError("unexpected token in argument list");
// Dump the parsed representation, if requested.
if (getShowParsedOperands()) {
@ -945,11 +943,6 @@ bool AsmParser::ParseStatement() {
HadError = true;
}
// If there was no error, consume the end-of-statement token. Otherwise this
// will be done by our caller.
if (!HadError)
Lex();
// Free any parsed operands.
for (unsigned i = 0, e = ParsedOperands.size(); i != e; ++i)
delete ParsedOperands[i];

View File

@ -737,6 +737,11 @@ bool ARMAsmParser::ParseInstruction(StringRef Name, SMLoc NameLoc,
Operands.push_back(Op.take());
}
}
if (getLexer().isNot(AsmToken::EndOfStatement))
return TokError("unexpected token in argument list");
Parser.Lex(); // Consume the EndOfStatement
return false;
}

View File

@ -786,6 +786,10 @@ ParseInstruction(StringRef Name, SMLoc NameLoc,
return true;
}
}
if (getLexer().isNot(AsmToken::EndOfStatement))
return TokError("unexpected token in argument list");
Parser.Lex(); // Consume the EndOfStatement
// FIXME: Hack to handle recognizing s{hr,ar,hl}? $1.
if ((Name.startswith("shr") || Name.startswith("sar") ||