Do not return true from isSized for things without a size (like functions and

labels) even though they are concrete.  This fixes the DSA regressions from
last night.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19807 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2005-01-24 16:00:52 +00:00
parent d23a298f28
commit 49266b2afa

View File

@ -201,7 +201,16 @@ public:
/// TargetData subsystem to do this.
///
bool isSized() const {
return !isAbstract() || ID == PointerTyID || isSizedDerivedType();
// If it's a primative, it is always sized.
if (ID >= BoolTyID && ID <= DoubleTyID || ID == PointerTyID)
return true;
// If it is not something that can have a size (e.g. a function or label),
// it doesn't have a size.
if (ID != StructTyID && ID != ArrayTyID && ID != PackedTyID)
return false;
// If it is something that can have a size and it's concrete, it definitely
// has a size, otherwise we have to try harder to decide.
return !isAbstract() || isSizedDerivedType();
}
/// getPrimitiveSize - Return the basic size of this type if it is a primitive