diff --git a/llvm/lib/MC/MCParser/AsmParser.cpp b/llvm/lib/MC/MCParser/AsmParser.cpp
index 9a36256..50fe415 100644
--- a/llvm/lib/MC/MCParser/AsmParser.cpp
+++ b/llvm/lib/MC/MCParser/AsmParser.cpp
@@ -792,19 +792,25 @@
     EndLoc = SMLoc::getFromPointer(Identifier.end());
 
     // This is a symbol reference.
-    std::pair<StringRef, StringRef> Split = Identifier.split('@');
-    MCSymbol *Sym = getContext().GetOrCreateSymbol(Split.first);
-
-    // Lookup the symbol variant if used.
+    StringRef SymbolName = Identifier;
     MCSymbolRefExpr::VariantKind Variant = MCSymbolRefExpr::VK_None;
-    if (Split.first.size() != Identifier.size()) {
-      Variant = MCSymbolRefExpr::getVariantKindForName(Split.second);
+    std::pair<StringRef, StringRef> Split = Identifier.split('@');
+    
+    if (Split.first.size() != Identifier.size() &&
+        FirstTokenKind != AsmToken::String) {
+      SymbolName = Split.first;
+      StringRef VariantName = Split.second;
+
+      // Lookup the symbol variant.
+      Variant = MCSymbolRefExpr::getVariantKindForName(VariantName);
       if (Variant == MCSymbolRefExpr::VK_Invalid) {
         Variant = MCSymbolRefExpr::VK_None;
-        return TokError("invalid variant '" + Split.second + "'");
+        return TokError("invalid variant '" + VariantName + "'");
       }
     }
 
+    MCSymbol *Sym = getContext().GetOrCreateSymbol(SymbolName);
+
     // 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())) {
