@@ -1818,9 +1818,12 @@ GenericFuncSpecializer::GenericFuncSpecializer(
18181818 ClonedName = Mangler.mangle ();
18191819 } else {
18201820 Mangle::GenericSpecializationMangler Mangler (
1821- GenericFunc, ParamSubs, ReInfo.isSerialized (), /* isReAbstracted*/ true ,
1822- /* isInlined*/ false , ReInfo.isPrespecialized ());
1823- ClonedName = Mangler.mangle ();
1821+ GenericFunc, ReInfo.isSerialized ());
1822+ if (ReInfo.isPrespecialized ()) {
1823+ ClonedName = Mangler.manglePrespecialized (ParamSubs);
1824+ } else {
1825+ ClonedName = Mangler.mangleReabstracted (ParamSubs);
1826+ }
18241827 }
18251828 LLVM_DEBUG (llvm::dbgs () << " Specialized function " << ClonedName << ' \n ' );
18261829}
@@ -2140,11 +2143,9 @@ class ReabstractionThunkGenerator {
21402143 SpecializedFunc(SpecializedFunc), ReInfo(ReInfo), OrigPAI(OrigPAI),
21412144 Loc(RegularLocation::getAutoGeneratedLocation()) {
21422145 if (!ReInfo.isPartialSpecialization ()) {
2143- Mangle::GenericSpecializationMangler Mangler (
2144- OrigF, ReInfo.getCalleeParamSubstitutionMap (), ReInfo.isSerialized (),
2145- /* isReAbstracted*/ false );
2146-
2147- ThunkName = Mangler.mangle ();
2146+ Mangle::GenericSpecializationMangler Mangler (OrigF, ReInfo.isSerialized ());
2147+ ThunkName = Mangler.mangleNotReabstracted (
2148+ ReInfo.getCalleeParamSubstitutionMap ());
21482149 } else {
21492150 Mangle::PartialSpecializationMangler Mangler (
21502151 OrigF, ReInfo.getSpecializedType (), ReInfo.isSerialized (),
@@ -2462,14 +2463,14 @@ usePrespecialized(SILOptFunctionBuilder &funcBuilder, ApplySite apply,
24622463 if (specializedReInfo.getSpecializedType () != reInfo.getSpecializedType ())
24632464 continue ;
24642465
2465- Mangle::GenericSpecializationMangler mangler (
2466- refF, reInfo.getCalleeParamSubstitutionMap (), reInfo.isSerialized (),
2467- /* isReAbstracted*/ true , /* isInlined*/ false ,
2468- reInfo.isPrespecialized ());
2466+ SubstitutionMap subs = reInfo.getCalleeParamSubstitutionMap ();
2467+ Mangle::GenericSpecializationMangler mangler (refF, reInfo.isSerialized ());
2468+ std::string name = reInfo.isPrespecialized () ?
2469+ mangler.manglePrespecialized (subs) :
2470+ mangler.mangleReabstracted (subs);
24692471
24702472 prespecializedReInfo = reInfo;
2471- return lookupOrCreatePrespecialization (funcBuilder, refF, mangler.mangle (),
2472- reInfo);
2473+ return lookupOrCreatePrespecialization (funcBuilder, refF, name, reInfo);
24732474 }
24742475 return nullptr ;
24752476}
0 commit comments