@@ -1059,7 +1059,8 @@ static void addValueWitness(IRGenModule &IGM, ConstantStructBuilder &B,
1059
1059
return addFunction (getNoOpVoidFunction (IGM));
1060
1060
} else if (concreteTI.isSingleSwiftRetainablePointer (ResilienceExpansion::Maximal)) {
1061
1061
return addFunction (getDestroyStrongFunction (IGM));
1062
- } else if (layoutStringsEnabled (IGM)) {
1062
+ } else if (layoutStringsEnabled (IGM) &&
1063
+ concreteTI.isCopyable (ResilienceExpansion::Maximal)) {
1063
1064
auto ty = boundGenericCharacteristics ? boundGenericCharacteristics->concreteType : concreteType;
1064
1065
auto &typeInfo = boundGenericCharacteristics ? *boundGenericCharacteristics->TI : concreteTI;
1065
1066
if (auto *typeLayoutEntry =
@@ -1083,7 +1084,8 @@ static void addValueWitness(IRGenModule &IGM, ConstantStructBuilder &B,
1083
1084
}
1084
1085
}
1085
1086
1086
- if (layoutStringsEnabled (IGM)) {
1087
+ if (layoutStringsEnabled (IGM) &&
1088
+ concreteTI.isCopyable (ResilienceExpansion::Maximal)) {
1087
1089
auto ty = boundGenericCharacteristics
1088
1090
? boundGenericCharacteristics->concreteType
1089
1091
: concreteType;
@@ -1106,7 +1108,8 @@ static void addValueWitness(IRGenModule &IGM, ConstantStructBuilder &B,
1106
1108
case ValueWitness::InitializeWithTake:
1107
1109
if (concreteTI.isBitwiseTakable (ResilienceExpansion::Maximal)) {
1108
1110
return addFunction (getMemCpyFunction (IGM, concreteTI));
1109
- } else if (layoutStringsEnabled (IGM)) {
1111
+ } else if (layoutStringsEnabled (IGM) &&
1112
+ concreteTI.isCopyable (ResilienceExpansion::Maximal)) {
1110
1113
auto ty = boundGenericCharacteristics ? boundGenericCharacteristics->concreteType : concreteType;
1111
1114
auto &typeInfo = boundGenericCharacteristics ? *boundGenericCharacteristics->TI : concreteTI;
1112
1115
if (auto *typeLayoutEntry =
@@ -1126,7 +1129,8 @@ static void addValueWitness(IRGenModule &IGM, ConstantStructBuilder &B,
1126
1129
return addFunction (getMemCpyFunction (IGM, concreteTI));
1127
1130
} else if (concreteTI.isSingleSwiftRetainablePointer (ResilienceExpansion::Maximal)) {
1128
1131
return addFunction (getAssignWithCopyStrongFunction (IGM));
1129
- } else if (layoutStringsEnabled (IGM)) {
1132
+ } else if (layoutStringsEnabled (IGM) &&
1133
+ concreteTI.isCopyable (ResilienceExpansion::Maximal)) {
1130
1134
auto ty = boundGenericCharacteristics ? boundGenericCharacteristics->concreteType : concreteType;
1131
1135
auto &typeInfo = boundGenericCharacteristics ? *boundGenericCharacteristics->TI : concreteTI;
1132
1136
if (auto *typeLayoutEntry =
@@ -1146,7 +1150,8 @@ static void addValueWitness(IRGenModule &IGM, ConstantStructBuilder &B,
1146
1150
return addFunction (getMemCpyFunction (IGM, concreteTI));
1147
1151
} else if (concreteTI.isSingleSwiftRetainablePointer (ResilienceExpansion::Maximal)) {
1148
1152
return addFunction (getAssignWithTakeStrongFunction (IGM));
1149
- } else if (layoutStringsEnabled (IGM)) {
1153
+ } else if (layoutStringsEnabled (IGM) &&
1154
+ concreteTI.isCopyable (ResilienceExpansion::Maximal)) {
1150
1155
auto ty = boundGenericCharacteristics ? boundGenericCharacteristics->concreteType : concreteType;
1151
1156
auto &typeInfo = boundGenericCharacteristics ? *boundGenericCharacteristics->TI : concreteTI;
1152
1157
if (auto *typeLayoutEntry =
@@ -1166,7 +1171,8 @@ static void addValueWitness(IRGenModule &IGM, ConstantStructBuilder &B,
1166
1171
return addFunction (getMemCpyFunction (IGM, concreteTI));
1167
1172
} else if (concreteTI.isSingleSwiftRetainablePointer (ResilienceExpansion::Maximal)) {
1168
1173
return addFunction (getInitWithCopyStrongFunction (IGM));
1169
- } else if (layoutStringsEnabled (IGM)) {
1174
+ } else if (layoutStringsEnabled (IGM) &&
1175
+ concreteTI.isCopyable (ResilienceExpansion::Maximal)) {
1170
1176
auto ty = boundGenericCharacteristics ? boundGenericCharacteristics->concreteType : concreteType;
1171
1177
auto &typeInfo = boundGenericCharacteristics ? *boundGenericCharacteristics->TI : concreteTI;
1172
1178
if (auto *typeLayoutEntry =
@@ -1233,7 +1239,8 @@ static void addValueWitness(IRGenModule &IGM, ConstantStructBuilder &B,
1233
1239
case ValueWitness::GetEnumTag: {
1234
1240
assert (concreteType.getEnumOrBoundGenericEnum ());
1235
1241
1236
- if (layoutStringsEnabled (IGM)) {
1242
+ if (layoutStringsEnabled (IGM) &&
1243
+ concreteTI.isCopyable (ResilienceExpansion::Maximal)) {
1237
1244
auto ty = boundGenericCharacteristics
1238
1245
? boundGenericCharacteristics->concreteType
1239
1246
: concreteType;
@@ -1255,7 +1262,8 @@ static void addValueWitness(IRGenModule &IGM, ConstantStructBuilder &B,
1255
1262
}
1256
1263
case ValueWitness::DestructiveInjectEnumTag: {
1257
1264
assert (concreteType.getEnumOrBoundGenericEnum ());
1258
- if (layoutStringsEnabled (IGM)) {
1265
+ if (layoutStringsEnabled (IGM) &&
1266
+ concreteTI.isCopyable (ResilienceExpansion::Maximal)) {
1259
1267
auto ty = boundGenericCharacteristics
1260
1268
? boundGenericCharacteristics->concreteType
1261
1269
: concreteType;
0 commit comments