[IRGen] Adjust element size of offset vector to 32-bit for structs

Type of elements contained by field offsets vector can be adjusted
to 32-bit integers (from being pointer sized) to safe space in the
binary since segment size is limited to 4 GB.

Resolves: rdar://problem/36560486
This commit is contained in:
Pavel Yaskevich
2018-04-02 16:01:16 -07:00
parent 187ab0b711
commit 78822bc23e
10 changed files with 74 additions and 24 deletions

View File

@@ -942,13 +942,13 @@ FUNCTION(InitClassMetadata,
// StructLayoutFlags flags,
// size_t numFields,
// TypeLayout * const *fieldTypes,
// size_t *fieldOffsets);
// uint32_t *fieldOffsets);
FUNCTION(InitStructMetadata,
swift_initStructMetadata, C_CC,
RETURNS(VoidTy),
ARGS(TypeMetadataPtrTy, SizeTy, SizeTy,
Int8PtrPtrTy->getPointerTo(0),
SizeTy->getPointerTo()),
Int32Ty->getPointerTo()),
ATTRS(NoUnwind))
// void swift_initEnumMetadataSingleCase(Metadata *enumType,