From 50e7a787099b8031c3f9754c30179061eb8233b2 Mon Sep 17 00:00:00 2001
From: Roman Divacky <rdivacky@freebsd.org>
Date: Thu, 28 Oct 2010 16:22:58 +0000
Subject: [PATCH] Implement .equ directive as a synonym to .set.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117553 91177308-0d34-0410-b5e6-96231b3b80d8
---
 lib/MC/MCParser/AsmParser.cpp     | 12 ++++++------
 test/MC/AsmParser/directive_set.s |  5 +++++
 2 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/lib/MC/MCParser/AsmParser.cpp b/lib/MC/MCParser/AsmParser.cpp
index a7045c5cd59..aa0f9f0ced9 100644
--- a/lib/MC/MCParser/AsmParser.cpp
+++ b/lib/MC/MCParser/AsmParser.cpp
@@ -183,7 +183,7 @@ private:
   bool ParseDirectiveFill(); // ".fill"
   bool ParseDirectiveSpace(); // ".space"
   bool ParseDirectiveZero(); // ".zero"
-  bool ParseDirectiveSet(); // ".set"
+  bool ParseDirectiveSet(StringRef IDVal); // ".set" or ".equ"
   bool ParseDirectiveOrg(); // ".org"
   // ".align{,32}", ".p2align{,w,l}"
   bool ParseDirectiveAlign(bool IsPow2, unsigned ValueSize);
@@ -913,8 +913,8 @@ bool AsmParser::ParseStatement() {
   // Otherwise, we have a normal instruction or directive.
   if (IDVal[0] == '.') {
     // Assembler features
-    if (IDVal == ".set")
-      return ParseDirectiveSet();
+    if (IDVal == ".set" || IDVal == ".equ")
+      return ParseDirectiveSet(IDVal);
 
     // Data directives
 
@@ -1275,14 +1275,14 @@ bool AsmParser::ParseIdentifier(StringRef &Res) {
 
 /// ParseDirectiveSet:
 ///   ::= .set identifier ',' expression
-bool AsmParser::ParseDirectiveSet() {
+bool AsmParser::ParseDirectiveSet(StringRef IDVal) {
   StringRef Name;
 
   if (ParseIdentifier(Name))
-    return TokError("expected identifier after '.set' directive");
+    return TokError("expected identifier after '" + Twine(IDVal.str()) + "'");
 
   if (getLexer().isNot(AsmToken::Comma))
-    return TokError("unexpected token in '.set'");
+    return TokError("unexpected token in '" + Twine(IDVal.str()) + "'");
   Lex();
 
   return ParseAssignment(Name);
diff --git a/test/MC/AsmParser/directive_set.s b/test/MC/AsmParser/directive_set.s
index f1fc30a85df..69abce0db2f 100644
--- a/test/MC/AsmParser/directive_set.s
+++ b/test/MC/AsmParser/directive_set.s
@@ -5,3 +5,8 @@
 TEST0:  
         .set a, 0
         
+# CHECK: TEST1:
+# CHECK: a = 0
+TEST1:  
+        .equ a, 0
+