TypeIndex TypeTableBuilder::writeKnownType(const PointerRecord &Record) { TypeRecordBuilder Builder(Record.getKind()); Builder.writeTypeIndex(Record.getReferentType()); uint32_t flags = static_cast<uint32_t>(Record.getOptions()) | (Record.getSize() << PointerRecord::PointerSizeShift) | (static_cast<uint32_t>(Record.getMode()) << PointerRecord::PointerModeShift) | (static_cast<uint32_t>(Record.getPointerKind()) << PointerRecord::PointerKindShift); Builder.writeUInt32(flags); if (Record.isPointerToMember()) { const MemberPointerInfo &M = Record.getMemberInfo(); Builder.writeTypeIndex(M.getContainingType()); Builder.writeUInt16(static_cast<uint16_t>(M.getRepresentation())); } return writeRecord(Builder); }