Lines Matching refs:MemberInfo
75 // MemberInfo is a helper structure that contains information about a record
78 struct MemberInfo {
86 MemberInfo(CharUnits Offset, InfoKind Kind, llvm::Type *Data,
89 MemberInfo(CharUnits Offset, InfoKind Kind, llvm::Type *Data,
93 bool operator <(const MemberInfo& a) const { return Offset < a.Offset; }
98 /// \brief Constructs a MemberInfo instance from an offset and llvm::Type *.
99 MemberInfo StorageInfo(CharUnits Offset, llvm::Type *Data) {
100 return MemberInfo(Offset, MemberInfo::Field, Data);
190 std::vector<MemberInfo> Members;
333 Members.push_back(MemberInfo(
334 bitsToCharUnits(getFieldBitOffset(*Field)), MemberInfo::Field,
375 Members.push_back(MemberInfo(bitsToCharUnits(StartBitOffset),
376 MemberInfo::Field, nullptr, *Field));
409 Members.push_back(MemberInfo(bitsToCharUnits(StartBitOffset),
410 MemberInfo::Field, nullptr, *Run));
419 Members.push_back(MemberInfo(CharUnits::Zero(), MemberInfo::Base,
428 Members.push_back(MemberInfo(Layout.getBaseClassOffset(BaseDecl),
429 MemberInfo::Base, getStorageType(BaseDecl), BaseDecl));
435 Members.push_back(MemberInfo(CharUnits::Zero(), MemberInfo::VFPtr,
439 Members.push_back(MemberInfo(Layout.getVBPtrOffset(), MemberInfo::VBPtr,
461 Members.push_back(MemberInfo(ScissorOffset, MemberInfo::Scissor, nullptr,
472 Members.push_back(MemberInfo(Offset, MemberInfo::VBase, nullptr,
480 Members.push_back(MemberInfo(Offset, MemberInfo::VBase,
497 for (std::vector<MemberInfo>::const_iterator Member = Members.begin(),
500 if (Member->Kind == MemberInfo::Field) {
504 } else if (Member->Kind == MemberInfo::Base ||
505 Member->Kind == MemberInfo::VBase) {
509 if (Member->Kind == MemberInfo::Base)
516 std::vector<MemberInfo>::iterator Prior = Members.begin();
518 for (std::vector<MemberInfo>::iterator Member = Prior + 1,
522 if (!Member->Data && Member->Kind != MemberInfo::Scissor)
525 assert(Prior->Kind == MemberInfo::Field && !Prior->FD &&
538 for (std::vector<MemberInfo>::const_iterator Member = Members.begin(),
561 for (std::vector<MemberInfo>::const_iterator Member = Members.begin(),
585 for (std::vector<MemberInfo>::const_iterator Member = Members.begin(),
590 if (Member->Kind == MemberInfo::Field) {
596 } else if (Member->Kind == MemberInfo::Base)
598 else if (Member->Kind == MemberInfo::VBase)