diff options
author | Chris Lattner <sabre@nondot.org> | 2012-01-31 03:15:40 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2012-01-31 03:15:40 +0000 |
commit | 8b10b69ba25920d7276e01fc8647661977c653c0 (patch) | |
tree | af04c7bd3bd2098f0e2fe33036209c3e5bfee51a | |
parent | c8d75c78ec5d30db0d5b75bd8bc85dd65106868f (diff) | |
download | external_llvm-8b10b69ba25920d7276e01fc8647661977c653c0.zip external_llvm-8b10b69ba25920d7276e01fc8647661977c653c0.tar.gz external_llvm-8b10b69ba25920d7276e01fc8647661977c653c0.tar.bz2 |
fix asmwriting of ConstantDataArray to use the right element count,
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
-rw-r--r-- | lib/VMCore/AsmWriter.cpp | 40 |
1 files changed, 18 insertions, 22 deletions
diff --git a/lib/VMCore/AsmWriter.cpp b/lib/VMCore/AsmWriter.cpp index 4d5e7a5..eb0f661 100644 --- a/lib/VMCore/AsmWriter.cpp +++ b/lib/VMCore/AsmWriter.cpp @@ -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; } |