Lines Matching refs:Offset
80 void AddSubobjectAtOffset(const CXXRecordDecl *RD, CharUnits Offset);
83 CharUnits Offset, bool PlacingEmptyBase);
87 CharUnits Offset);
88 void UpdateEmptyFieldSubobjects(const FieldDecl *FD, CharUnits Offset);
92 bool AnyEmptySubobjectsBeyondOffset(CharUnits Offset) const { in AnyEmptySubobjectsBeyondOffset()
93 return Offset <= MaxEmptyClassOffset; in AnyEmptySubobjectsBeyondOffset()
107 CharUnits Offset) const;
110 CharUnits Offset);
114 CharUnits Offset) const;
116 CharUnits Offset) const;
134 CharUnits Offset);
138 bool CanPlaceFieldAtOffset(const FieldDecl *FD, CharUnits Offset);
191 CharUnits Offset) const { in CanPlaceSubobjectAtOffset()
196 EmptyClassOffsetsMapTy::const_iterator I = EmptyClassOffsets.find(Offset); in CanPlaceSubobjectAtOffset()
209 CharUnits Offset) { in AddSubobjectAtOffset() argument
216 ClassVectorTy& Classes = EmptyClassOffsets[Offset]; in AddSubobjectAtOffset()
223 if (Offset > MaxEmptyClassOffset) in AddSubobjectAtOffset()
224 MaxEmptyClassOffset = Offset; in AddSubobjectAtOffset()
229 CharUnits Offset) { in CanPlaceBaseSubobjectAtOffset() argument
232 if (!AnyEmptySubobjectsBeyondOffset(Offset)) in CanPlaceBaseSubobjectAtOffset()
235 if (!CanPlaceSubobjectAtOffset(Info->Class, Offset)) in CanPlaceBaseSubobjectAtOffset()
245 CharUnits BaseOffset = Offset + Layout.getBaseClassOffset(Base->Class); in CanPlaceBaseSubobjectAtOffset()
255 if (!CanPlaceBaseSubobjectAtOffset(PrimaryVirtualBaseInfo, Offset)) in CanPlaceBaseSubobjectAtOffset()
267 CharUnits FieldOffset = Offset + getFieldOffset(Layout, FieldNo); in CanPlaceBaseSubobjectAtOffset()
276 CharUnits Offset, in UpdateEmptyBaseSubobjects() argument
278 if (!PlacingEmptyBase && Offset >= SizeOfLargestEmptySubobject) { in UpdateEmptyBaseSubobjects()
287 AddSubobjectAtOffset(Info->Class, Offset); in UpdateEmptyBaseSubobjects()
296 CharUnits BaseOffset = Offset + Layout.getBaseClassOffset(Base->Class); in UpdateEmptyBaseSubobjects()
304 UpdateEmptyBaseSubobjects(PrimaryVirtualBaseInfo, Offset, in UpdateEmptyBaseSubobjects()
315 CharUnits FieldOffset = Offset + getFieldOffset(Layout, FieldNo); in UpdateEmptyBaseSubobjects()
321 CharUnits Offset) { in CanPlaceBaseAtOffset() argument
327 if (!CanPlaceBaseSubobjectAtOffset(Info, Offset)) in CanPlaceBaseAtOffset()
332 UpdateEmptyBaseSubobjects(Info, Offset, Info->Class->isEmpty()); in CanPlaceBaseAtOffset()
339 CharUnits Offset) const { in CanPlaceFieldSubobjectAtOffset()
342 if (!AnyEmptySubobjectsBeyondOffset(Offset)) in CanPlaceFieldSubobjectAtOffset()
345 if (!CanPlaceSubobjectAtOffset(RD, Offset)) in CanPlaceFieldSubobjectAtOffset()
359 CharUnits BaseOffset = Offset + Layout.getBaseClassOffset(BaseDecl); in CanPlaceFieldSubobjectAtOffset()
371 CharUnits VBaseOffset = Offset + Layout.getVBaseClassOffset(VBaseDecl); in CanPlaceFieldSubobjectAtOffset()
384 CharUnits FieldOffset = Offset + getFieldOffset(Layout, FieldNo); in CanPlaceFieldSubobjectAtOffset()
395 CharUnits Offset) const { in CanPlaceFieldSubobjectAtOffset()
398 if (!AnyEmptySubobjectsBeyondOffset(Offset)) in CanPlaceFieldSubobjectAtOffset()
404 return CanPlaceFieldSubobjectAtOffset(RD, RD, Offset); in CanPlaceFieldSubobjectAtOffset()
418 CharUnits ElementOffset = Offset; in CanPlaceFieldSubobjectAtOffset()
437 CharUnits Offset) { in CanPlaceFieldAtOffset() argument
438 if (!CanPlaceFieldSubobjectAtOffset(FD, Offset)) in CanPlaceFieldAtOffset()
443 UpdateEmptyFieldSubobjects(FD, Offset); in CanPlaceFieldAtOffset()
449 CharUnits Offset) { in UpdateEmptyFieldSubobjects() argument
455 if (Offset >= SizeOfLargestEmptySubobject) in UpdateEmptyFieldSubobjects()
458 AddSubobjectAtOffset(RD, Offset); in UpdateEmptyFieldSubobjects()
471 CharUnits BaseOffset = Offset + Layout.getBaseClassOffset(BaseDecl); in UpdateEmptyFieldSubobjects()
482 CharUnits VBaseOffset = Offset + Layout.getVBaseClassOffset(VBaseDecl); in UpdateEmptyFieldSubobjects()
494 CharUnits FieldOffset = Offset + getFieldOffset(Layout, FieldNo); in UpdateEmptyFieldSubobjects()
501 CharUnits Offset) { in UpdateEmptyFieldSubobjects() argument
505 UpdateEmptyFieldSubobjects(RD, RD, Offset); in UpdateEmptyFieldSubobjects()
520 CharUnits ElementOffset = Offset; in UpdateEmptyFieldSubobjects()
724 CharUnits Offset);
766 void CheckFieldPadding(uint64_t Offset, uint64_t UnpaddedOffset,
1123 CharUnits Offset = LayoutBase(Base); in LayoutNonVirtualBase() local
1127 Bases.insert(std::make_pair(Base->Class, Offset)); in LayoutNonVirtualBase()
1129 AddPrimaryVirtualBaseOffsets(Base, Offset); in LayoutNonVirtualBase()
1134 CharUnits Offset) { in AddPrimaryVirtualBaseOffsets() argument
1148 ASTRecordLayout::VBaseInfo(Offset, false))); in AddPrimaryVirtualBaseOffsets()
1151 AddPrimaryVirtualBaseOffsets(Info->PrimaryVirtualBaseInfo, Offset); in AddPrimaryVirtualBaseOffsets()
1162 CharUnits BaseOffset = Offset + Layout.getBaseClassOffset(Base->Class); in AddPrimaryVirtualBaseOffsets()
1495 CharUnits Offset = LayoutBase(Base); in LayoutVirtualBase() local
1500 ASTRecordLayout::VBaseInfo(Offset, IsVtordispNeed))); in LayoutVirtualBase()
1503 AddPrimaryVirtualBaseOffsets(Base, Offset); in LayoutVirtualBase()
1510 CharUnits Offset; in LayoutBase() local
1519 Offset = Known->second; in LayoutBase()
1525 Offset = Known->second; in LayoutBase()
1533 (!HasExternalLayout || Offset == CharUnits::Zero()) && in LayoutBase()
1551 Offset = getDataSize().RoundUpToAlignment(BaseAlign); in LayoutBase()
1554 while (!EmptySubobjects->CanPlaceBaseAtOffset(Base, Offset)) in LayoutBase()
1555 Offset += BaseAlign; in LayoutBase()
1557 bool Allowed = EmptySubobjects->CanPlaceBaseAtOffset(Base, Offset); in LayoutBase()
1564 setDataSize(Offset + Layout.getNonVirtualSize()); in LayoutBase()
1568 setSize(std::max(getSize(), Offset + Layout.getSize())); in LayoutBase()
1573 return Offset; in LayoutBase()
2280 void RecordLayoutBuilder::CheckFieldPadding(uint64_t Offset, in CheckFieldPadding() argument
2299 if (!IsUnion && Offset > UnpaddedOffset) { in CheckFieldPadding()
2300 unsigned PadSize = Offset - UnpaddedOffset; in CheckFieldPadding()
2323 if (isPacked && UnpackedAlign > CharBitNum && Offset == UnpackedOffset) in CheckFieldPadding()
2557 CharUnits Offset, unsigned IndentLevel) { in PrintOffset() argument
2558 OS << llvm::format("%4" PRId64 " | ", (int64_t)Offset.getQuantity()); in PrintOffset()
2564 CharUnits Offset, in DumpCXXRecordLayout() argument
2570 PrintOffset(OS, Offset, IndentLevel); in DumpCXXRecordLayout()
2587 PrintOffset(OS, Offset, IndentLevel); in DumpCXXRecordLayout()
2602 CharUnits BaseOffset = Offset + Layout.getBaseClassOffset(Base); in DumpCXXRecordLayout()
2611 PrintOffset(OS, Offset, IndentLevel); in DumpCXXRecordLayout()
2615 PrintOffset(OS, Offset + Layout.getVBPtrOffset(), IndentLevel); in DumpCXXRecordLayout()
2624 CharUnits FieldOffset = Offset + in DumpCXXRecordLayout()
2652 CharUnits VBaseOffset = Offset + Layout.getVBaseClassOffset(VBase); in DumpCXXRecordLayout()