[llvm-commits] [llvm] r92334 - /llvm/trunk/lib/VMCore/AsmWriter.cpp

Chris Lattner sabre at nondot.org
Wed Dec 30 18:31:59 PST 2009


Author: lattner
Date: Wed Dec 30 20:31:59 2009
New Revision: 92334

URL: http://llvm.org/viewvc/llvm-project?rev=92334&view=rev
Log:
eliminate another copy of the mdnode printing logic, simplify the
one that remains.

Modified:
    llvm/trunk/lib/VMCore/AsmWriter.cpp

Modified: llvm/trunk/lib/VMCore/AsmWriter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/VMCore/AsmWriter.cpp?rev=92334&r1=92333&r2=92334&view=diff

==============================================================================
--- llvm/trunk/lib/VMCore/AsmWriter.cpp (original)
+++ llvm/trunk/lib/VMCore/AsmWriter.cpp Wed Dec 30 20:31:59 2009
@@ -1074,6 +1074,27 @@
   Out << "<placeholder or erroneous Constant>";
 }
 
+static void WriteMDNodeBodyInternal(raw_ostream &Out, const MDNode *Node,
+                                    TypePrinting *TypePrinter,
+                                    SlotTracker *Machine) {
+  Out << "!{";
+  for (unsigned mi = 0, me = Node->getNumOperands(); mi != me; ++mi) {
+    const Value *V = Node->getOperand(mi);
+    if (V == 0)
+      Out << "null";
+    else {
+      TypePrinter->print(V->getType(), Out);
+      Out << ' ';
+      WriteAsOperandInternal(Out, Node->getOperand(mi), 
+                             TypePrinter, Machine);
+    }
+    if (mi + 1 != me)
+      Out << ", ";
+  }
+  
+  Out << "}";
+}
+
 
 /// WriteAsOperand - Write the name of the specified value out to the specified
 /// ostream.  This can be useful when you just want to print int %reg126, not
@@ -1111,20 +1132,7 @@
   if (const MDNode *N = dyn_cast<MDNode>(V)) {
     if (N->isFunctionLocal()) {
       // Print metadata inline, not via slot reference number.
-      Out << "!{";
-      for (unsigned mi = 0, me = N->getNumOperands(); mi != me; ++mi) {
-        const Value *Val = N->getOperand(mi);
-        if (!Val)
-          Out << "null";
-        else {
-          TypePrinter->print(N->getOperand(mi)->getType(), Out);
-          Out << ' ';
-          WriteAsOperandInternal(Out, N->getOperand(mi), TypePrinter, Machine);
-        }
-        if (mi + 1 != me)
-          Out << ", ";
-      }
-      Out << '}';
+      WriteMDNodeBodyInternal(Out, N, TypePrinter, Machine);
       return;
     }
   
@@ -1999,24 +2007,7 @@
 }
 
 void AssemblyWriter::printMDNodeBody(const MDNode *Node) {
-  Out << "!{";
-  for (unsigned mi = 0, me = Node->getNumOperands(); mi != me; ++mi) {
-    const Value *V = Node->getOperand(mi);
-    if (V == 0)
-      Out << "null";
-    else if (const MDNode *N = dyn_cast<MDNode>(V)) {
-      Out << "metadata !" << Machine.getMetadataSlot(N);
-    } else {
-      TypePrinter.print(V->getType(), Out);
-      Out << ' ';
-      WriteAsOperandInternal(Out, Node->getOperand(mi), 
-                             &TypePrinter, &Machine);
-    }
-    if (mi + 1 != me)
-      Out << ", ";
-  }
-  
-  Out << "}";
+  WriteMDNodeBodyInternal(Out, Node, &TypePrinter, &Machine);
   WriteMDNodeComment(Node, Out);
   Out << "\n";
 }





More information about the llvm-commits mailing list