@@ -72,7 +72,7 @@ void SILFunctionBuilder::addFunctionAttributes(
7272 : SILSpecializeAttr::SpecializationKind::Partial;
7373 assert (!constant.isNull ());
7474 SILFunction *targetFunction = nullptr ;
75- auto *attributedFuncDecl = constant.getDecl ();
75+ auto *attributedFuncDecl = constant.getAbstractFunctionDecl ();
7676 auto *targetFunctionDecl = SA->getTargetFunctionDecl (attributedFuncDecl);
7777 // Filter out _spi.
7878 auto spiGroups = SA->getSPIGroups ();
@@ -91,16 +91,17 @@ void SILFunctionBuilder::addFunctionAttributes(
9191 auto availability =
9292 AvailabilityInference::annotatedAvailableRangeForAttr (SA,
9393 M.getSwiftModule ()->getASTContext ());
94+ auto specializedSignature = SA->getSpecializedSignature (attributedFuncDecl);
9495 if (targetFunctionDecl) {
9596 SILDeclRef declRef (targetFunctionDecl, constant.kind , false );
9697 targetFunction = getOrCreateDeclaration (targetFunctionDecl, declRef);
9798 F->addSpecializeAttr (SILSpecializeAttr::create (
98- M, SA-> getSpecializedSignature () , SA->getTypeErasedParams (),
99+ M, specializedSignature , SA->getTypeErasedParams (),
99100 SA->isExported (), kind, targetFunction, spiGroupIdent,
100101 attributedFuncDecl->getModuleContext (), availability));
101102 } else {
102103 F->addSpecializeAttr (SILSpecializeAttr::create (
103- M, SA-> getSpecializedSignature () , SA->getTypeErasedParams (),
104+ M, specializedSignature , SA->getTypeErasedParams (),
104105 SA->isExported (), kind, nullptr , spiGroupIdent,
105106 attributedFuncDecl->getModuleContext (), availability));
106107 }
0 commit comments