MC/AsmParser: Move .desc parsing to Darwin specific parser.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108179 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Daniel Dunbar
2010-07-12 19:22:53 +00:00
parent 38a4e2acb7
commit 492b7a21cb
3 changed files with 9 additions and 9 deletions

View File

@@ -137,7 +137,6 @@ private:
/// accepts a single symbol (which should be a label or an external). /// accepts a single symbol (which should be a label or an external).
bool ParseDirectiveSymbolAttribute(MCSymbolAttr Attr); bool ParseDirectiveSymbolAttribute(MCSymbolAttr Attr);
bool ParseDirectiveELFType(); // ELF specific ".type" bool ParseDirectiveELFType(); // ELF specific ".type"
bool ParseDirectiveDarwinSymbolDesc(); // Darwin specific ".desc"
bool ParseDirectiveComm(bool IsLocal); // ".comm" and ".lcomm" bool ParseDirectiveComm(bool IsLocal); // ".comm" and ".lcomm"
bool ParseDirectiveDarwinZerofill(); // Darwin specific ".zerofill" bool ParseDirectiveDarwinZerofill(); // Darwin specific ".zerofill"

View File

@@ -66,6 +66,8 @@ public:
// Call the base implementation. // Call the base implementation.
this->MCAsmParserExtension::Initialize(Parser); this->MCAsmParserExtension::Initialize(Parser);
Parser.AddDirectiveHandler(this, ".desc", MCAsmParser::DirectiveHandler(
&DarwinAsmParser::ParseDirectiveDesc));
Parser.AddDirectiveHandler(this, ".lsym", MCAsmParser::DirectiveHandler( Parser.AddDirectiveHandler(this, ".lsym", MCAsmParser::DirectiveHandler(
&DarwinAsmParser::ParseDirectiveLsym)); &DarwinAsmParser::ParseDirectiveLsym));
Parser.AddDirectiveHandler(this, ".subsections_via_symbols", Parser.AddDirectiveHandler(this, ".subsections_via_symbols",
@@ -83,6 +85,7 @@ public:
&DarwinAsmParser::ParseDirectiveSecureLogReset)); &DarwinAsmParser::ParseDirectiveSecureLogReset));
} }
bool ParseDirectiveDesc(StringRef, SMLoc);
bool ParseDirectiveDumpOrLoad(StringRef, SMLoc); bool ParseDirectiveDumpOrLoad(StringRef, SMLoc);
bool ParseDirectiveLsym(StringRef, SMLoc); bool ParseDirectiveLsym(StringRef, SMLoc);
bool ParseDirectiveSecureLogReset(StringRef, SMLoc); bool ParseDirectiveSecureLogReset(StringRef, SMLoc);
@@ -837,8 +840,6 @@ bool AsmParser::ParseStatement() {
return ParseDirectiveComm(/*IsLocal=*/true); return ParseDirectiveComm(/*IsLocal=*/true);
if (IDVal == ".zerofill") if (IDVal == ".zerofill")
return ParseDirectiveDarwinZerofill(); return ParseDirectiveDarwinZerofill();
if (IDVal == ".desc")
return ParseDirectiveDarwinSymbolDesc();
if (IDVal == ".tbss") if (IDVal == ".tbss")
return ParseDirectiveDarwinTBSS(); return ParseDirectiveDarwinTBSS();
@@ -1431,22 +1432,22 @@ bool AsmParser::ParseDirectiveELFType() {
return false; return false;
} }
/// ParseDirectiveDarwinSymbolDesc /// ParseDirectiveDesc
/// ::= .desc identifier , expression /// ::= .desc identifier , expression
bool AsmParser::ParseDirectiveDarwinSymbolDesc() { bool DarwinAsmParser::ParseDirectiveDesc(StringRef, SMLoc) {
StringRef Name; StringRef Name;
if (ParseIdentifier(Name)) if (getParser().ParseIdentifier(Name))
return TokError("expected identifier in directive"); return TokError("expected identifier in directive");
// Handle the identifier as the key symbol. // Handle the identifier as the key symbol.
MCSymbol *Sym = CreateSymbol(Name); MCSymbol *Sym = getContext().GetOrCreateSymbol(Name);
if (getLexer().isNot(AsmToken::Comma)) if (getLexer().isNot(AsmToken::Comma))
return TokError("unexpected token in '.desc' directive"); return TokError("unexpected token in '.desc' directive");
Lex(); Lex();
int64_t DescValue; int64_t DescValue;
if (ParseAbsoluteExpression(DescValue)) if (getParser().ParseAbsoluteExpression(DescValue))
return true; return true;
if (getLexer().isNot(AsmToken::EndOfStatement)) if (getLexer().isNot(AsmToken::EndOfStatement))

View File

@@ -1,4 +1,4 @@
# RUN: llvm-mc -triple i386-unknown-unknown %s | FileCheck %s # RUN: llvm-mc -triple i386-apple-darwin9 %s | FileCheck %s
# CHECK: TEST0: # CHECK: TEST0:
# CHECK: .desc foo,16 # CHECK: .desc foo,16