summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Support/BlockFrequency.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/Support/BlockFrequency.cpp')
-rw-r--r--llvm/lib/Support/BlockFrequency.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/llvm/lib/Support/BlockFrequency.cpp b/llvm/lib/Support/BlockFrequency.cpp
index e0430c199eb..e7f3e1764c5 100644
--- a/llvm/lib/Support/BlockFrequency.cpp
+++ b/llvm/lib/Support/BlockFrequency.cpp
@@ -56,6 +56,21 @@ BlockFrequency BlockFrequency::operator+(BlockFrequency Freq) const {
return NewFreq;
}
+BlockFrequency &BlockFrequency::operator-=(BlockFrequency Freq) {
+ // If underflow, set frequency to 0.
+ if (Frequency <= Freq.Frequency)
+ Frequency = 0;
+ else
+ Frequency -= Freq.Frequency;
+ return *this;
+}
+
+BlockFrequency BlockFrequency::operator-(BlockFrequency Freq) const {
+ BlockFrequency NewFreq(Frequency);
+ NewFreq -= Freq;
+ return NewFreq;
+}
+
BlockFrequency &BlockFrequency::operator>>=(const unsigned count) {
// Frequency can never be 0 by design.
assert(Frequency != 0);
OpenPOWER on IntegriCloud