diff options
author | Daniel Dunbar <daniel@zuster.org> | 2010-07-12 19:22:53 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2010-07-12 19:22:53 +0000 |
commit | 492b7a21cb28adf8819ee369f42a8129de5227ae (patch) | |
tree | 7b14a11db0aa2210d56bedb77831ff8ca188fd58 /lib | |
parent | 38a4e2acb7d01fbba3544882084bc9955812b7d3 (diff) | |
download | llvm-492b7a21cb28adf8819ee369f42a8129de5227ae.tar.gz llvm-492b7a21cb28adf8819ee369f42a8129de5227ae.tar.bz2 llvm-492b7a21cb28adf8819ee369f42a8129de5227ae.tar.xz |
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
Diffstat (limited to 'lib')
-rw-r--r-- | lib/MC/MCParser/AsmParser.cpp | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/lib/MC/MCParser/AsmParser.cpp b/lib/MC/MCParser/AsmParser.cpp index e976c0a0b7..b9139fe5af 100644 --- a/lib/MC/MCParser/AsmParser.cpp +++ b/lib/MC/MCParser/AsmParser.cpp @@ -66,6 +66,8 @@ public: // Call the base implementation. this->MCAsmParserExtension::Initialize(Parser); + Parser.AddDirectiveHandler(this, ".desc", MCAsmParser::DirectiveHandler( + &DarwinAsmParser::ParseDirectiveDesc)); Parser.AddDirectiveHandler(this, ".lsym", MCAsmParser::DirectiveHandler( &DarwinAsmParser::ParseDirectiveLsym)); Parser.AddDirectiveHandler(this, ".subsections_via_symbols", @@ -83,6 +85,7 @@ public: &DarwinAsmParser::ParseDirectiveSecureLogReset)); } + bool ParseDirectiveDesc(StringRef, SMLoc); bool ParseDirectiveDumpOrLoad(StringRef, SMLoc); bool ParseDirectiveLsym(StringRef, SMLoc); bool ParseDirectiveSecureLogReset(StringRef, SMLoc); @@ -837,8 +840,6 @@ bool AsmParser::ParseStatement() { return ParseDirectiveComm(/*IsLocal=*/true); if (IDVal == ".zerofill") return ParseDirectiveDarwinZerofill(); - if (IDVal == ".desc") - return ParseDirectiveDarwinSymbolDesc(); if (IDVal == ".tbss") return ParseDirectiveDarwinTBSS(); @@ -1431,22 +1432,22 @@ bool AsmParser::ParseDirectiveELFType() { return false; } -/// ParseDirectiveDarwinSymbolDesc +/// ParseDirectiveDesc /// ::= .desc identifier , expression -bool AsmParser::ParseDirectiveDarwinSymbolDesc() { +bool DarwinAsmParser::ParseDirectiveDesc(StringRef, SMLoc) { StringRef Name; - if (ParseIdentifier(Name)) + if (getParser().ParseIdentifier(Name)) return TokError("expected identifier in directive"); // Handle the identifier as the key symbol. - MCSymbol *Sym = CreateSymbol(Name); + MCSymbol *Sym = getContext().GetOrCreateSymbol(Name); if (getLexer().isNot(AsmToken::Comma)) return TokError("unexpected token in '.desc' directive"); Lex(); int64_t DescValue; - if (ParseAbsoluteExpression(DescValue)) + if (getParser().ParseAbsoluteExpression(DescValue)) return true; if (getLexer().isNot(AsmToken::EndOfStatement)) |