Lines Matching refs:CharUnits
69 typedef llvm::DenseMap<CharUnits, ClassVectorTy> EmptyClassOffsetsMapTy;
74 CharUnits MaxEmptyClassOffset;
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 {
96 CharUnits
107 CharUnits Offset) const;
110 CharUnits Offset);
114 CharUnits Offset) const;
116 CharUnits Offset) const;
122 CharUnits SizeOfLargestEmptySubobject;
134 CharUnits Offset);
138 bool CanPlaceFieldAtOffset(const FieldDecl *FD, CharUnits Offset);
148 CharUnits EmptySize;
173 CharUnits EmptySize;
191 CharUnits Offset) const {
209 CharUnits Offset) {
229 CharUnits Offset) {
245 CharUnits BaseOffset = Offset + Layout.getBaseClassOffset(Base->Class);
267 CharUnits FieldOffset = Offset + getFieldOffset(Layout, FieldNo);
276 CharUnits Offset,
296 CharUnits BaseOffset = Offset + Layout.getBaseClassOffset(Base->Class);
315 CharUnits FieldOffset = Offset + getFieldOffset(Layout, FieldNo);
321 CharUnits Offset) {
339 CharUnits Offset) const {
359 CharUnits BaseOffset = Offset + Layout.getBaseClassOffset(BaseDecl);
371 CharUnits VBaseOffset = Offset + Layout.getVBaseClassOffset(VBaseDecl);
384 CharUnits FieldOffset = Offset + getFieldOffset(Layout, FieldNo);
395 CharUnits Offset) const {
418 CharUnits ElementOffset = Offset;
437 CharUnits Offset) {
449 CharUnits Offset) {
471 CharUnits BaseOffset = Offset + Layout.getBaseClassOffset(BaseDecl);
482 CharUnits VBaseOffset = Offset + Layout.getVBaseClassOffset(VBaseDecl);
494 CharUnits FieldOffset = Offset + getFieldOffset(Layout, FieldNo);
501 CharUnits Offset) {
520 CharUnits ElementOffset = Offset;
552 CharUnits Alignment;
555 CharUnits UnpackedAlignment;
587 CharUnits MaxFieldAlignment;
592 CharUnits NonVirtualSize;
593 CharUnits NonVirtualAlignment;
608 CharUnits VBPtrOffset;
610 typedef llvm::DenseMap<const CXXRecordDecl *, CharUnits> BaseOffsetsMapTy;
640 llvm::DenseMap<const CXXRecordDecl *, CharUnits> ExternalBaseOffsets;
643 llvm::DenseMap<const CXXRecordDecl *, CharUnits> ExternalVirtualBaseOffsets;
648 Alignment(CharUnits::One()), UnpackedAlignment(CharUnits::One()),
652 MaxFieldAlignment(CharUnits::Zero()),
653 DataSize(0), NonVirtualSize(CharUnits::Zero()),
654 NonVirtualAlignment(CharUnits::One()),
657 VBPtrOffset(CharUnits::fromQuantity(-1)),
663 void resetWithTargetAlignment(CharUnits TargetAlignment) {
720 void EnsureVTablePointerAlignment(CharUnits UnpackedBaseAlign);
730 CharUnits Offset);
750 CharUnits LayoutBase(const BaseSubobjectInfo *Base);
759 void UpdateAlignment(CharUnits NewAlignment, CharUnits UnpackedNewAlignment);
760 void UpdateAlignment(CharUnits NewAlignment) {
778 CharUnits getSize() const {
784 void setSize(CharUnits NewSize) { Size = Context.toBits(NewSize); }
787 CharUnits getAligment() const { return Alignment; }
789 CharUnits getDataSize() const {
795 void setDataSize(CharUnits NewSize) { DataSize = Context.toBits(NewSize); }
996 RecordLayoutBuilder::EnsureVTablePointerAlignment(CharUnits UnpackedBaseAlign) {
997 CharUnits BaseAlign = (Packed) ? CharUnits::One() : UnpackedBaseAlign;
1050 CharUnits PtrWidth =
1052 CharUnits PtrAlign =
1098 CharUnits PtrWidth =
1100 CharUnits PtrAlign =
1127 CharUnits Offset = LayoutBase(Base);
1138 CharUnits Offset) {
1166 CharUnits BaseOffset = Offset + Layout.getBaseClassOffset(Base->Class);
1482 CharUnits IntSize =
1483 CharUnits::fromQuantity(Context.getTargetInfo().getIntWidth() / 8);
1499 CharUnits Offset = LayoutBase(Base);
1510 CharUnits RecordLayoutBuilder::LayoutBase(const BaseSubobjectInfo *Base) {
1514 CharUnits Offset;
1519 llvm::DenseMap<const CXXRecordDecl *, CharUnits>::iterator Known;
1535 CharUnits UnpackedBaseAlign = Layout.getNonVirtualAlign();
1536 CharUnits BaseAlign = (Packed) ? CharUnits::One() : UnpackedBaseAlign;
1540 (!HasExternalLayout || Offset == CharUnits::Zero()) &&
1541 EmptySubobjects->CanPlaceBaseAtOffset(Base, CharUnits::Zero())) {
1545 return CharUnits::Zero();
1569 Alignment = CharUnits::One();
1598 MaxFieldAlignment = CharUnits::fromQuantity(DefaultMaxFieldAlignment);
1607 MaxFieldAlignment = CharUnits::fromQuantity(2);
1608 Alignment = CharUnits::fromQuantity(2);
1663 CharUnits AlignMember =
1767 CharUnits TypeAlign = Context.getTypeAlignInChars(Type);
1956 CharUnits FieldOffset =
1957 IsUnion ? CharUnits::Zero() : getDataSize();
1958 CharUnits FieldSize;
1959 CharUnits FieldAlign;
1966 FieldSize = CharUnits::Zero();
1976 std::pair<CharUnits, CharUnits> FieldInfo =
1989 CharUnits TypeSize = Context.getTypeSizeInChars(BTy);
1998 CharUnits UnpackedFieldAlign = FieldAlign;
1999 CharUnits UnpackedFieldOffset = FieldOffset;
2002 FieldAlign = CharUnits::One();
2003 CharUnits MaxAlignmentInChars =
2069 setSize(CharUnits::One());
2072 setSize(CharUnits::One());
2081 CharUnits UnpackedSize = Context.toCharUnitsFromBits(UnpackedSizeInBits);
2090 Alignment = CharUnits::One();
2125 if (Packed && UnpackedAlignment > CharUnits::One() &&
2132 void RecordLayoutBuilder::UpdateAlignment(CharUnits NewAlignment,
2133 CharUnits UnpackedNewAlignment) {
2163 Alignment = CharUnits::One();
2380 if (Builder.VBPtrOffset != CharUnits::fromQuantity(-1) &&
2393 CharUnits DataSize =
2395 CharUnits NonVirtualSize =
2539 CharUnits Offset, unsigned IndentLevel) {
2551 CharUnits Offset,
2569 bool HasVbptr = Layout.getVBPtrOffset() != CharUnits::fromQuantity(-1);
2589 CharUnits BaseOffset = Offset + Layout.getBaseClassOffset(Base);
2611 CharUnits FieldOffset = Offset +
2639 CharUnits VBaseOffset = Offset + Layout.getVBaseClassOffset(VBase);
2642 PrintOffset(OS, VBaseOffset - CharUnits::fromQuantity(4), IndentLevel);
2670 return DumpCXXRecordLayout(OS, CXXRD, *this, CharUnits(), 0, 0,