From 91689c1d0f1d8cb1f158b8bde65b66dd9e6c3be2 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Wed, 8 Sep 2010 05:10:46 +0000 Subject: change the MC "ParseInstruction" interface to make it the implementation's job to check for and lex the EndOfStatement marker. llvm-svn: 113347 --- llvm/lib/MC/MCParser/AsmParser.cpp | 7 ------- llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp | 5 +++++ llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp | 4 ++++ 3 files changed, 9 insertions(+), 7 deletions(-) (limited to 'llvm/lib') diff --git a/llvm/lib/MC/MCParser/AsmParser.cpp b/llvm/lib/MC/MCParser/AsmParser.cpp index f83cd5eb2a1..310574fe27b 100644 --- a/llvm/lib/MC/MCParser/AsmParser.cpp +++ b/llvm/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/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp b/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp index f2099d29386..f44470b2c1b 100644 --- a/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp +++ b/llvm/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/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp b/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp index 58e4554ab03..068ed56e951 100644 --- a/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp +++ b/llvm/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") || -- cgit v1.2.3