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 | 9c181f660c60e1af8b1fd6e8a31444d5874491fb (patch) | |
| tree | 4dd55f2a1a8ff388ff1d215dd5405a0e4c181ee4 /llvm | |
| parent | fe741769ddae40cff6867110c7d8b6e97bb3a96b (diff) | |
| download | bcm5719-llvm-9c181f660c60e1af8b1fd6e8a31444d5874491fb.tar.gz bcm5719-llvm-9c181f660c60e1af8b1fd6e8a31444d5874491fb.zip | |
fix asmwriting of ConstantDataArray to use the right element count,
simplify ConstantArray handling, since they can never be empty.
llvm-svn: 149341
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/lib/VMCore/AsmWriter.cpp | 40 |
1 files changed, 18 insertions, 22 deletions
diff --git a/llvm/lib/VMCore/AsmWriter.cpp b/llvm/lib/VMCore/AsmWriter.cpp index 4d5e7a53911..eb0f66196de 100644 --- a/llvm/lib/VMCore/AsmWriter.cpp +++ b/llvm/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; } |

