diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2010-09-16 15:03:59 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2010-09-16 15:03:59 +0000 |
commit | 922e3f454ba84becbcb665cdbeb4ff4d231db393 (patch) | |
tree | 05d9d85ea43eb5ffb64cf3b3acc735192257a03c /llvm/lib/MC/MCParser/AsmParser.cpp | |
parent | ae18530d031b4860965093102b63908083d06007 (diff) | |
download | bcm5719-llvm-922e3f454ba84becbcb665cdbeb4ff4d231db393.tar.gz bcm5719-llvm-922e3f454ba84becbcb665cdbeb4ff4d231db393.zip |
Add support for the .zero directive.
llvm-svn: 114077
Diffstat (limited to 'llvm/lib/MC/MCParser/AsmParser.cpp')
-rw-r--r-- | llvm/lib/MC/MCParser/AsmParser.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/llvm/lib/MC/MCParser/AsmParser.cpp b/llvm/lib/MC/MCParser/AsmParser.cpp index b3ffed846d5..d101ad2c4bf 100644 --- a/llvm/lib/MC/MCParser/AsmParser.cpp +++ b/llvm/lib/MC/MCParser/AsmParser.cpp @@ -180,6 +180,7 @@ private: bool ParseDirectiveValue(unsigned Size); // ".byte", ".long", ... bool ParseDirectiveFill(); // ".fill" bool ParseDirectiveSpace(); // ".space" + bool ParseDirectiveZero(); // ".zero" bool ParseDirectiveSet(); // ".set" bool ParseDirectiveOrg(); // ".org" // ".align{,32}", ".p2align{,w,l}" @@ -871,6 +872,8 @@ bool AsmParser::ParseStatement() { return ParseDirectiveFill(); if (IDVal == ".space") return ParseDirectiveSpace(); + if (IDVal == ".zero") + return ParseDirectiveZero(); // Symbol attribute directives @@ -1353,6 +1356,25 @@ bool AsmParser::ParseDirectiveSpace() { return false; } +/// ParseDirectiveZero +/// ::= .zero expression +bool AsmParser::ParseDirectiveZero() { + CheckForValidSection(); + + int64_t NumBytes; + if (ParseAbsoluteExpression(NumBytes)) + return true; + + if (getLexer().isNot(AsmToken::EndOfStatement)) + return TokError("unexpected token in '.zero' directive"); + + Lex(); + + getStreamer().EmitFill(NumBytes, 0, DEFAULT_ADDRSPACE); + + return false; +} + /// ParseDirectiveFill /// ::= .fill expression , expression , expression bool AsmParser::ParseDirectiveFill() { |