[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