[llvm] r203708 - Profile: Remove an inefficient and unnecessary API function

Justin Bogner mail at justinbogner.com
Wed Mar 12 13:26:37 PDT 2014


Author: bogner
Date: Wed Mar 12 15:26:37 2014
New Revision: 203708

URL: http://llvm.org/viewvc/llvm-project?rev=203708&view=rev
Log:
Profile: Remove an inefficient and unnecessary API function

This was leftover from an approach I abandoned, but I forgot to update
it before committing.

Modified:
    llvm/trunk/include/llvm/Profile/ProfileDataReader.h
    llvm/trunk/lib/Profile/ProfileDataReader.cpp
    llvm/trunk/tools/llvm-profdata/llvm-profdata.cpp

Modified: llvm/trunk/include/llvm/Profile/ProfileDataReader.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Profile/ProfileDataReader.h?rev=203708&r1=203707&r2=203708&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Profile/ProfileDataReader.h (original)
+++ llvm/trunk/include/llvm/Profile/ProfileDataReader.h Wed Mar 12 15:26:37 2014
@@ -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<uint64_t> &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<ProfileDataReader> &Result);

Modified: llvm/trunk/lib/Profile/ProfileDataReader.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Profile/ProfileDataReader.cpp?rev=203708&r1=203707&r2=203708&view=diff
==============================================================================
--- llvm/trunk/lib/Profile/ProfileDataReader.cpp (original)
+++ llvm/trunk/lib/Profile/ProfileDataReader.cpp Wed Mar 12 15:26:37 2014
@@ -165,19 +165,3 @@ error_code ProfileDataReader::getFunctio
 
   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;
-}

Modified: llvm/trunk/tools/llvm-profdata/llvm-profdata.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-profdata/llvm-profdata.cpp?rev=203708&r1=203707&r2=203708&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-profdata/llvm-profdata.cpp (original)
+++ llvm/trunk/tools/llvm-profdata/llvm-profdata.cpp Wed Mar 12 15:26:37 2014
@@ -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<uint64_t> 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) {





More information about the llvm-commits mailing list