<div class="gmail_quote">On 28 February 2010 15:28, Erick Tryzelaar <span dir="ltr"><<a href="mailto:idadesub@users.sourceforge.net">idadesub@users.sourceforge.net</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

Nicolas Lewycky asked me to send this in. It changes the AsmWriter to grab the<br>
mdkind names from the instruction's context instead of from the module, which<br>
may or may not exist. It look good?<br></blockquote><div><br></div><div>This looks great. Please commit!</div><div><br></div><div>Nick</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">


<br>
-e<br>
<br>
---<br>
 lib/VMCore/AsmWriter.cpp |   22 ++++++++++++----------<br>
 1 files changed, 12 insertions(+), 10 deletions(-)<br>
<br>
diff --git lib/VMCore/AsmWriter.cpp lib/VMCore/AsmWriter.cpp<br>
index 361c58e..fd74241 100644<br>
--- lib/VMCore/AsmWriter.cpp<br>
+++ lib/VMCore/AsmWriter.cpp<br>
@@ -17,6 +17,7 @@<br>
 #include "llvm/Assembly/Writer.h"<br>
 #include "llvm/Assembly/PrintModulePass.h"<br>
 #include "llvm/Assembly/AsmAnnotationWriter.h"<br>
+#include "llvm/LLVMContext.h"<br>
 #include "llvm/CallingConv.h"<br>
 #include "llvm/Constants.h"<br>
 #include "llvm/DerivedTypes.h"<br>
@@ -1236,7 +1237,6 @@ class AssemblyWriter {<br>
   TypePrinting TypePrinter;<br>
   AssemblyAnnotationWriter *AnnotationWriter;<br>
   std::vector<const Type*> NumberedTypes;<br>
-  SmallVector<StringRef, 8> MDNames;<br>
<br>
 public:<br>
   inline AssemblyWriter(formatted_raw_ostream &o, SlotTracker &Mac,<br>
@@ -1244,8 +1244,6 @@ public:<br>
                         AssemblyAnnotationWriter *AAW)<br>
     : Out(o), Machine(Mac), TheModule(M), AnnotationWriter(AAW) {<br>
     AddModuleTypesToPrinter(TypePrinter, NumberedTypes, M);<br>
-    if (M)<br>
-      M->getMDKindNames(MDNames);<br>
   }<br>
<br>
   void printMDNodeBody(const MDNode *MD);<br>
@@ -1990,14 +1988,18 @@ void AssemblyWriter::printInstruction(const Instruction &I) {<br>
   // Print Metadata info.<br>
   SmallVector<std::pair<unsigned, MDNode*>, 4> InstMD;<br>
   I.getAllMetadata(InstMD);<br>
-  for (unsigned i = 0, e = InstMD.size(); i != e; ++i) {<br>
-    unsigned Kind = InstMD[i].first;<br>
-    if (Kind < MDNames.size()) {<br>
-      Out << ", !" << MDNames[Kind];<br>
-    } else {<br>
-      Out << ", !<unknown kind #" << Kind << ">";<br>
+  if (!InstMD.empty()) {<br>
+    SmallVector<StringRef, 8> MDNames;<br>
+    I.getType()->getContext().getMDKindNames(MDNames);<br>
+    for (unsigned i = 0, e = InstMD.size(); i != e; ++i) {<br>
+      unsigned Kind = InstMD[i].first;<br>
+       if (Kind < MDNames.size()) {<br>
+         Out << ", !" << MDNames[Kind];<br>
+      } else {<br>
+        Out << ", !<unknown kind #" << Kind << ">";<br>
+      }<br>
+      Out << " !" << Machine.getMetadataSlot(InstMD[i].second);<br>
     }<br>
-    Out << " !" << Machine.getMetadataSlot(InstMD[i].second);<br>
   }<br>
   printInfoComment(I);<br>
 }<br>
<font color="#888888">--<br>
1.7.0<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</font></blockquote></div><br>