@@ -385,7 +385,8 @@ createSpecializedFunctionDeclaration(BridgedStringRef specializedName,
385385 SwiftInt paramCount,
386386 BridgedFunction bridgedOriginal,
387387 bool makeThin,
388- bool makeBare) const {
388+ bool makeBare,
389+ bool preserveGenericSignature) const {
389390 auto *original = bridgedOriginal.getFunction ();
390391 auto originalType = original->getLoweredFunctionType ();
391392
@@ -402,13 +403,14 @@ createSpecializedFunctionDeclaration(BridgedStringRef specializedName,
402403 extInfo = extInfo.withRepresentation (SILFunctionTypeRepresentation::Thin);
403404
404405 auto ClonedTy = SILFunctionType::get (
405- originalType->getInvocationGenericSignature (), extInfo,
406+ preserveGenericSignature ? originalType->getInvocationGenericSignature () : GenericSignature (),
407+ extInfo,
406408 originalType->getCoroutineKind (),
407409 originalType->getCalleeConvention (), specializedParams,
408410 originalType->getYields (), originalType->getResults (),
409411 originalType->getOptionalErrorResult (),
410- originalType->getPatternSubstitutions (),
411- originalType->getInvocationSubstitutions (),
412+ preserveGenericSignature ? originalType->getPatternSubstitutions () : SubstitutionMap (),
413+ preserveGenericSignature ? originalType->getInvocationSubstitutions () : SubstitutionMap (),
412414 original->getModule ().getASTContext ());
413415
414416 SILOptFunctionBuilder functionBuilder (*invocation->getTransform ());
@@ -424,7 +426,8 @@ createSpecializedFunctionDeclaration(BridgedStringRef specializedName,
424426 // classes (the classSubclassScope), because that may incorrectly
425427 // influence the linkage.
426428 getSpecializedLinkage (original, original->getLinkage ()), specializedName.unbridged (),
427- ClonedTy, original->getGenericEnvironment (),
429+ ClonedTy,
430+ preserveGenericSignature ? original->getGenericEnvironment () : nullptr ,
428431 original->getLocation (), makeBare ? IsBare : original->isBare (), original->isTransparent (),
429432 original->getSerializedKind (), IsNotDynamic, IsNotDistributed,
430433 IsNotRuntimeAccessible, original->getEntryCount (),
0 commit comments