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
This commit is contained in:
parent
d8edb414c9
commit
98095a5dd2
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=281775
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user