[ARM][Asm] Fix layering violation introduced by r326795
authorOliver Stannard <oliver.stannard@arm.com>
Tue, 6 Mar 2018 15:32:34 +0000 (15:32 +0000)
committerOliver Stannard <oliver.stannard@arm.com>
Tue, 6 Mar 2018 15:32:34 +0000 (15:32 +0000)
The MCAsmMacro::dump function is in the MCParser library, so can't be called
from the MC library.

llvm-svn: 326804

llvm/include/llvm/MC/MCContext.h
llvm/lib/MC/MCParser/AsmParser.cpp

index 3f45301..c4abef1 100644 (file)
@@ -634,17 +634,10 @@ namespace llvm {
     }
 
     void defineMacro(StringRef Name, MCAsmMacro Macro) {
-      DEBUG_WITH_TYPE("asm-macros", dbgs() << "Defining new macro:\n";
-                      Macro.dump());
       MacroMap.insert(std::make_pair(Name, std::move(Macro)));
     }
 
-    void undefineMacro(StringRef Name) {
-      if (MacroMap.erase(Name)) {
-        DEBUG_WITH_TYPE("asm-macros",
-                        dbgs() << "Un-defining macro: " << Name << "\n");
-      }
-    }
+    void undefineMacro(StringRef Name) { MacroMap.erase(Name); }
   };
 
 } // end namespace llvm
index 76eef5e..54a7673 100644 (file)
@@ -4257,7 +4257,10 @@ bool AsmParser::parseDirectiveMacro(SMLoc DirectiveLoc) {
   const char *BodyEnd = EndToken.getLoc().getPointer();
   StringRef Body = StringRef(BodyStart, BodyEnd - BodyStart);
   checkForBadMacro(DirectiveLoc, Name, Body, Parameters);
-  getContext().defineMacro(Name, MCAsmMacro(Name, Body, std::move(Parameters)));
+  MCAsmMacro Macro(Name, Body, std::move(Parameters));
+  DEBUG_WITH_TYPE("asm-macros", dbgs() << "Defining new macro:\n";
+                  Macro.dump());
+  getContext().defineMacro(Name, std::move(Macro));
   return false;
 }
 
@@ -4420,6 +4423,8 @@ bool AsmParser::parseDirectivePurgeMacro(SMLoc DirectiveLoc) {
     return Error(DirectiveLoc, "macro '" + Name + "' is not defined");
 
   getContext().undefineMacro(Name);
+  DEBUG_WITH_TYPE("asm-macros", dbgs()
+                                    << "Un-defining macro: " << Name << "\n");
   return false;
 }