X-Git-Url: http://plrg.eecs.uci.edu/git/?p=oota-llvm.git;a=blobdiff_plain;f=include%2Fllvm%2FProfileData%2FSampleProf.h;h=d7596d7b1b77340f924978caf5e9024c2957a5cf;hp=a8960cf7bc12032295c11da4a9574afde0f0f188;hb=d4cf58476e0af9e62fbf868221e5f59547c682df;hpb=d663426c2fcd19aac2cba06993cde8eed5579f6b diff --git a/include/llvm/ProfileData/SampleProf.h b/include/llvm/ProfileData/SampleProf.h index a8960cf7bc1..d7596d7b1b7 100644 --- a/include/llvm/ProfileData/SampleProf.h +++ b/include/llvm/ProfileData/SampleProf.h @@ -173,7 +173,10 @@ public: /// Sample counts accumulate using saturating arithmetic, to avoid wrapping /// around unsigned integers. void addSamples(uint64_t S) { - NumSamples = SaturatingAdd(NumSamples, S); + if (NumSamples <= std::numeric_limits::max() - S) + NumSamples += S; + else + NumSamples = std::numeric_limits::max(); } /// Add called function \p F with samples \p S. @@ -182,7 +185,10 @@ public: /// around unsigned integers. void addCalledTarget(StringRef F, uint64_t S) { uint64_t &TargetSamples = CallTargets[F]; - TargetSamples = SaturatingAdd(TargetSamples, S); + if (TargetSamples <= std::numeric_limits::max() - S) + TargetSamples += S; + else + TargetSamples = std::numeric_limits::max(); } /// Return true if this sample record contains function calls.