summaryrefslogtreecommitdiffstats
path: root/llvm/lib/MC/MCParser/AsmParser.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2010-05-13 00:10:34 +0000
committerChris Lattner <sabre@nondot.org>2010-05-13 00:10:34 +0000
commit8cb4728a159408d44ce7fe734e5f1e7784217f30 (patch)
tree8e5a8dd1bd2a047da7343722aa1c9fa746c1fd97 /llvm/lib/MC/MCParser/AsmParser.cpp
parent9efef006cf0496d12287ea9a77ef0dba61e59f34 (diff)
downloadbcm5719-llvm-8cb4728a159408d44ce7fe734e5f1e7784217f30.tar.gz
bcm5719-llvm-8cb4728a159408d44ce7fe734e5f1e7784217f30.zip
fix rdar://7965971 and a fixme: use ParseIdentifier in
ParseDirectiveDarwinZerofill instead of hard coding the check for identifier. This allows quoted symbol names to be used. llvm-svn: 103682
Diffstat (limited to 'llvm/lib/MC/MCParser/AsmParser.cpp')
-rw-r--r--llvm/lib/MC/MCParser/AsmParser.cpp22
1 files changed, 9 insertions, 13 deletions
diff --git a/llvm/lib/MC/MCParser/AsmParser.cpp b/llvm/lib/MC/MCParser/AsmParser.cpp
index 88e6e9a714e..d47273c1319 100644
--- a/llvm/lib/MC/MCParser/AsmParser.cpp
+++ b/llvm/lib/MC/MCParser/AsmParser.cpp
@@ -1344,22 +1344,18 @@ bool AsmParser::ParseDirectiveComm(bool IsLocal) {
/// ::= .zerofill segname , sectname [, identifier , size_expression [
/// , align_expression ]]
bool AsmParser::ParseDirectiveDarwinZerofill() {
- // FIXME: Handle quoted names here.
-
- if (Lexer.isNot(AsmToken::Identifier))
+ StringRef Segment;
+ if (ParseIdentifier(Segment))
return TokError("expected segment name after '.zerofill' directive");
- StringRef Segment = getTok().getString();
- Lex();
if (Lexer.isNot(AsmToken::Comma))
return TokError("unexpected token in directive");
Lex();
-
- if (Lexer.isNot(AsmToken::Identifier))
+
+ StringRef Section;
+ if (ParseIdentifier(Section))
return TokError("expected section name after comma in '.zerofill' "
"directive");
- StringRef Section = getTok().getString();
- Lex();
// If this is the end of the line all that was wanted was to create the
// the section but with no symbol.
@@ -1375,13 +1371,13 @@ bool AsmParser::ParseDirectiveDarwinZerofill() {
return TokError("unexpected token in directive");
Lex();
- if (Lexer.isNot(AsmToken::Identifier))
+ SMLoc IDLoc = Lexer.getLoc();
+ StringRef IDStr;
+ if (ParseIdentifier(IDStr))
return TokError("expected identifier in directive");
// handle the identifier as the key symbol.
- SMLoc IDLoc = Lexer.getLoc();
- MCSymbol *Sym = CreateSymbol(getTok().getString());
- Lex();
+ MCSymbol *Sym = CreateSymbol(IDStr);
if (Lexer.isNot(AsmToken::Comma))
return TokError("unexpected token in directive");
OpenPOWER on IntegriCloud