DebugTypeInfo DebugTypeInfo::getMetadata(swift::Type Ty, llvm::Type *StorageTy, Size size, Alignment align) { DebugTypeInfo DbgTy(nullptr, nullptr, Ty.getPointer(), StorageTy, size, align); assert(!DbgTy.isArchetype() && "type metadata cannot contain an archetype"); return DbgTy; }
/// Determine whether this type has a custom @_alignment attribute. static bool hasDefaultAlignment(swift::Type Ty) { if (auto CanTy = Ty->getCanonicalType()) if (auto *TyDecl = CanTy.getNominalOrBoundGenericNominal()) if (TyDecl->getAttrs().getAttribute<AlignmentAttr>()) return false; return true; }
DebugTypeInfo::DebugTypeInfo(DeclContext *DC, swift::Type Ty, llvm::Type *StorageTy, Size size, Alignment align) : DeclCtx(DC), Type(Ty.getPointer()), StorageType(StorageTy), size(size), align(align) { assert((!isArchetype() || (isArchetype() && DC)) && "archetype without a declcontext"); assert(StorageType && "StorageType is a nullptr"); assert(align.getValue() != 0); }
DebugTypeInfo::DebugTypeInfo(DeclContext *DC, GenericEnvironment *GE, swift::Type Ty, llvm::Type *StorageTy, Size size, Alignment align, bool HasDefaultAlignment) : DeclCtx(DC), GenericEnv(GE), Type(Ty.getPointer()), StorageType(StorageTy), size(size), align(align), DefaultAlignment(HasDefaultAlignment) { assert(StorageType && "StorageType is a nullptr"); assert(align.getValue() != 0); }
DebugTypeInfo DebugTypeInfo::getFromTypeInfo(DeclContext *DC, swift::Type Ty, const TypeInfo &Info) { Size size; if (Info.isFixedSize()) { const FixedTypeInfo &FixTy = *cast<const FixedTypeInfo>(&Info); size = FixTy.getFixedSize(); } else { // FIXME: Handle NonFixedTypeInfo here or assert that we won't // encounter one. size = Size(0); } return DebugTypeInfo(DC, Ty.getPointer(), Info.getStorageType(), size, Info.getBestKnownAlignment()); }
CompilerType::CompilerType (swift::ASTContext *ast_context, swift::Type qual_type) : m_type(qual_type.getPointer()), m_type_system(SwiftASTContext::GetSwiftASTContext(ast_context)) { }