No need to rescan types when they are created.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8339 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2003-09-03 14:44:53 +00:00
parent 43c2eb7def
commit a3ad5b21e8

View File

@ -343,35 +343,42 @@ FunctionType::FunctionType(const Type *Result,
bool IsVarArgs) : DerivedType(FunctionTyID),
ResultType(PATypeHandle(Result, this)),
isVarArgs(IsVarArgs) {
bool isAbstract = Result->isAbstract();
ParamTys.reserve(Params.size());
for (unsigned i = 0; i < Params.size(); ++i)
for (unsigned i = 0; i < Params.size(); ++i) {
ParamTys.push_back(PATypeHandle(Params[i], this));
isAbstract |= Params[i]->isAbstract();
}
setAbstract(true);
setDerivedTypeProperties();
// Calculate whether or not this type is abstract
setAbstract(isAbstract);
}
StructType::StructType(const std::vector<const Type*> &Types)
: CompositeType(StructTyID) {
ETypes.reserve(Types.size());
bool isAbstract = false;
for (unsigned i = 0; i < Types.size(); ++i) {
assert(Types[i] != Type::VoidTy && "Void type in method prototype!!");
ETypes.push_back(PATypeHandle(Types[i], this));
isAbstract |= Types[i]->isAbstract();
}
setAbstract(true);
setDerivedTypeProperties();
// Calculate whether or not this type is abstract
setAbstract(isAbstract);
}
ArrayType::ArrayType(const Type *ElType, unsigned NumEl)
: SequentialType(ArrayTyID, ElType) {
NumElements = NumEl;
setAbstract(true);
setDerivedTypeProperties();
// Calculate whether or not this type is abstract
setAbstract(ElType->isAbstract());
}
PointerType::PointerType(const Type *E) : SequentialType(PointerTyID, E) {
setAbstract(true);
setDerivedTypeProperties();
// Calculate whether or not this type is abstract
setAbstract(E->isAbstract());
}
OpaqueType::OpaqueType() : DerivedType(OpaqueTyID) {