diff options
-rw-r--r-- | include/llvm/MC/MCParser/AsmParser.h | 1 | ||||
-rw-r--r-- | lib/MC/MCParser/AsmParser.cpp | 15 | ||||
-rw-r--r-- | test/MC/AsmParser/directive_desc.s | 2 |
3 files changed, 9 insertions, 9 deletions
diff --git a/include/llvm/MC/MCParser/AsmParser.h b/include/llvm/MC/MCParser/AsmParser.h index 3e897b3..43cb596 100644 --- a/include/llvm/MC/MCParser/AsmParser.h +++ b/include/llvm/MC/MCParser/AsmParser.h @@ -137,7 +137,6 @@ private: /// accepts a single symbol (which should be a label or an external). bool ParseDirectiveSymbolAttribute(MCSymbolAttr Attr); bool ParseDirectiveELFType(); // ELF specific ".type" - bool ParseDirectiveDarwinSymbolDesc(); // Darwin specific ".desc" bool ParseDirectiveComm(bool IsLocal); // ".comm" and ".lcomm" bool ParseDirectiveDarwinZerofill(); // Darwin specific ".zerofill" diff --git a/lib/MC/MCParser/AsmParser.cpp b/lib/MC/MCParser/AsmParser.cpp index e976c0a..b9139fe 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)) diff --git a/test/MC/AsmParser/directive_desc.s b/test/MC/AsmParser/directive_desc.s index 992455c..4bc5615 100644 --- a/test/MC/AsmParser/directive_desc.s +++ b/test/MC/AsmParser/directive_desc.s @@ -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: .desc foo,16 |