diff --git a/lib/SILOptimizer/Transforms/PerformanceInliner.cpp b/lib/SILOptimizer/Transforms/PerformanceInliner.cpp index 3f63706bfd95a..6dbc995f44be3 100644 --- a/lib/SILOptimizer/Transforms/PerformanceInliner.cpp +++ b/lib/SILOptimizer/Transforms/PerformanceInliner.cpp @@ -363,7 +363,7 @@ bool SILPerformanceInliner::isProfitableToInline( auto Subs = FAI.getSubstitutionMap(); // Bail if it is not a generic call or inlining of generics is forbidden. - if (!EnableSILInliningOfGenerics || Subs.empty()) + if (!EnableSILInliningOfGenerics || !Subs.hasAnySubstitutableParams()) continue; if (!isa(def) && !isa(def) && diff --git a/lib/SILOptimizer/Utils/Generics.cpp b/lib/SILOptimizer/Utils/Generics.cpp index 6561bbf19a252..52e7a9d0a3b5f 100644 --- a/lib/SILOptimizer/Utils/Generics.cpp +++ b/lib/SILOptimizer/Utils/Generics.cpp @@ -390,6 +390,8 @@ static bool shouldNotSpecialize(SILFunction *Callee, SILFunction *Caller, bool ReabstractionInfo::prepareAndCheck(ApplySite Apply, SILFunction *Callee, SubstitutionMap ParamSubs, OptRemark::Emitter *ORE) { + assert(ParamSubs.hasAnySubstitutableParams()); + if (shouldNotSpecialize(Callee, Apply ? Apply.getFunction() : nullptr)) return false;