Add support for the new ConstantAggregateZero class

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11473 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2004-02-15 05:54:27 +00:00
parent dd2c82a427
commit cfb0fd2ce8
2 changed files with 78 additions and 22 deletions

View File

@ -475,22 +475,50 @@ void CWriter::printConstant(Constant *CPV) {
} }
case Type::ArrayTyID: case Type::ArrayTyID:
printConstantArray(cast<ConstantArray>(CPV)); if (isa<ConstantAggregateZero>(CPV)) {
const ArrayType *AT = cast<ArrayType>(CPV->getType());
Out << "{";
if (AT->getNumElements()) {
Out << " ";
Constant *CZ = Constant::getNullValue(AT->getElementType());
printConstant(CZ);
for (unsigned i = 1, e = AT->getNumElements(); i != e; ++i) {
Out << ", ";
printConstant(CZ);
}
}
Out << " }";
} else {
printConstantArray(cast<ConstantArray>(CPV));
}
break; break;
case Type::StructTyID: { case Type::StructTyID:
Out << "{"; if (isa<ConstantAggregateZero>(CPV)) {
if (CPV->getNumOperands()) { const StructType *ST = cast<StructType>(CPV->getType());
Out << " "; Out << "{";
printConstant(cast<Constant>(CPV->getOperand(0))); if (ST->getNumElements()) {
for (unsigned i = 1, e = CPV->getNumOperands(); i != e; ++i) { Out << " ";
Out << ", "; printConstant(Constant::getNullValue(ST->getElementType(0)));
printConstant(cast<Constant>(CPV->getOperand(i))); for (unsigned i = 1, e = ST->getNumElements(); i != e; ++i) {
Out << ", ";
printConstant(Constant::getNullValue(ST->getElementType(i)));
}
} }
Out << " }";
} else {
Out << "{";
if (CPV->getNumOperands()) {
Out << " ";
printConstant(cast<Constant>(CPV->getOperand(0)));
for (unsigned i = 1, e = CPV->getNumOperands(); i != e; ++i) {
Out << ", ";
printConstant(cast<Constant>(CPV->getOperand(i)));
}
}
Out << " }";
} }
Out << " }";
break; break;
}
case Type::PointerTyID: case Type::PointerTyID:
if (isa<ConstantPointerNull>(CPV)) { if (isa<ConstantPointerNull>(CPV)) {

View File

@ -475,22 +475,50 @@ void CWriter::printConstant(Constant *CPV) {
} }
case Type::ArrayTyID: case Type::ArrayTyID:
printConstantArray(cast<ConstantArray>(CPV)); if (isa<ConstantAggregateZero>(CPV)) {
const ArrayType *AT = cast<ArrayType>(CPV->getType());
Out << "{";
if (AT->getNumElements()) {
Out << " ";
Constant *CZ = Constant::getNullValue(AT->getElementType());
printConstant(CZ);
for (unsigned i = 1, e = AT->getNumElements(); i != e; ++i) {
Out << ", ";
printConstant(CZ);
}
}
Out << " }";
} else {
printConstantArray(cast<ConstantArray>(CPV));
}
break; break;
case Type::StructTyID: { case Type::StructTyID:
Out << "{"; if (isa<ConstantAggregateZero>(CPV)) {
if (CPV->getNumOperands()) { const StructType *ST = cast<StructType>(CPV->getType());
Out << " "; Out << "{";
printConstant(cast<Constant>(CPV->getOperand(0))); if (ST->getNumElements()) {
for (unsigned i = 1, e = CPV->getNumOperands(); i != e; ++i) { Out << " ";
Out << ", "; printConstant(Constant::getNullValue(ST->getElementType(0)));
printConstant(cast<Constant>(CPV->getOperand(i))); for (unsigned i = 1, e = ST->getNumElements(); i != e; ++i) {
Out << ", ";
printConstant(Constant::getNullValue(ST->getElementType(i)));
}
} }
Out << " }";
} else {
Out << "{";
if (CPV->getNumOperands()) {
Out << " ";
printConstant(cast<Constant>(CPV->getOperand(0)));
for (unsigned i = 1, e = CPV->getNumOperands(); i != e; ++i) {
Out << ", ";
printConstant(cast<Constant>(CPV->getOperand(i)));
}
}
Out << " }";
} }
Out << " }";
break; break;
}
case Type::PointerTyID: case Type::PointerTyID:
if (isa<ConstantPointerNull>(CPV)) { if (isa<ConstantPointerNull>(CPV)) {