[llvm-commits] [llvm] r111946 - in /llvm/trunk: lib/MC/MCParser/AsmParser.cpp test/MC/AsmParser/dollars-in-identifiers.s
Daniel Dunbar
daniel at zuster.org
Tue Aug 24 12:13:42 PDT 2010
Author: ddunbar
Date: Tue Aug 24 14:13:42 2010
New Revision: 111946
URL: http://llvm.org/viewvc/llvm-project?rev=111946&view=rev
Log:
MC/AsmParser: Change ParseExpression to use ParseIdentifier(), to support
dollars in identifiers.
Modified:
llvm/trunk/lib/MC/MCParser/AsmParser.cpp
llvm/trunk/test/MC/AsmParser/dollars-in-identifiers.s
Modified: llvm/trunk/lib/MC/MCParser/AsmParser.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCParser/AsmParser.cpp?rev=111946&r1=111945&r2=111946&view=diff
==============================================================================
--- llvm/trunk/lib/MC/MCParser/AsmParser.cpp (original)
+++ llvm/trunk/lib/MC/MCParser/AsmParser.cpp Tue Aug 24 14:13:42 2010
@@ -449,10 +449,17 @@
return true;
Res = MCUnaryExpr::CreateLNot(Res, getContext());
return false;
+ case AsmToken::Dollar:
case AsmToken::String:
case AsmToken::Identifier: {
+ EndLoc = Lexer.getLoc();
+
+ StringRef Identifier;
+ if (ParseIdentifier(Identifier))
+ return false;
+
// This is a symbol reference.
- std::pair<StringRef, StringRef> Split = getTok().getIdentifier().split('@');
+ std::pair<StringRef, StringRef> Split = Identifier.split('@');
MCSymbol *Sym = getContext().GetOrCreateSymbol(Split.first);
// Mark the symbol as used in an expression.
@@ -460,12 +467,9 @@
// Lookup the symbol variant if used.
MCSymbolRefExpr::VariantKind Variant = MCSymbolRefExpr::VK_None;
- if (Split.first.size() != getTok().getIdentifier().size())
+ if (Split.first.size() != Identifier.size())
Variant = MCSymbolRefExpr::getVariantKindForName(Split.second);
- EndLoc = Lexer.getLoc();
- Lex(); // Eat identifier.
-
// If this is an absolute variable reference, substitute it now to preserve
// semantics in the face of reassignment.
if (Sym->isVariable() && isa<MCConstantExpr>(Sym->getVariableValue())) {
Modified: llvm/trunk/test/MC/AsmParser/dollars-in-identifiers.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/AsmParser/dollars-in-identifiers.s?rev=111946&r1=111945&r2=111946&view=diff
==============================================================================
--- llvm/trunk/test/MC/AsmParser/dollars-in-identifiers.s (original)
+++ llvm/trunk/test/MC/AsmParser/dollars-in-identifiers.s Tue Aug 24 14:13:42 2010
@@ -3,3 +3,5 @@
// CHECK: .globl $foo
.globl $foo
+// CHECK: .long ($foo)
+.long ($foo)
More information about the llvm-commits
mailing list