diff --git a/llvm/lib/Transforms/IPO/SampleProfile.cpp b/llvm/lib/Transforms/IPO/SampleProfile.cpp --- a/llvm/lib/Transforms/IPO/SampleProfile.cpp +++ b/llvm/lib/Transforms/IPO/SampleProfile.cpp @@ -872,17 +872,15 @@ // profile will be used to prorate callsites from the callee if // inlined. Once not inlined, the direct callsite distribution should // be prorated so that the it will reflect the real callsite counts. - setProbeDistributionFactor(CI, Candidate.CallsiteDistribution * Sum / - SumOrigin); + setProbeDistributionFactor(CI, 1.0 * Sum / SumOrigin); Candidate.CallInstr = DI; if (isa(DI) || isa(DI)) { bool Inlined = tryInlineCandidate(Candidate, InlinedCallSite); if (!Inlined) { // Prorate the direct callsite distribution so that it reflects real // callsite counts. - setProbeDistributionFactor(*DI, Candidate.CallsiteDistribution * - Candidate.CallsiteCount / - SumOrigin); + setProbeDistributionFactor(*DI, + 1.0 * Candidate.CallsiteCount / SumOrigin); } return Inlined; }