[llvm] r326804 - [ARM][Asm] Fix layering violation introduced by r326795

Oliver Stannard via llvm-commits llvm-commits at lists.llvm.org
Tue Mar 6 07:32:34 PST 2018


Author: olista01
Date: Tue Mar  6 07:32:34 2018
New Revision: 326804

URL: http://llvm.org/viewvc/llvm-project?rev=326804&view=rev
Log:
[ARM][Asm] Fix layering violation introduced by r326795

The MCAsmMacro::dump function is in the MCParser library, so can't be called
from the MC library.


Modified:
    llvm/trunk/include/llvm/MC/MCContext.h
    llvm/trunk/lib/MC/MCParser/AsmParser.cpp

Modified: llvm/trunk/include/llvm/MC/MCContext.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/MC/MCContext.h?rev=326804&r1=326803&r2=326804&view=diff
==============================================================================
--- llvm/trunk/include/llvm/MC/MCContext.h (original)
+++ llvm/trunk/include/llvm/MC/MCContext.h Tue Mar  6 07:32:34 2018
@@ -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

Modified: llvm/trunk/lib/MC/MCParser/AsmParser.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCParser/AsmParser.cpp?rev=326804&r1=326803&r2=326804&view=diff
==============================================================================
--- llvm/trunk/lib/MC/MCParser/AsmParser.cpp (original)
+++ llvm/trunk/lib/MC/MCParser/AsmParser.cpp Tue Mar  6 07:32:34 2018
@@ -4257,7 +4257,10 @@ bool AsmParser::parseDirectiveMacro(SMLo
   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
     return Error(DirectiveLoc, "macro '" + Name + "' is not defined");
 
   getContext().undefineMacro(Name);
+  DEBUG_WITH_TYPE("asm-macros", dbgs()
+                                    << "Un-defining macro: " << Name << "\n");
   return false;
 }
 




More information about the llvm-commits mailing list