[AsmParser] Diagnose empty symbol for .set directive
authorWeiming Zhao <weimingz@codeaurora.org>
Thu, 1 Dec 2016 18:00:36 +0000 (18:00 +0000)
committerWeiming Zhao <weimingz@codeaurora.org>
Thu, 1 Dec 2016 18:00:36 +0000 (18:00 +0000)
Summary: Diagnose empty symbol to avoid hitting assertion in MCContext::getOrCreateSymbol

Reviewers: eli.friedman, rengolin

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D26728

llvm-svn: 288390

llvm/lib/MC/MCParser/AsmParser.cpp
llvm/test/MC/AsmParser/equ.s

index 7fe4f9e..7ebe7b5 100644 (file)
@@ -973,6 +973,9 @@ bool AsmParser::parsePrimaryExpr(const MCExpr *&Res, SMLoc &EndLoc) {
 
     // This is a symbol reference.
     StringRef SymbolName = Identifier;
+    if (SymbolName.empty())
+      return true;
+
     MCSymbolRefExpr::VariantKind Variant = MCSymbolRefExpr::VK_None;
 
     // Lookup the symbol variant if used.
index 568f58f..fc5d531 100644 (file)
@@ -5,5 +5,6 @@
 .set   a, 1
 .equ   a, 2
 .equiv a, 3
+.set  b, ""
 // CHECK: error: redefinition of 'a'
-
+// CHECK: error: missing expression in '.set' directive