[llvm] r343772 - [PassTimingInfo] cleanup on TimingData's Timer handling

Fedor Sergeev via llvm-commits llvm-commits at lists.llvm.org
Thu Oct 4 05:49:57 PDT 2018


Author: fedor.sergeev
Date: Thu Oct  4 05:49:57 2018
New Revision: 343772

URL: http://llvm.org/viewvc/llvm-project?rev=343772&view=rev
Log:
[PassTimingInfo] cleanup on TimingData's Timer handling

Replacing Timer* with unique_ptr<Timer> in a pass-to-timer map.
That allows to get rid of unpretty raw deletes in PassTimingInfo destructor.
Strictly cleanup, not intended to change any visible behavior.

Modified:
    llvm/trunk/lib/IR/PassTimingInfo.cpp

Modified: llvm/trunk/lib/IR/PassTimingInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/PassTimingInfo.cpp?rev=343772&r1=343771&r2=343772&view=diff
==============================================================================
--- llvm/trunk/lib/IR/PassTimingInfo.cpp (original)
+++ llvm/trunk/lib/IR/PassTimingInfo.cpp Thu Oct  4 05:49:57 2018
@@ -28,6 +28,7 @@
 #include "llvm/Support/Mutex.h"
 #include "llvm/Support/Timer.h"
 #include "llvm/Support/raw_ostream.h"
+#include <memory>
 #include <string>
 
 using namespace llvm;
@@ -56,7 +57,7 @@ public:
 
 private:
   StringMap<unsigned> PassIDCountMap; ///< Map that counts instances of passes
-  DenseMap<PassInstanceID, Timer *> TimingData; ///< timers for pass instances
+  DenseMap<PassInstanceID, std::unique_ptr<Timer>> TimingData; ///< timers for pass instances
   TimerGroup TG;
 
 public:
@@ -93,8 +94,7 @@ PassTimingInfo::PassTimingInfo()
 PassTimingInfo::~PassTimingInfo() {
   // Deleting the timers accumulates their info into the TG member.
   // Then TG member is (implicitly) deleted, actually printing the report.
-  for (auto &I : TimingData)
-    delete I.getSecond();
+  TimingData.clear();
 }
 
 void PassTimingInfo::init() {
@@ -126,16 +126,16 @@ Timer *PassTimingInfo::getPassTimer(Pass
 
   init();
   sys::SmartScopedLock<true> Lock(*TimingInfoMutex);
-  Timer *&T = TimingData[Pass];
+  std::unique_ptr<Timer> &T = TimingData[Pass];
 
   if (!T) {
     StringRef PassName = P->getPassName();
     StringRef PassArgument;
     if (const PassInfo *PI = Pass::lookupPassInfo(P->getPassID()))
       PassArgument = PI->getPassArgument();
-    T = newPassTimer(PassArgument.empty() ? PassName : PassArgument, PassName);
+    T.reset(newPassTimer(PassArgument.empty() ? PassName : PassArgument, PassName));
   }
-  return T;
+  return T.get();
 }
 
 PassTimingInfo *PassTimingInfo::TheTimeInfo;




More information about the llvm-commits mailing list