Author: dim
Date: Mon Apr 20 17:36:35 2015
New Revision: 281775
URL: https://svnweb.freebsd.org/changeset/base/281775

Log:
  Pull in r229911 from upstream llvm trunk (by Benjamin Kramer):
  
    MC: Allow multiple comma-separated expressions on the .uleb128 directive.
  
    For compatiblity with GNU as. Binutils documents this as
    '.uleb128 expressions'. Subtle, isn't it?
  
  Reported by:  sbruno
  PR:           199554
  MFC after:    3 days

Modified:
  head/contrib/llvm/lib/MC/MCParser/AsmParser.cpp

Modified: head/contrib/llvm/lib/MC/MCParser/AsmParser.cpp
==============================================================================
--- head/contrib/llvm/lib/MC/MCParser/AsmParser.cpp     Mon Apr 20 17:30:13 
2015        (r281774)
+++ head/contrib/llvm/lib/MC/MCParser/AsmParser.cpp     Mon Apr 20 17:36:35 
2015        (r281775)
@@ -3636,21 +3636,27 @@ bool AsmParser::parseDirectiveSpace(Stri
 }
 
 /// parseDirectiveLEB128
-/// ::= (.sleb128 | .uleb128) expression
+/// ::= (.sleb128 | .uleb128) [ expression (, expression)* ]
 bool AsmParser::parseDirectiveLEB128(bool Signed) {
   checkForValidSection();
   const MCExpr *Value;
 
-  if (parseExpression(Value))
-    return true;
+  for (;;) {
+    if (parseExpression(Value))
+      return true;
 
-  if (getLexer().isNot(AsmToken::EndOfStatement))
-    return TokError("unexpected token in directive");
+    if (Signed)
+      getStreamer().EmitSLEB128Value(Value);
+    else
+      getStreamer().EmitULEB128Value(Value);
 
-  if (Signed)
-    getStreamer().EmitSLEB128Value(Value);
-  else
-    getStreamer().EmitULEB128Value(Value);
+    if (getLexer().is(AsmToken::EndOfStatement))
+      break;
+
+    if (getLexer().isNot(AsmToken::Comma))
+      return TokError("unexpected token in directive");
+    Lex();
+  }
 
   return false;
 }
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to