[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