Aggregate pass execution time report by pass ID instead of pass instance.
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Fri, 30 Nov 2012 21:42:45 +0000 (21:42 +0000)
committerJakob Stoklund Olesen <stoklund@2pi.dk>
Fri, 30 Nov 2012 21:42:45 +0000 (21:42 +0000)
This avoids unidentified duplicates in the pass execution time report
when a pass runs more than once in the pass manager pipeline.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169039 91177308-0d34-0410-b5e6-96231b3b80d8

lib/VMCore/PassManager.cpp

index 11423926e666904f7416bb0ade0fb0fcc9dc6dd6..77e7913c832a39b3d1a96bb05505d02abfdbc077 100644 (file)
@@ -444,7 +444,7 @@ namespace {
 static ManagedStatic<sys::SmartMutex<true> > TimingInfoMutex;
 
 class TimingInfo {
-  DenseMap<Pass*, Timer*> TimingData;
+  DenseMap<AnalysisID, Timer*> TimingData;
   TimerGroup TG;
 public:
   // Use 'create' member to get this.
@@ -454,7 +454,7 @@ public:
   ~TimingInfo() {
     // Delete all of the timers, which accumulate their info into the
     // TimerGroup.
-    for (DenseMap<Pass*, Timer*>::iterator I = TimingData.begin(),
+    for (DenseMap<AnalysisID, Timer*>::iterator I = TimingData.begin(),
          E = TimingData.end(); I != E; ++I)
       delete I->second;
     // TimerGroup is deleted next, printing the report.
@@ -471,7 +471,7 @@ public:
       return 0;
 
     sys::SmartScopedLock<true> Lock(*TimingInfoMutex);
-    Timer *&T = TimingData[P];
+    Timer *&T = TimingData[P->getPassID()];
     if (T == 0)
       T = new Timer(P->getPassName(), TG);
     return T;