@@ -415,9 +415,9 @@ namespace {
415415 }
416416 };
417417
418- class AddressOnlyClangRecordTypeInfo final
419- : public StructTypeInfoBase<AddressOnlyClangRecordTypeInfo, FixedTypeInfo ,
420- ClangFieldInfo> {
418+ class AddressOnlyCXXClangRecordTypeInfo final
419+ : public StructTypeInfoBase<AddressOnlyCXXClangRecordTypeInfo ,
420+ FixedTypeInfo, ClangFieldInfo> {
421421 const clang::RecordDecl *ClangDecl;
422422
423423 const clang::CXXConstructorDecl *findCopyConstructor () const {
@@ -490,10 +490,10 @@ namespace {
490490 }
491491
492492 public:
493- AddressOnlyClangRecordTypeInfo (ArrayRef<ClangFieldInfo> fields,
494- llvm::Type *storageType, Size size,
495- Alignment align,
496- const clang::RecordDecl *clangDecl)
493+ AddressOnlyCXXClangRecordTypeInfo (ArrayRef<ClangFieldInfo> fields,
494+ llvm::Type *storageType, Size size,
495+ Alignment align,
496+ const clang::RecordDecl *clangDecl)
497497 : StructTypeInfoBase(StructTypeInfoKind::AddressOnlyClangRecordTypeInfo,
498498 fields, storageType, size,
499499 // We can't assume any spare bits in a C++ type
@@ -513,7 +513,7 @@ namespace {
513513 if (!destructor || destructor->isTrivial ()) {
514514 // If we didn't find a destructor to call, bail out to the parent
515515 // implementation.
516- StructTypeInfoBase<AddressOnlyClangRecordTypeInfo , FixedTypeInfo,
516+ StructTypeInfoBase<AddressOnlyCXXClangRecordTypeInfo , FixedTypeInfo,
517517 ClangFieldInfo>::destroy (IGF, address, T,
518518 isOutlined);
519519 return ;
@@ -595,7 +595,7 @@ namespace {
595595 destAddr.getAddress ());
596596 return ;
597597 }
598- StructTypeInfoBase<AddressOnlyClangRecordTypeInfo , FixedTypeInfo,
598+ StructTypeInfoBase<AddressOnlyCXXClangRecordTypeInfo , FixedTypeInfo,
599599 ClangFieldInfo>::initializeWithCopy (IGF, destAddr,
600600 srcAddr, T,
601601 isOutlined);
@@ -609,10 +609,9 @@ namespace {
609609 destAddr.getAddress ());
610610 return ;
611611 }
612- StructTypeInfoBase<AddressOnlyClangRecordTypeInfo, FixedTypeInfo,
613- ClangFieldInfo>::assignWithCopy (IGF, destAddr,
614- srcAddr, T,
615- isOutlined);
612+ StructTypeInfoBase<AddressOnlyCXXClangRecordTypeInfo, FixedTypeInfo,
613+ ClangFieldInfo>::assignWithCopy (IGF, destAddr, srcAddr,
614+ T, isOutlined);
616615 }
617616
618617 void initializeWithTake (IRGenFunction &IGF, Address dest, Address src,
@@ -625,9 +624,8 @@ namespace {
625624 return ;
626625 }
627626
628- StructTypeInfoBase<AddressOnlyClangRecordTypeInfo, FixedTypeInfo,
629- ClangFieldInfo>::initializeWithTake (IGF, dest,
630- src, T,
627+ StructTypeInfoBase<AddressOnlyCXXClangRecordTypeInfo, FixedTypeInfo,
628+ ClangFieldInfo>::initializeWithTake (IGF, dest, src, T,
631629 isOutlined);
632630 }
633631
@@ -641,9 +639,8 @@ namespace {
641639 return ;
642640 }
643641
644- StructTypeInfoBase<AddressOnlyClangRecordTypeInfo, FixedTypeInfo,
645- ClangFieldInfo>::assignWithTake (IGF, dest,
646- src, T,
642+ StructTypeInfoBase<AddressOnlyCXXClangRecordTypeInfo, FixedTypeInfo,
643+ ClangFieldInfo>::assignWithTake (IGF, dest, src, T,
647644 isOutlined);
648645 }
649646
@@ -1045,9 +1042,11 @@ class ClangRecordLowering {
10451042 const TypeInfo *createTypeInfo (llvm::StructType *llvmType) {
10461043 llvmType->setBody (LLVMFields, /* packed*/ true );
10471044 if (SwiftType.getStructOrBoundGenericStruct ()->isCxxNonTrivial ()) {
1048- return AddressOnlyClangRecordTypeInfo ::create (
1045+ return AddressOnlyCXXClangRecordTypeInfo ::create (
10491046 FieldInfos, llvmType, TotalStride, TotalAlignment, ClangDecl);
10501047 }
1048+ // TODO: New AddressOnlyPtrAuthTypeInfo to handle address diversified field
1049+ // function ptrs in C structs.
10511050 return LoadableClangRecordTypeInfo::create (
10521051 FieldInfos, NextExplosionIndex, llvmType, TotalStride,
10531052 std::move (SpareBits), TotalAlignment, ClangDecl);
@@ -1265,8 +1264,8 @@ class ClangRecordLowering {
12651264 case StructTypeInfoKind::LoadableClangRecordTypeInfo: \
12661265 return structTI.as <LoadableClangRecordTypeInfo>().op (IGF, __VA_ARGS__); \
12671266 case StructTypeInfoKind::AddressOnlyClangRecordTypeInfo: \
1268- return structTI.as <AddressOnlyClangRecordTypeInfo >().op (IGF, \
1269- __VA_ARGS__); \
1267+ return structTI.as <AddressOnlyCXXClangRecordTypeInfo >().op (IGF, \
1268+ __VA_ARGS__); \
12701269 case StructTypeInfoKind::LoadableStructTypeInfo: \
12711270 return structTI.as <LoadableStructTypeInfo>().op (IGF, __VA_ARGS__); \
12721271 case StructTypeInfoKind::FixedStructTypeInfo: \
0 commit comments