diff --git a/llvm/include/llvm/ADT/Statistic.h b/llvm/include/llvm/ADT/Statistic.h index c39e161bcbcdd..6c195cc44990b 100644 --- a/llvm/include/llvm/ADT/Statistic.h +++ b/llvm/include/llvm/ADT/Statistic.h @@ -53,7 +53,7 @@ class TrackingStatistic { const char *const Name; const char *const Desc; - std::atomic Value; + std::atomic Value; std::atomic Initialized; constexpr TrackingStatistic(const char *DebugType, const char *Name, @@ -65,12 +65,12 @@ class TrackingStatistic { const char *getName() const { return Name; } const char *getDesc() const { return Desc; } - unsigned getValue() const { return Value.load(std::memory_order_relaxed); } + uint64_t getValue() const { return Value.load(std::memory_order_relaxed); } // Allow use of this class as the value itself. - operator unsigned() const { return getValue(); } + operator uint64_t() const { return getValue(); } - const TrackingStatistic &operator=(unsigned Val) { + const TrackingStatistic &operator=(uint64_t Val) { Value.store(Val, std::memory_order_relaxed); return init(); } @@ -80,7 +80,7 @@ class TrackingStatistic { return init(); } - unsigned operator++(int) { + uint64_t operator++(int) { init(); return Value.fetch_add(1, std::memory_order_relaxed); } @@ -90,27 +90,27 @@ class TrackingStatistic { return init(); } - unsigned operator--(int) { + uint64_t operator--(int) { init(); return Value.fetch_sub(1, std::memory_order_relaxed); } - const TrackingStatistic &operator+=(unsigned V) { + const TrackingStatistic &operator+=(uint64_t V) { if (V == 0) return *this; Value.fetch_add(V, std::memory_order_relaxed); return init(); } - const TrackingStatistic &operator-=(unsigned V) { + const TrackingStatistic &operator-=(uint64_t V) { if (V == 0) return *this; Value.fetch_sub(V, std::memory_order_relaxed); return init(); } - void updateMax(unsigned V) { - unsigned PrevMax = Value.load(std::memory_order_relaxed); + void updateMax(uint64_t V) { + uint64_t PrevMax = Value.load(std::memory_order_relaxed); // Keep trying to update max until we succeed or another thread produces // a bigger max than us. while (V > PrevMax && !Value.compare_exchange_weak( @@ -134,26 +134,26 @@ class NoopStatistic { NoopStatistic(const char * /*DebugType*/, const char * /*Name*/, const char * /*Desc*/) {} - unsigned getValue() const { return 0; } + uint64_t getValue() const { return 0; } // Allow use of this class as the value itself. - operator unsigned() const { return 0; } + operator uint64_t() const { return 0; } - const NoopStatistic &operator=(unsigned Val) { return *this; } + const NoopStatistic &operator=(uint64_t Val) { return *this; } const NoopStatistic &operator++() { return *this; } - unsigned operator++(int) { return 0; } + uint64_t operator++(int) { return 0; } const NoopStatistic &operator--() { return *this; } - unsigned operator--(int) { return 0; } + uint64_t operator--(int) { return 0; } - const NoopStatistic &operator+=(const unsigned &V) { return *this; } + const NoopStatistic &operator+=(const uint64_t &V) { return *this; } - const NoopStatistic &operator-=(const unsigned &V) { return *this; } + const NoopStatistic &operator-=(const uint64_t &V) { return *this; } - void updateMax(unsigned V) {} + void updateMax(uint64_t V) {} }; #if LLVM_ENABLE_STATS @@ -200,7 +200,7 @@ void PrintStatisticsJSON(raw_ostream &OS); /// during it's execution. It will return the value at the point that it is /// read. However, it will prevent new statistics from registering until it /// completes. -const std::vector> GetStatistics(); +const std::vector> GetStatistics(); /// Reset the statistics. This can be used to zero and de-register the /// statistics in order to measure a compilation. diff --git a/llvm/lib/Support/Statistic.cpp b/llvm/lib/Support/Statistic.cpp index 95ee885d2f8f5..ec12118650c1b 100644 --- a/llvm/lib/Support/Statistic.cpp +++ b/llvm/lib/Support/Statistic.cpp @@ -192,7 +192,7 @@ void llvm::PrintStatistics(raw_ostream &OS) { // Print all of the statistics. for (TrackingStatistic *Stat : Stats.Stats) - OS << format("%*u %-*s - %s\n", MaxValLen, Stat->getValue(), + OS << format("%*" PRIu64 " %-*s - %s\n", MaxValLen, Stat->getValue(), MaxDebugTypeLen, Stat->getDebugType(), Stat->getDesc()); OS << '\n'; // Flush the output stream. @@ -253,9 +253,9 @@ void llvm::PrintStatistics() { #endif } -const std::vector> llvm::GetStatistics() { +const std::vector> llvm::GetStatistics() { sys::SmartScopedLock Reader(*StatLock); - std::vector> ReturnStats; + std::vector> ReturnStats; for (const auto &Stat : StatInfo->statistics()) ReturnStats.emplace_back(Stat->getName(), Stat->getValue()); diff --git a/llvm/lib/Transforms/Scalar/NewGVN.cpp b/llvm/lib/Transforms/Scalar/NewGVN.cpp index 302eec1bced89..703edba020562 100644 --- a/llvm/lib/Transforms/Scalar/NewGVN.cpp +++ b/llvm/lib/Transforms/Scalar/NewGVN.cpp @@ -3356,7 +3356,7 @@ void NewGVN::verifyStoreExpressions() const { // instruction set, propagating value numbers, marking things touched, etc, // until the set of touched instructions is completely empty. void NewGVN::iterateTouchedInstructions() { - unsigned int Iterations = 0; + uint64_t Iterations = 0; // Figure out where touchedinstructions starts int FirstInstr = TouchedInstructions.find_first(); // Nothing set, nothing to iterate, just return. diff --git a/llvm/unittests/ADT/StatisticTest.cpp b/llvm/unittests/ADT/StatisticTest.cpp index e5a0cad26d685..17d9911915550 100644 --- a/llvm/unittests/ADT/StatisticTest.cpp +++ b/llvm/unittests/ADT/StatisticTest.cpp @@ -11,7 +11,7 @@ #include "gtest/gtest.h" using namespace llvm; -using OptionalStatistic = Optional>; +using OptionalStatistic = Optional>; namespace { #define DEBUG_TYPE "unittest" @@ -21,7 +21,7 @@ ALWAYS_ENABLED_STATISTIC(AlwaysCounter, "Counts things always"); #if LLVM_ENABLE_STATS static void -extractCounters(const std::vector> &Range, +extractCounters(const std::vector> &Range, OptionalStatistic &S1, OptionalStatistic &S2) { for (const auto &S : Range) { if (S.first == "Counter") @@ -36,20 +36,21 @@ TEST(StatisticTest, Count) { EnableStatistics(); Counter = 0; - EXPECT_EQ(Counter, 0u); + EXPECT_EQ(Counter, 0ull); Counter++; Counter++; + Counter += (std::numeric_limits::max() - 3); #if LLVM_ENABLE_STATS - EXPECT_EQ(Counter, 2u); + EXPECT_EQ(Counter, std::numeric_limits::max() - 1); #else - EXPECT_EQ(Counter, 0u); + EXPECT_EQ(Counter, UINT64_C(0)); #endif AlwaysCounter = 0; - EXPECT_EQ(AlwaysCounter, 0u); + EXPECT_EQ(AlwaysCounter, 0ull); AlwaysCounter++; ++AlwaysCounter; - EXPECT_EQ(AlwaysCounter, 2u); + EXPECT_EQ(AlwaysCounter, 2ull); } TEST(StatisticTest, Assign) { diff --git a/mlir/lib/Pass/PassStatistics.cpp b/mlir/lib/Pass/PassStatistics.cpp index 08b4a44004e57..4c14711a0a968 100644 --- a/mlir/lib/Pass/PassStatistics.cpp +++ b/mlir/lib/Pass/PassStatistics.cpp @@ -21,7 +21,7 @@ namespace { /// Information pertaining to a specific statistic. struct Statistic { const char *name, *desc; - unsigned value; + uint64_t value; }; } // namespace diff --git a/polly/lib/Analysis/ScopDetection.cpp b/polly/lib/Analysis/ScopDetection.cpp index 9d7b4c44d4b88..e22f8bd41a1bf 100644 --- a/polly/lib/Analysis/ScopDetection.cpp +++ b/polly/lib/Analysis/ScopDetection.cpp @@ -1885,7 +1885,7 @@ static void updateLoopCountStatistic(ScopDetection::LoopStats Stats, if (!OnlyProfitable) { NumLoopsInScop += Stats.NumLoops; MaxNumLoopsInScop = - std::max(MaxNumLoopsInScop.getValue(), (unsigned)Stats.NumLoops); + std::max(MaxNumLoopsInScop.getValue(), (uint64_t)Stats.NumLoops); if (Stats.MaxDepth == 0) NumScopsDepthZero++; else if (Stats.MaxDepth == 1) @@ -1903,7 +1903,7 @@ static void updateLoopCountStatistic(ScopDetection::LoopStats Stats, } else { NumLoopsInProfScop += Stats.NumLoops; MaxNumLoopsInProfScop = - std::max(MaxNumLoopsInProfScop.getValue(), (unsigned)Stats.NumLoops); + std::max(MaxNumLoopsInProfScop.getValue(), (uint64_t)Stats.NumLoops); if (Stats.MaxDepth == 0) NumProfScopsDepthZero++; else if (Stats.MaxDepth == 1) diff --git a/polly/lib/Analysis/ScopInfo.cpp b/polly/lib/Analysis/ScopInfo.cpp index ca81d43703a90..d8196c34a051d 100644 --- a/polly/lib/Analysis/ScopInfo.cpp +++ b/polly/lib/Analysis/ScopInfo.cpp @@ -2559,7 +2559,7 @@ void updateLoopCountStatistic(ScopDetection::LoopStats Stats, NumScops++; NumLoopsInScop += Stats.NumLoops; MaxNumLoopsInScop = - std::max(MaxNumLoopsInScop.getValue(), (unsigned)Stats.NumLoops); + std::max(MaxNumLoopsInScop.getValue(), (uint64_t)Stats.NumLoops); if (Stats.MaxDepth == 0) NumScopsDepthZero++;