Change the parsing of .loc back to allow the LineNumber field to be optional as
authorKevin Enderby <enderby@apple.com>
Tue, 24 Aug 2010 21:14:47 +0000 (21:14 +0000)
committerKevin Enderby <enderby@apple.com>
Tue, 24 Aug 2010 21:14:47 +0000 (21:14 +0000)
it is with other assemblers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111967 91177308-0d34-0410-b5e6-96231b3b80d8

lib/MC/MCParser/AsmParser.cpp

index c65becf9741cf038f626cdd1096a46031cf74d90..f83cd5eb2a16015b6135f70b46575841e2b442ce 100644 (file)
@@ -1838,7 +1838,7 @@ bool GenericAsmParser::ParseDirectiveLine(StringRef, SMLoc DirectiveLoc) {
 
 
 /// ParseDirectiveLoc
-/// ::= .loc FileNumber LineNumber [ColumnPos] [basic_block] [prologue_end]
+/// ::= .loc FileNumber [LineNumber] [ColumnPos] [basic_block] [prologue_end]
 ///                                [epilogue_begin] [is_stmt VALUE] [isa VALUE]
 /// 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
@@ -1855,12 +1855,13 @@ bool GenericAsmParser::ParseDirectiveLoc(StringRef, SMLoc DirectiveLoc) {
     return TokError("unassigned file number in '.loc' directive");
   Lex();
 
-  if (getLexer().isNot(AsmToken::Integer))
-    return TokError("unexpected token in '.loc' directive");
-  int64_t LineNumber = getTok().getIntVal();
-  if (LineNumber < 1)
-    return TokError("line number less than one in '.loc' directive");
-  Lex();
+  int64_t LineNumber = 0;
+  if (getLexer().is(AsmToken::Integer)) {
+    LineNumber = getTok().getIntVal();
+    if (LineNumber < 1)
+      return TokError("line number less than one in '.loc' directive");
+    Lex();
+  }
 
   int64_t ColumnPos = 0;
   if (getLexer().is(AsmToken::Integer)) {