@@ -2290,12 +2290,14 @@ namespace {
2290
2290
2291
2291
TypeLowering *handleTrivial (CanType type,
2292
2292
RecursiveProperties properties) {
2293
+ properties = mergeHasPack (HasPack_t (type->hasAnyPack ()), properties);
2293
2294
auto silType = SILType::getPrimitiveObjectType (type);
2294
2295
return new (TC) TrivialTypeLowering (silType, properties, Expansion);
2295
2296
}
2296
2297
2297
2298
TypeLowering *handleReference (CanType type,
2298
2299
RecursiveProperties properties) {
2300
+ properties = mergeHasPack (HasPack_t (type->hasAnyPack ()), properties);
2299
2301
auto silType = SILType::getPrimitiveObjectType (type);
2300
2302
if (type.isForeignReferenceType () &&
2301
2303
type->getReferenceCounting () == ReferenceCounting::None)
@@ -2307,13 +2309,15 @@ namespace {
2307
2309
2308
2310
TypeLowering *handleMoveOnlyReference (CanType type,
2309
2311
RecursiveProperties properties) {
2312
+ properties = mergeHasPack (HasPack_t (type->hasAnyPack ()), properties);
2310
2313
auto silType = SILType::getPrimitiveObjectType (type);
2311
2314
return new (TC)
2312
2315
MoveOnlyReferenceTypeLowering (silType, properties, Expansion);
2313
2316
}
2314
2317
2315
2318
TypeLowering *handleMoveOnlyAddressOnly (CanType type,
2316
2319
RecursiveProperties properties) {
2320
+ properties = mergeHasPack (HasPack_t (type->hasAnyPack ()), properties);
2317
2321
if (!TC.Context .SILOpts .EnableSILOpaqueValues &&
2318
2322
!TypeLoweringForceOpaqueValueLowering) {
2319
2323
auto silType = SILType::getPrimitiveAddressType (type);
@@ -2326,13 +2330,15 @@ namespace {
2326
2330
}
2327
2331
2328
2332
TypeLowering *handleReference (CanType type) {
2333
+ auto properties = RecursiveProperties::forReference ();
2334
+ properties = mergeHasPack (HasPack_t (type->hasAnyPack ()), properties);
2329
2335
auto silType = SILType::getPrimitiveObjectType (type);
2330
- return new (TC) ReferenceTypeLowering (
2331
- silType, RecursiveProperties::forReference (), Expansion);
2336
+ return new (TC) ReferenceTypeLowering (silType, properties, Expansion);
2332
2337
}
2333
2338
2334
2339
TypeLowering *handleAddressOnly (CanType type,
2335
2340
RecursiveProperties properties) {
2341
+ properties = mergeHasPack (HasPack_t (type->hasAnyPack ()), properties);
2336
2342
if (!TC.Context .SILOpts .EnableSILOpaqueValues &&
2337
2343
!TypeLoweringForceOpaqueValueLowering) {
2338
2344
auto silType = SILType::getPrimitiveAddressType (type);
@@ -2347,6 +2353,7 @@ namespace {
2347
2353
2348
2354
TypeLowering *handleInfinite (CanType type,
2349
2355
RecursiveProperties properties) {
2356
+ properties = mergeHasPack (HasPack_t (type->hasAnyPack ()), properties);
2350
2357
// Infinite types cannot actually be instantiated, so treat them as
2351
2358
// opaque for code generation purposes.
2352
2359
properties.setAddressOnly ();
0 commit comments