From: Chris Lattner Date: Wed, 8 Sep 2010 05:10:46 +0000 (+0000) Subject: change the MC "ParseInstruction" interface to make it the X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=34e53140c2cc02ce4c9d060e48302576d3962e1c;p=oota-llvm.git 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 --- diff --git a/lib/MC/MCParser/AsmParser.cpp b/lib/MC/MCParser/AsmParser.cpp index f83cd5eb2a1..310574fe27b 100644 --- a/lib/MC/MCParser/AsmParser.cpp +++ b/lib/MC/MCParser/AsmParser.cpp @@ -917,8 +917,6 @@ bool AsmParser::ParseStatement() { SmallVector 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]; diff --git a/lib/Target/ARM/AsmParser/ARMAsmParser.cpp b/lib/Target/ARM/AsmParser/ARMAsmParser.cpp index f2099d29386..f44470b2c1b 100644 --- a/lib/Target/ARM/AsmParser/ARMAsmParser.cpp +++ b/lib/Target/ARM/AsmParser/ARMAsmParser.cpp @@ -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; } diff --git a/lib/Target/X86/AsmParser/X86AsmParser.cpp b/lib/Target/X86/AsmParser/X86AsmParser.cpp index 58e4554ab03..068ed56e951 100644 --- a/lib/Target/X86/AsmParser/X86AsmParser.cpp +++ b/lib/Target/X86/AsmParser/X86AsmParser.cpp @@ -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") ||