diff --git a/llvm/lib/Transforms/IPO/FunctionSpecialization.cpp b/llvm/lib/Transforms/IPO/FunctionSpecialization.cpp --- a/llvm/lib/Transforms/IPO/FunctionSpecialization.cpp +++ b/llvm/lib/Transforms/IPO/FunctionSpecialization.cpp @@ -662,6 +662,10 @@ if (!isa(U) && !isa(U)) continue; auto &CS = *cast(U); + if (CS.getCalledFunction() != F) { + continue; + } + // If the call site has attribute minsize set, that callsite won't be // specialized. if (CS.hasFnAttr(Attribute::MinSize)) {