diff options
Diffstat (limited to 'contrib/llvm-project/llvm/lib/Support/BlockFrequency.cpp')
| -rw-r--r-- | contrib/llvm-project/llvm/lib/Support/BlockFrequency.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/contrib/llvm-project/llvm/lib/Support/BlockFrequency.cpp b/contrib/llvm-project/llvm/lib/Support/BlockFrequency.cpp index a4a1e477d940..329f1e12cdc2 100644 --- a/contrib/llvm-project/llvm/lib/Support/BlockFrequency.cpp +++ b/contrib/llvm-project/llvm/lib/Support/BlockFrequency.cpp @@ -12,6 +12,7 @@ #include "llvm/Support/BlockFrequency.h" #include "llvm/Support/BranchProbability.h" +#include "llvm/Support/MathExtras.h" using namespace llvm; @@ -36,3 +37,11 @@ BlockFrequency BlockFrequency::operator/(BranchProbability Prob) const { Freq /= Prob; return Freq; } + +std::optional<BlockFrequency> BlockFrequency::mul(uint64_t Factor) const { + bool Overflow; + uint64_t ResultFrequency = SaturatingMultiply(Frequency, Factor, &Overflow); + if (Overflow) + return {}; + return BlockFrequency(ResultFrequency); +} |
