fix asmwriting of ConstantDataArray to use the right element count,
authorChris Lattner <sabre@nondot.org>
Tue, 31 Jan 2012 03:15:40 +0000 (03:15 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 31 Jan 2012 03:15:40 +0000 (03:15 +0000)
simplify ConstantArray handling, since they can never be empty.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149341 91177308-0d34-0410-b5e6-96231b3b80d8

lib/VMCore/AsmWriter.cpp

index 4d5e7a5391136b3e0a20a98a2b18869e53184753..eb0f66196deea8a574416b220b89674c60b68239 100644 (file)
@@ -837,19 +837,17 @@ static void WriteConstantInternal(raw_ostream &Out, const Constant *CV,
       Out << '"';
     } else {                // Cannot output in string format...
       Out << '[';
-      if (CA->getNumOperands()) {
+      TypePrinter.print(ETy, Out);
+      Out << ' ';
+      WriteAsOperandInternal(Out, CA->getOperand(0),
+                             &TypePrinter, Machine,
+                             Context);
+      for (unsigned i = 1, e = CA->getNumOperands(); i != e; ++i) {
+        Out << ", ";
         TypePrinter.print(ETy, Out);
         Out << ' ';
-        WriteAsOperandInternal(Out, CA->getOperand(0),
-                               &TypePrinter, Machine,
+        WriteAsOperandInternal(Out, CA->getOperand(i), &TypePrinter, Machine,
                                Context);
-        for (unsigned i = 1, e = CA->getNumOperands(); i != e; ++i) {
-          Out << ", ";
-          TypePrinter.print(ETy, Out);
-          Out << ' ';
-          WriteAsOperandInternal(Out, CA->getOperand(i), &TypePrinter, Machine,
-                                 Context);
-        }
       }
       Out << ']';
     }
@@ -868,21 +866,19 @@ static void WriteConstantInternal(raw_ostream &Out, const Constant *CV,
 
     Type *ETy = CA->getType()->getElementType();
     Out << '[';
-    if (CA->getNumOperands()) {
+    TypePrinter.print(ETy, Out);
+    Out << ' ';
+    WriteAsOperandInternal(Out, CA->getElementAsConstant(0),
+                           &TypePrinter, Machine,
+                           Context);
+    for (unsigned i = 1, e = CA->getNumElements(); i != e; ++i) {
+      Out << ", ";
       TypePrinter.print(ETy, Out);
       Out << ' ';
-      WriteAsOperandInternal(Out, CA->getElementAsConstant(0),
-                             &TypePrinter, Machine,
-                             Context);
-      for (unsigned i = 1, e = CA->getNumOperands(); i != e; ++i) {
-        Out << ", ";
-        TypePrinter.print(ETy, Out);
-        Out << ' ';
-        WriteAsOperandInternal(Out, CA->getElementAsConstant(i), &TypePrinter,
-                               Machine, Context);
-      }
-      Out << ']';
+      WriteAsOperandInternal(Out, CA->getElementAsConstant(i), &TypePrinter,
+                             Machine, Context);
     }
+    Out << ']';
     return;
   }