aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2009-07-31 21:55:09 +0000
committerDaniel Dunbar <daniel@zuster.org>2009-07-31 21:55:09 +0000
commit76c4d7696c1eb566d53467a76024c5fdadd448e4 (patch)
tree9268553718430fe128cdf74a169e6707d9d51d1b /tools
parent7a01e959156ba4e0a15b45a1f153f67d1646c0a5 (diff)
downloadexternal_llvm-76c4d7696c1eb566d53467a76024c5fdadd448e4.zip
external_llvm-76c4d7696c1eb566d53467a76024c5fdadd448e4.tar.gz
external_llvm-76c4d7696c1eb566d53467a76024c5fdadd448e4.tar.bz2
llvm-mc: Support quoted identifiers.
- Uses MCAsmToken::getIdentifier which returns the (sub)string representing the meaningfull contents a string or identifier token. - Directives aren't done yet. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77739 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools')
-rw-r--r--tools/llvm-mc/AsmParser.cpp12
1 files changed, 7 insertions, 5 deletions
diff --git a/tools/llvm-mc/AsmParser.cpp b/tools/llvm-mc/AsmParser.cpp
index 90a9a33..15a7f33 100644
--- a/tools/llvm-mc/AsmParser.cpp
+++ b/tools/llvm-mc/AsmParser.cpp
@@ -97,10 +97,11 @@ bool AsmParser::ParsePrimaryExpr(AsmExpr *&Res) {
return true;
Res = new AsmUnaryExpr(AsmUnaryExpr::LNot, Res);
return false;
+ case AsmToken::String:
case AsmToken::Identifier: {
// This is a label, this should be parsed as part of an expression, to
// handle things like LFOO+4.
- MCSymbol *Sym = Ctx.GetOrCreateSymbol(Lexer.getTok().getString());
+ MCSymbol *Sym = Ctx.GetOrCreateSymbol(Lexer.getTok().getIdentifier());
// If this is use of an undefined symbol then mark it external.
if (!Sym->getSection() && !Ctx.GetSymbolValue(Sym))
@@ -112,7 +113,7 @@ bool AsmParser::ParsePrimaryExpr(AsmExpr *&Res) {
}
case AsmToken::Integer:
Res = new AsmConstantExpr(Lexer.getTok().getIntVal());
- Lexer.Lex(); // Eat identifier.
+ Lexer.Lex(); // Eat token.
return false;
case AsmToken::LParen:
Lexer.Lex(); // Eat the '('.
@@ -309,6 +310,7 @@ bool AsmParser::ParseStatement() {
Lexer.Lex();
return false;
case AsmToken::Identifier:
+ case AsmToken::String:
break;
// TODO: Recurse on local labels etc.
}
@@ -316,7 +318,7 @@ bool AsmParser::ParseStatement() {
// If we have an identifier, handle it as the key symbol.
AsmToken ID = Lexer.getTok();
SMLoc IDLoc = ID.getLoc();
- StringRef IDVal = ID.getString();
+ StringRef IDVal = ID.getIdentifier();
// Consume the identifier, see what is after it.
switch (Lexer.Lex().getKind()) {
@@ -970,7 +972,7 @@ bool AsmParser::ParseDirectiveComm(bool IsLocal) {
if (Lexer.isNot(AsmToken::Identifier))
return TokError("expected identifier in directive");
- // handle the identifier as the key symbol.
+ // Handle the identifier as the key symbol.
SMLoc IDLoc = Lexer.getLoc();
MCSymbol *Sym = Ctx.GetOrCreateSymbol(Lexer.getTok().getString());
Lexer.Lex();
@@ -1172,7 +1174,7 @@ bool AsmParser::ParseDirectiveDarwinLsym() {
if (Lexer.isNot(AsmToken::Identifier))
return TokError("expected identifier in directive");
- // handle the identifier as the key symbol.
+ // Handle the identifier as the key symbol.
SMLoc IDLoc = Lexer.getLoc();
MCSymbol *Sym = Ctx.GetOrCreateSymbol(Lexer.getTok().getString());
Lexer.Lex();