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) {
94 bool getExternalVBaseOffset(const CXXRecordDecl *RD, CharUnits &BaseOffset) {
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 {
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;
214 CharUnits EmptySize;
232 CharUnits Offset) const {
250 CharUnits Offset) {
270 CharUnits Offset) {
285 CharUnits BaseOffset = Offset + Layout.getBaseClassOffset(Base->Class);
307 CharUnits FieldOffset = Offset + getFieldOffset(Layout, FieldNo);
316 CharUnits Offset,
335 CharUnits BaseOffset = Offset + Layout.getBaseClassOffset(Base->Class);
354 CharUnits FieldOffset = Offset + getFieldOffset(Layout, FieldNo);
360 CharUnits Offset) {
378 CharUnits Offset) const {
396 CharUnits BaseOffset = Offset + Layout.getBaseClassOffset(BaseDecl);
406 CharUnits VBaseOffset = Offset + Layout.getVBaseClassOffset(VBaseDecl);
419 CharUnits FieldOffset = Offset + getFieldOffset(Layout, FieldNo);
430 CharUnits Offset) const {
451 CharUnits ElementOffset = Offset;
470 CharUnits Offset) {
482 CharUnits Offset) {
502 CharUnits BaseOffset = Offset + Layout.getBaseClassOffset(BaseDecl);
511 CharUnits VBaseOffset = Offset + Layout.getVBaseClassOffset(VBaseDecl);
523 CharUnits FieldOffset = Offset + getFieldOffset(Layout, FieldNo);
530 CharUnits Offset) {
548 CharUnits ElementOffset = Offset;
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()),
665 MaxFieldAlignment(CharUnits::Zero()), DataSize(0),
666 NonVirtualSize(CharUnits::Zero()),
667 NonVirtualAlignment(CharUnits::One()), PrimaryBase(nullptr),
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) {
763 CharUnits getSize() const {
769 void setSize(CharUnits NewSize) { Size = Context.toBits(NewSize); }
772 CharUnits getAligment() const { return Alignment; }
774 CharUnits getDataSize() const {
780 void setDataSize(CharUnits NewSize) { DataSize = Context.toBits(NewSize); }
966 CharUnits UnpackedBaseAlign) {
967 CharUnits BaseAlign = (Packed) ? CharUnits::One() : UnpackedBaseAlign;
1020 CharUnits PtrWidth =
1022 CharUnits PtrAlign =
1056 CharUnits Offset = LayoutBase(Base);
1066 const BaseSubobjectInfo *Info, CharUnits Offset) {
1093 CharUnits BaseOffset = Offset + Layout.getBaseClassOffset(Base->Class);
1149 CharUnits Offset = LayoutBase(Base);
1159 CharUnits
1164 CharUnits Offset;
1169 llvm::DenseMap<const CXXRecordDecl *, CharUnits>::iterator Known;
1176 CharUnits UnpackedBaseAlign = Layout.getNonVirtualAlignment();
1177 CharUnits BaseAlign = (Packed) ? CharUnits::One() : UnpackedBaseAlign;
1181 (!HasExternalLayout || Offset == CharUnits::Zero()) &&
1182 EmptySubobjects->CanPlaceBaseAtOffset(Base, CharUnits::Zero())) {
1186 return CharUnits::Zero();
1210 Alignment = CharUnits::One();
1239 MaxFieldAlignment = CharUnits::fromQuantity(DefaultMaxFieldAlignment);
1248 MaxFieldAlignment = CharUnits::fromQuantity(2);
1249 Alignment = CharUnits::fromQuantity(2);
1397 CharUnits
1703 CharUnits FieldOffset =
1704 IsUnion ? CharUnits::Zero() : getDataSize();
1705 CharUnits FieldSize;
1706 CharUnits FieldAlign;
1713 FieldSize = CharUnits::Zero();
1723 std::pair<CharUnits, CharUnits> FieldInfo =
1736 CharUnits TypeSize = Context.getTypeSizeInChars(BTy);
1745 CharUnits UnpackedFieldAlign = FieldAlign;
1746 CharUnits UnpackedFieldOffset = FieldOffset;
1749 FieldAlign = CharUnits::One();
1750 CharUnits MaxAlignmentInChars =
1795 CharUnits ASanAlignment = CharUnits::fromQuantity(8);
1796 CharUnits ExtraSizeForAsan = ASanAlignment;
1799 ASanAlignment - CharUnits::fromQuantity(FieldSize % ASanAlignment);
1825 setSize(CharUnits::One());
1828 setSize(CharUnits::One());
1837 CharUnits UnpackedSize = Context.toCharUnitsFromBits(UnpackedSizeInBits);
1846 Alignment = CharUnits::One();
1874 if (Packed && UnpackedAlignment > CharUnits::One() &&
1882 CharUnits NewAlignment, CharUnits UnpackedNewAlignment) {
1909 Alignment = CharUnits::One();
2200 CharUnits Size;
2201 CharUnits Alignment;
2203 typedef llvm::DenseMap<const CXXRecordDecl *, CharUnits> BaseOffsetsMapTy;
2240 /// \brief Places a field at an offset in CharUnits.
2241 void placeFieldAtOffset(CharUnits FieldOffset) {
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 =
2370 Info.Alignment = CharUnits::One();
2377 MinEmptyStructSize = CharUnits::fromQuantity(4);
2388 MinEmptyStructSize = CharUnits::One();
2409 Size = CharUnits::Zero();
2410 Alignment = CharUnits::One();
2415 ? CharUnits::One()
2416 : CharUnits::Zero();
2418 MaxFieldAlignment = CharUnits::Zero();
2421 MaxFieldAlignment = CharUnits::fromQuantity(DefaultMaxFieldAlignment);
2431 MaxFieldAlignment = CharUnits::One();
2526 VBPtrOffset = CharUnits::fromQuantity(-1);
2544 CharUnits BaseOffset;
2576 placeFieldAtOffset(CharUnits::Zero());
2579 CharUnits FieldOffset;
2615 placeFieldAtOffset(CharUnits::Zero());
2620 CharUnits FieldOffset = Size.RoundUpToAlignment(Info.Alignment);
2633 placeFieldAtOffset(IsUnion ? CharUnits::Zero() : Size);
2641 placeFieldAtOffset(CharUnits::Zero());
2646 CharUnits FieldOffset = Size.RoundUpToAlignment(Info.Alignment);
2657 CharUnits InjectionSite = VBPtrOffset;
2665 CharUnits FieldStart = VBPtrOffset + PointerInfo.Size;
2668 CharUnits Offset = (FieldStart - InjectionSite).RoundUpToAlignment(
2683 CharUnits Offset = PointerInfo.Size.RoundUpToAlignment(
2707 CharUnits VtorDispSize = CharUnits::fromQuantity(4);
2708 CharUnits VtorDispAlignment = VtorDispSize;
2743 CharUnits BaseOffset;
2911 Builder.NonVirtualSize, Builder.Alignment, CharUnits::Zero(),
2935 CharUnits DataSize =
2937 CharUnits NonVirtualSize =
2943 CharUnits::fromQuantity(-1), DataSize, Builder.FieldOffsets.data(),
3086 CharUnits Offset, unsigned IndentLevel) {
3091 static void PrintBitFieldOffset(raw_ostream &OS, CharUnits Offset,
3116 CharUnits Offset,
3167 CharUnits BaseOffset = Offset + Layout.getBaseClassOffset(Base);
3187 CharUnits FieldOffset =
3219 CharUnits VBaseOffset = Offset + Layout.getVBaseClassOffset(VBase);
3222 PrintOffset(OS, VBaseOffset - CharUnits::fromQuantity(4), IndentLevel);
3255 ::DumpRecordLayout(OS, RD, *this, CharUnits(), 0, nullptr,