DebugTypeInfo DebugTypeInfo::getGlobal(SILGlobalVariable *GV, llvm::Type *StorageTy, Size size, Alignment align) { // Prefer the original, potentially sugared version of the type if // the type hasn't been mucked with by an optimization pass. auto LowTy = GV->getLoweredType().getSwiftRValueType(); auto *Type = LowTy.getPointer(); if (auto *Decl = GV->getDecl()) { auto DeclType = (Decl->hasType() ? Decl->getType() : Decl->getDeclContext()->mapTypeIntoContext( Decl->getInterfaceType())); if (DeclType->isEqual(LowTy)) Type = DeclType.getPointer(); } DebugTypeInfo DbgTy = {nullptr, Type, StorageTy, size, align}; assert(StorageTy && "StorageType is a nullptr"); assert(!DbgTy.isArchetype() && "type of a global var cannot contain an archetype"); assert(align.getValue() != 0); return DbgTy; }
bool DebugTypeInfo::operator==(DebugTypeInfo T) const { return typesEqual(getType(), T.getType()) && size == T.size && align == T.align; }
DebugTypeInfo DebugTypeInfo::getMetadata(swift::Type Ty, llvm::Type *StorageTy, Size size, Alignment align) { DebugTypeInfo DbgTy = {nullptr, Ty.getPointer(), StorageTy, size, align}; assert(!DbgTy.isArchetype() && "type metadata cannot contain an archetype"); return DbgTy; }
bool DebugTypeInfo::operator==(DebugTypeInfo T) const { return (getType() == T.getType() && size == T.size && align == T.align); }