@@ -385,7 +385,8 @@ createSpecializedFunctionDeclaration(BridgedStringRef specializedName,
385
385
SwiftInt paramCount,
386
386
BridgedFunction bridgedOriginal,
387
387
bool makeThin,
388
- bool makeBare) const {
388
+ bool makeBare,
389
+ bool preserveGenericSignature) const {
389
390
auto *original = bridgedOriginal.getFunction ();
390
391
auto originalType = original->getLoweredFunctionType ();
391
392
@@ -402,13 +403,14 @@ createSpecializedFunctionDeclaration(BridgedStringRef specializedName,
402
403
extInfo = extInfo.withRepresentation (SILFunctionTypeRepresentation::Thin);
403
404
404
405
auto ClonedTy = SILFunctionType::get (
405
- originalType->getInvocationGenericSignature (), extInfo,
406
+ preserveGenericSignature ? originalType->getInvocationGenericSignature () : GenericSignature (),
407
+ extInfo,
406
408
originalType->getCoroutineKind (),
407
409
originalType->getCalleeConvention (), specializedParams,
408
410
originalType->getYields (), originalType->getResults (),
409
411
originalType->getOptionalErrorResult (),
410
- originalType->getPatternSubstitutions (),
411
- originalType->getInvocationSubstitutions (),
412
+ preserveGenericSignature ? originalType->getPatternSubstitutions () : SubstitutionMap (),
413
+ preserveGenericSignature ? originalType->getInvocationSubstitutions () : SubstitutionMap (),
412
414
original->getModule ().getASTContext ());
413
415
414
416
SILOptFunctionBuilder functionBuilder (*invocation->getTransform ());
@@ -424,7 +426,8 @@ createSpecializedFunctionDeclaration(BridgedStringRef specializedName,
424
426
// classes (the classSubclassScope), because that may incorrectly
425
427
// influence the linkage.
426
428
getSpecializedLinkage (original, original->getLinkage ()), specializedName.unbridged (),
427
- ClonedTy, original->getGenericEnvironment (),
429
+ ClonedTy,
430
+ preserveGenericSignature ? original->getGenericEnvironment () : nullptr ,
428
431
original->getLocation (), makeBare ? IsBare : original->isBare (), original->isTransparent (),
429
432
original->getSerializedKind (), IsNotDynamic, IsNotDistributed,
430
433
IsNotRuntimeAccessible, original->getEntryCount (),
0 commit comments