Requires element types in a constant initializer to match the element types of

of the constant. This reverts r6544 and r7428.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83270 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Nick Lewycky 2009-10-03 19:30:43 +00:00
parent 916ac5b069
commit b13105fbf6

View File

@ -472,9 +472,7 @@ ConstantArray::ConstantArray(const ArrayType *T,
for (std::vector<Constant*>::const_iterator I = V.begin(), E = V.end(); for (std::vector<Constant*>::const_iterator I = V.begin(), E = V.end();
I != E; ++I, ++OL) { I != E; ++I, ++OL) {
Constant *C = *I; Constant *C = *I;
assert((C->getType() == T->getElementType() || assert(C->getType() == T->getElementType() &&
(T->isAbstract() &&
C->getType()->getTypeID() == T->getElementType()->getTypeID())) &&
"Initializer for array element doesn't match array element type!"); "Initializer for array element doesn't match array element type!");
*OL = C; *OL = C;
} }
@ -545,11 +543,7 @@ ConstantStruct::ConstantStruct(const StructType *T,
for (std::vector<Constant*>::const_iterator I = V.begin(), E = V.end(); for (std::vector<Constant*>::const_iterator I = V.begin(), E = V.end();
I != E; ++I, ++OL) { I != E; ++I, ++OL) {
Constant *C = *I; Constant *C = *I;
assert((C->getType() == T->getElementType(I-V.begin()) || assert(C->getType() == T->getElementType(I-V.begin()) &&
((T->getElementType(I-V.begin())->isAbstract() ||
C->getType()->isAbstract()) &&
T->getElementType(I-V.begin())->getTypeID() ==
C->getType()->getTypeID())) &&
"Initializer for struct element doesn't match struct element type!"); "Initializer for struct element doesn't match struct element type!");
*OL = C; *OL = C;
} }
@ -594,9 +588,7 @@ ConstantVector::ConstantVector(const VectorType *T,
for (std::vector<Constant*>::const_iterator I = V.begin(), E = V.end(); for (std::vector<Constant*>::const_iterator I = V.begin(), E = V.end();
I != E; ++I, ++OL) { I != E; ++I, ++OL) {
Constant *C = *I; Constant *C = *I;
assert((C->getType() == T->getElementType() || assert(C->getType() == T->getElementType() &&
(T->isAbstract() &&
C->getType()->getTypeID() == T->getElementType()->getTypeID())) &&
"Initializer for vector element doesn't match vector element type!"); "Initializer for vector element doesn't match vector element type!");
*OL = C; *OL = C;
} }