diff options
author | dim <dim@FreeBSD.org> | 2015-05-21 06:57:07 +0000 |
---|---|---|
committer | dim <dim@FreeBSD.org> | 2015-05-21 06:57:07 +0000 |
commit | 6669eceb008a9f13853b330dc0b099d6386fe879 (patch) | |
tree | 311f96478e9fceea407d1f187f9c5cef712f796e /lib/MC/MCParser/AsmParser.cpp | |
parent | ea50228cd2ebf54c0ec67624d82c47a11b807869 (diff) | |
download | FreeBSD-src-6669eceb008a9f13853b330dc0b099d6386fe879.zip FreeBSD-src-6669eceb008a9f13853b330dc0b099d6386fe879.tar.gz |
Vendor import of llvm RELEASE_361/final tag r237755 (effectively, 3.6.1 release):
https://llvm.org/svn/llvm-project/llvm/tags/RELEASE_361/final@237755
Diffstat (limited to 'lib/MC/MCParser/AsmParser.cpp')
-rw-r--r-- | lib/MC/MCParser/AsmParser.cpp | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/lib/MC/MCParser/AsmParser.cpp b/lib/MC/MCParser/AsmParser.cpp index 8eff90a..e2a4fc1 100644 --- a/lib/MC/MCParser/AsmParser.cpp +++ b/lib/MC/MCParser/AsmParser.cpp @@ -3636,21 +3636,27 @@ bool AsmParser::parseDirectiveSpace(StringRef IDVal) { } /// 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; } |