Change the parsing of .loc back to allow the LineNumber field to be optional as

it is with other assemblers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111967 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Kevin Enderby 2010-08-24 21:14:47 +00:00
parent 82c84fdd23
commit 6d8f1a9a18

View File

@ -1838,7 +1838,7 @@ bool GenericAsmParser::ParseDirectiveLine(StringRef, SMLoc DirectiveLoc) {
/// ParseDirectiveLoc /// ParseDirectiveLoc
/// ::= .loc FileNumber LineNumber [ColumnPos] [basic_block] [prologue_end] /// ::= .loc FileNumber [LineNumber] [ColumnPos] [basic_block] [prologue_end]
/// [epilogue_begin] [is_stmt VALUE] [isa VALUE] /// [epilogue_begin] [is_stmt VALUE] [isa VALUE]
/// The first number is a file number, must have been previously assigned with /// The first number is a file number, must have been previously assigned with
/// a .file directive, the second number is the line number and optionally the /// a .file directive, the second number is the line number and optionally the
@ -1855,12 +1855,13 @@ bool GenericAsmParser::ParseDirectiveLoc(StringRef, SMLoc DirectiveLoc) {
return TokError("unassigned file number in '.loc' directive"); return TokError("unassigned file number in '.loc' directive");
Lex(); Lex();
if (getLexer().isNot(AsmToken::Integer)) int64_t LineNumber = 0;
return TokError("unexpected token in '.loc' directive"); if (getLexer().is(AsmToken::Integer)) {
int64_t LineNumber = getTok().getIntVal(); LineNumber = getTok().getIntVal();
if (LineNumber < 1) if (LineNumber < 1)
return TokError("line number less than one in '.loc' directive"); return TokError("line number less than one in '.loc' directive");
Lex(); Lex();
}
int64_t ColumnPos = 0; int64_t ColumnPos = 0;
if (getLexer().is(AsmToken::Integer)) { if (getLexer().is(AsmToken::Integer)) {