aboutsummaryrefslogtreecommitdiff
path: root/contrib/llvm-project/llvm/lib/Support/BlockFrequency.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/llvm-project/llvm/lib/Support/BlockFrequency.cpp')
-rw-r--r--contrib/llvm-project/llvm/lib/Support/BlockFrequency.cpp9
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);
+}