Lines Matching refs:CharUnits
73 llvm::DenseMap<const CXXRecordDecl *, CharUnits> BaseOffsets;
76 llvm::DenseMap<const CXXRecordDecl *, CharUnits> VirtualBaseOffsets;
86 bool getExternalNVBaseOffset(const CXXRecordDecl *RD, CharUnits &BaseOffset) { in getExternalNVBaseOffset()
94 bool getExternalVBaseOffset(const CXXRecordDecl *RD, CharUnits &BaseOffset) { in getExternalVBaseOffset()
114 typedef llvm::DenseMap<CharUnits, ClassVectorTy> EmptyClassOffsetsMapTy;
119 CharUnits MaxEmptyClassOffset;
125 void AddSubobjectAtOffset(const CXXRecordDecl *RD, CharUnits Offset);
128 CharUnits Offset, bool PlacingEmptyBase);
132 CharUnits Offset);
133 void UpdateEmptyFieldSubobjects(const FieldDecl *FD, CharUnits Offset);
137 bool AnyEmptySubobjectsBeyondOffset(CharUnits Offset) const { in AnyEmptySubobjectsBeyondOffset()
141 CharUnits
152 CharUnits Offset) const;
155 CharUnits Offset);
159 CharUnits Offset) const;
161 CharUnits Offset) const;
167 CharUnits SizeOfLargestEmptySubobject;
179 CharUnits Offset);
183 bool CanPlaceFieldAtOffset(const FieldDecl *FD, CharUnits Offset);
191 CharUnits EmptySize; in ComputeEmptySubobjectSizes()
214 CharUnits EmptySize; in ComputeEmptySubobjectSizes()
232 CharUnits Offset) const { in CanPlaceSubobjectAtOffset()
250 CharUnits Offset) { in AddSubobjectAtOffset()
270 CharUnits Offset) { in CanPlaceBaseSubobjectAtOffset()
285 CharUnits BaseOffset = Offset + Layout.getBaseClassOffset(Base->Class); in CanPlaceBaseSubobjectAtOffset()
307 CharUnits FieldOffset = Offset + getFieldOffset(Layout, FieldNo); in CanPlaceBaseSubobjectAtOffset()
316 CharUnits Offset, in UpdateEmptyBaseSubobjects()
335 CharUnits BaseOffset = Offset + Layout.getBaseClassOffset(Base->Class); in UpdateEmptyBaseSubobjects()
354 CharUnits FieldOffset = Offset + getFieldOffset(Layout, FieldNo); in UpdateEmptyBaseSubobjects()
360 CharUnits Offset) { in CanPlaceBaseAtOffset()
378 CharUnits Offset) const { in CanPlaceFieldSubobjectAtOffset()
396 CharUnits BaseOffset = Offset + Layout.getBaseClassOffset(BaseDecl); in CanPlaceFieldSubobjectAtOffset()
406 CharUnits VBaseOffset = Offset + Layout.getVBaseClassOffset(VBaseDecl); in CanPlaceFieldSubobjectAtOffset()
419 CharUnits FieldOffset = Offset + getFieldOffset(Layout, FieldNo); in CanPlaceFieldSubobjectAtOffset()
430 CharUnits Offset) const { in CanPlaceFieldSubobjectAtOffset()
451 CharUnits ElementOffset = Offset; in CanPlaceFieldSubobjectAtOffset()
470 CharUnits Offset) { in CanPlaceFieldAtOffset()
482 CharUnits Offset) { in UpdateEmptyFieldSubobjects()
502 CharUnits BaseOffset = Offset + Layout.getBaseClassOffset(BaseDecl); in UpdateEmptyFieldSubobjects()
511 CharUnits VBaseOffset = Offset + Layout.getVBaseClassOffset(VBaseDecl); in UpdateEmptyFieldSubobjects()
523 CharUnits FieldOffset = Offset + getFieldOffset(Layout, FieldNo); in UpdateEmptyFieldSubobjects()
530 CharUnits Offset) { in UpdateEmptyFieldSubobjects()
548 CharUnits ElementOffset = Offset; in UpdateEmptyFieldSubobjects()
580 CharUnits Alignment;
583 CharUnits UnpackedAlignment;
615 CharUnits MaxFieldAlignment;
620 CharUnits NonVirtualSize;
621 CharUnits NonVirtualAlignment;
635 typedef llvm::DenseMap<const CXXRecordDecl *, CharUnits> BaseOffsetsMapTy;
661 Alignment(CharUnits::One()), UnpackedAlignment(CharUnits::One()), in ItaniumRecordLayoutBuilder()
665 MaxFieldAlignment(CharUnits::Zero()), DataSize(0), in ItaniumRecordLayoutBuilder()
666 NonVirtualSize(CharUnits::Zero()), in ItaniumRecordLayoutBuilder()
667 NonVirtualAlignment(CharUnits::One()), PrimaryBase(nullptr), in ItaniumRecordLayoutBuilder()
714 void EnsureVTablePointerAlignment(CharUnits UnpackedBaseAlign);
724 CharUnits Offset);
735 CharUnits LayoutBase(const BaseSubobjectInfo *Base);
744 void UpdateAlignment(CharUnits NewAlignment, CharUnits UnpackedNewAlignment);
745 void UpdateAlignment(CharUnits NewAlignment) { in UpdateAlignment()
763 CharUnits getSize() const { in getSize()
769 void setSize(CharUnits NewSize) { Size = Context.toBits(NewSize); } in setSize()
772 CharUnits getAligment() const { return Alignment; } in getAligment()
774 CharUnits getDataSize() const { in getDataSize()
780 void setDataSize(CharUnits NewSize) { DataSize = Context.toBits(NewSize); } in setDataSize()
966 CharUnits UnpackedBaseAlign) { in EnsureVTablePointerAlignment()
967 CharUnits BaseAlign = (Packed) ? CharUnits::One() : UnpackedBaseAlign; in EnsureVTablePointerAlignment()
1020 CharUnits PtrWidth = in LayoutNonVirtualBases()
1022 CharUnits PtrAlign = in LayoutNonVirtualBases()
1056 CharUnits Offset = LayoutBase(Base); in LayoutNonVirtualBase()
1066 const BaseSubobjectInfo *Info, CharUnits Offset) { in AddPrimaryVirtualBaseOffsets()
1093 CharUnits BaseOffset = Offset + Layout.getBaseClassOffset(Base->Class); in AddPrimaryVirtualBaseOffsets()
1149 CharUnits Offset = LayoutBase(Base); in LayoutVirtualBase()
1159 CharUnits
1164 CharUnits Offset; in LayoutBase()
1169 llvm::DenseMap<const CXXRecordDecl *, CharUnits>::iterator Known; in LayoutBase()
1176 CharUnits UnpackedBaseAlign = Layout.getNonVirtualAlignment(); in LayoutBase()
1177 CharUnits BaseAlign = (Packed) ? CharUnits::One() : UnpackedBaseAlign; in LayoutBase()
1181 (!HasExternalLayout || Offset == CharUnits::Zero()) && in LayoutBase()
1182 EmptySubobjects->CanPlaceBaseAtOffset(Base, CharUnits::Zero())) { in LayoutBase()
1186 return CharUnits::Zero(); in LayoutBase()
1210 Alignment = CharUnits::One(); in LayoutBase()
1239 MaxFieldAlignment = CharUnits::fromQuantity(DefaultMaxFieldAlignment); in InitializeLayout()
1248 MaxFieldAlignment = CharUnits::fromQuantity(2); in InitializeLayout()
1249 Alignment = CharUnits::fromQuantity(2); in InitializeLayout()
1397 CharUnits TypeAlign = Context.getTypeAlignInChars(Type); in LayoutWideBitField()
1703 CharUnits FieldOffset = in LayoutField()
1704 IsUnion ? CharUnits::Zero() : getDataSize(); in LayoutField()
1705 CharUnits FieldSize; in LayoutField()
1706 CharUnits FieldAlign; in LayoutField()
1713 FieldSize = CharUnits::Zero(); in LayoutField()
1723 std::pair<CharUnits, CharUnits> FieldInfo = in LayoutField()
1736 CharUnits TypeSize = Context.getTypeSizeInChars(BTy); in LayoutField()
1745 CharUnits UnpackedFieldAlign = FieldAlign; in LayoutField()
1746 CharUnits UnpackedFieldOffset = FieldOffset; in LayoutField()
1749 FieldAlign = CharUnits::One(); in LayoutField()
1750 CharUnits MaxAlignmentInChars = in LayoutField()
1795 CharUnits ASanAlignment = CharUnits::fromQuantity(8); in LayoutField()
1796 CharUnits ExtraSizeForAsan = ASanAlignment; in LayoutField()
1799 ASanAlignment - CharUnits::fromQuantity(FieldSize % ASanAlignment); in LayoutField()
1825 setSize(CharUnits::One()); in FinishLayout()
1828 setSize(CharUnits::One()); in FinishLayout()
1837 CharUnits UnpackedSize = Context.toCharUnitsFromBits(UnpackedSizeInBits); in FinishLayout()
1846 Alignment = CharUnits::One(); in FinishLayout()
1874 if (Packed && UnpackedAlignment > CharUnits::One() && in FinishLayout()
1882 CharUnits NewAlignment, CharUnits UnpackedNewAlignment) { in UpdateAlignment()
1909 Alignment = CharUnits::One(); in updateExternalFieldOffset()
2200 CharUnits Size;
2201 CharUnits Alignment;
2203 typedef llvm::DenseMap<const CXXRecordDecl *, CharUnits> BaseOffsetsMapTy;
2241 void placeFieldAtOffset(CharUnits FieldOffset) { in placeFieldAtOffset()
2254 CharUnits Size;
2256 CharUnits NonVirtualSize;
2258 CharUnits DataSize;
2260 CharUnits Alignment;
2262 CharUnits MaxFieldAlignment;
2265 CharUnits RequiredAlignment;
2269 CharUnits CurrentBitfieldSize;
2271 CharUnits VBPtrOffset;
2273 CharUnits MinEmptyStructSize;
2344 CharUnits FieldRequiredAlignment = in getAdjustedElementInfo()
2370 Info.Alignment = CharUnits::One(); in getAdjustedElementInfo()
2377 MinEmptyStructSize = CharUnits::fromQuantity(4); in layout()
2388 MinEmptyStructSize = CharUnits::One(); in cxxLayout()
2409 Size = CharUnits::Zero(); in initializeLayout()
2410 Alignment = CharUnits::One(); in initializeLayout()
2415 ? CharUnits::One() in initializeLayout()
2416 : CharUnits::Zero(); in initializeLayout()
2418 MaxFieldAlignment = CharUnits::Zero(); in initializeLayout()
2421 MaxFieldAlignment = CharUnits::fromQuantity(DefaultMaxFieldAlignment); in initializeLayout()
2431 MaxFieldAlignment = CharUnits::One(); in initializeLayout()
2526 VBPtrOffset = CharUnits::fromQuantity(-1); in layoutNonVirtualBases()
2544 CharUnits BaseOffset; in layoutNonVirtualBase()
2576 placeFieldAtOffset(CharUnits::Zero()); in layoutField()
2579 CharUnits FieldOffset; in layoutField()
2615 placeFieldAtOffset(CharUnits::Zero()); in layoutBitField()
2620 CharUnits FieldOffset = Size.RoundUpToAlignment(Info.Alignment); in layoutBitField()
2633 placeFieldAtOffset(IsUnion ? CharUnits::Zero() : Size); in layoutZeroWidthBitField()
2641 placeFieldAtOffset(CharUnits::Zero()); in layoutZeroWidthBitField()
2646 CharUnits FieldOffset = Size.RoundUpToAlignment(Info.Alignment); in layoutZeroWidthBitField()
2657 CharUnits InjectionSite = VBPtrOffset; in injectVBPtr()
2665 CharUnits FieldStart = VBPtrOffset + PointerInfo.Size; in injectVBPtr()
2668 CharUnits Offset = (FieldStart - InjectionSite).RoundUpToAlignment( in injectVBPtr()
2683 CharUnits Offset = PointerInfo.Size.RoundUpToAlignment( in injectVFPtr()
2707 CharUnits VtorDispSize = CharUnits::fromQuantity(4); in layoutVirtualBases()
2708 CharUnits VtorDispAlignment = VtorDispSize; in layoutVirtualBases()
2743 CharUnits BaseOffset; in layoutVirtualBases()
2911 Builder.NonVirtualSize, Builder.Alignment, CharUnits::Zero(), in getASTRecordLayout()
2935 CharUnits DataSize = in getASTRecordLayout()
2937 CharUnits NonVirtualSize = in getASTRecordLayout()
2943 CharUnits::fromQuantity(-1), DataSize, Builder.FieldOffsets.data(), in getASTRecordLayout()
3086 CharUnits Offset, unsigned IndentLevel) { in PrintOffset()
3091 static void PrintBitFieldOffset(raw_ostream &OS, CharUnits Offset, in PrintBitFieldOffset()
3116 CharUnits Offset, in DumpRecordLayout()
3167 CharUnits BaseOffset = Offset + Layout.getBaseClassOffset(Base); in DumpRecordLayout()
3187 CharUnits FieldOffset = in DumpRecordLayout()
3219 CharUnits VBaseOffset = Offset + Layout.getVBaseClassOffset(VBase); in DumpRecordLayout()
3222 PrintOffset(OS, VBaseOffset - CharUnits::fromQuantity(4), IndentLevel); in DumpRecordLayout()
3255 ::DumpRecordLayout(OS, RD, *this, CharUnits(), 0, nullptr, in DumpRecordLayout()