From f3e175664890ee016f20a327162826247ae4b93f Mon Sep 17 00:00:00 2001 From: Justin Bogner Date: Wed, 12 Mar 2014 20:26:37 +0000 Subject: [PATCH] Profile: Remove an inefficient and unnecessary API function This was leftover from an approach I abandoned, but I forgot to update it before committing. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@203708 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Profile/ProfileDataReader.h | 6 ++---- lib/Profile/ProfileDataReader.cpp | 16 ---------------- tools/llvm-profdata/llvm-profdata.cpp | 14 +++++++------- 3 files changed, 9 insertions(+), 27 deletions(-) diff --git a/include/llvm/Profile/ProfileDataReader.h b/include/llvm/Profile/ProfileDataReader.h index 1f8ebea155f..0f771f23fd9 100644 --- a/include/llvm/Profile/ProfileDataReader.h +++ b/include/llvm/Profile/ProfileDataReader.h @@ -79,10 +79,8 @@ public: /// Fill Counts with the profile data for the given function name. error_code getFunctionCounts(StringRef FuncName, uint64_t &FunctionHash, std::vector &Counts); - /// Get the frequency with which a function is called relative to the function - /// that is called most often in the program. - error_code getCallFrequency(StringRef FuncName, uint64_t &FunctionHash, - double &F); + /// Return the maximum of all known function counts. + uint64_t getMaximumFunctionCount() { return MaxFunctionCount; } static error_code create(std::string Path, std::unique_ptr &Result); diff --git a/lib/Profile/ProfileDataReader.cpp b/lib/Profile/ProfileDataReader.cpp index 68929c32b64..e679d9eec0d 100644 --- a/lib/Profile/ProfileDataReader.cpp +++ b/lib/Profile/ProfileDataReader.cpp @@ -165,19 +165,3 @@ error_code ProfileDataReader::getFunctionCounts(StringRef FuncName, return profiledata_error::success; } - -error_code ProfileDataReader::getCallFrequency(StringRef FuncName, - uint64_t &FunctionHash, - double &Frequency) { - ProfileDataCursor Cursor(DataBuffer.get()); - error_code EC; - if ((EC = findFunctionCounts(FuncName, FunctionHash, Cursor))) - return EC; - if ((EC = Cursor.skip64())) - return EC; - uint64_t CallCount; - if ((EC = Cursor.read64(CallCount))) - return EC; - Frequency = CallCount / (double)MaxFunctionCount; - return profiledata_error::success; -} diff --git a/tools/llvm-profdata/llvm-profdata.cpp b/tools/llvm-profdata/llvm-profdata.cpp index fcc54042f40..989c4281f82 100644 --- a/tools/llvm-profdata/llvm-profdata.cpp +++ b/tools/llvm-profdata/llvm-profdata.cpp @@ -171,21 +171,24 @@ int show_main(int argc, const char *argv[]) { if (ShowAllFunctions && !ShowFunction.empty()) errs() << "warning: -function argument ignored: showing all functions\n"; - uint64_t MaxBlockCount = 0, MaxFunctionCount = 0; + uint64_t MaxFunctionCount = Reader->getMaximumFunctionCount(); + + uint64_t MaxBlockCount = 0; uint64_t Hash; - double CallFreq; size_t ShownFunctions = false; std::vector Counts; for (const auto &Name : *Reader) { bool Show = ShowAllFunctions || Name.find(ShowFunction) != Name.npos; if (error_code EC = Reader->getFunctionCounts(Name, Hash, Counts)) exitWithError(EC.message(), Filename); - if (error_code EC = Reader->getCallFrequency(Name, Hash, CallFreq)) - exitWithError(EC.message(), Filename); + if (Show) { + double CallFreq = Counts[0] / (double)MaxFunctionCount; + if (!ShownFunctions) OS << "Counters:\n"; ++ShownFunctions; + OS << " " << Name << ":\n" << " Hash: " << HashPrinter(Hash) << "\n" << " Relative call frequency: " << FreqPrinter(CallFreq) << "\n" @@ -193,9 +196,6 @@ int show_main(int argc, const char *argv[]) { << " Function count: " << Counts[0] << "\n"; } - if (Counts[0] > MaxFunctionCount) - MaxFunctionCount = Counts[0]; - if (Show && ShowCounts) OS << " Block counts: ["; for (size_t I = 1, E = Counts.size(); I < E; ++I) {