[llvm-commits] [llvm] r99873 - in /llvm/trunk: include/llvm/Support/Timer.h lib/Support/Statistic.cpp lib/Support/Timer.cpp

Chris Lattner sabre at nondot.org
Mon Mar 29 21:58:26 PDT 2010


Author: lattner
Date: Mon Mar 29 23:58:26 2010
New Revision: 99873

URL: http://llvm.org/viewvc/llvm-project?rev=99873&view=rev
Log:
if a timergroup is destroyed before its timers, print times.

Modified:
    llvm/trunk/include/llvm/Support/Timer.h
    llvm/trunk/lib/Support/Statistic.cpp
    llvm/trunk/lib/Support/Timer.cpp

Modified: llvm/trunk/include/llvm/Support/Timer.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/Timer.h?rev=99873&r1=99872&r2=99873&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Support/Timer.h (original)
+++ llvm/trunk/include/llvm/Support/Timer.h Mon Mar 29 23:58:26 2010
@@ -171,6 +171,7 @@
   explicit TimerGroup(const TimerGroup &TG) : FirstTimer(0) {
     operator=(TG);
   }
+  ~TimerGroup();
 
   void operator=(const TimerGroup &TG) {
     assert(TG.FirstTimer == 0 && FirstTimer == 0 &&
@@ -181,11 +182,6 @@
   
   void setName(const std::string &name) { Name = name; }
   
-  ~TimerGroup() {
-    assert(FirstTimer == 0 &&
-           "TimerGroup destroyed before all contained timers!");
-  }
-
   void PrintQueuedTimers(raw_ostream &OS);
   
 private:

Modified: llvm/trunk/lib/Support/Statistic.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Support/Statistic.cpp?rev=99873&r1=99872&r2=99873&view=diff
==============================================================================
--- llvm/trunk/lib/Support/Statistic.cpp (original)
+++ llvm/trunk/lib/Support/Statistic.cpp Mon Mar 29 23:58:26 2010
@@ -128,6 +128,6 @@
   OutStream << '\n';  // Flush the output stream...
   OutStream.flush();
   
-  if (&OutStream != &outs() && &OutStream != &errs() && &OutStream != &dbgs())
+  if (&OutStream != &outs() && &OutStream != &errs())
     delete &OutStream;   // Close the file.
 }

Modified: llvm/trunk/lib/Support/Timer.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Support/Timer.cpp?rev=99873&r1=99872&r2=99873&view=diff
==============================================================================
--- llvm/trunk/lib/Support/Timer.cpp (original)
+++ llvm/trunk/lib/Support/Timer.cpp Mon Mar 29 23:58:26 2010
@@ -237,14 +237,22 @@
 //   TimerGroup Implementation
 //===----------------------------------------------------------------------===//
 
+TimerGroup::~TimerGroup() {
+  // If the timer group is destroyed before the timers it owns, accumulate and
+  // print the timing data.
+  while (FirstTimer != 0)
+    removeTimer(*FirstTimer);
+}
+
+
 void TimerGroup::removeTimer(Timer &T) {
   sys::SmartScopedLock<true> L(*TimerLock);
   
   // If the timer was started, move its data to TimersToPrint.
-  if (T.Started) {
-    T.Started = false;
+  if (T.Started)
     TimersToPrint.push_back(std::make_pair(T.Time, T.Name));
-  }
+
+  T.TG = 0;
   
   // Unlink the timer from our list.
   *T.Prev = T.Next;
@@ -257,9 +265,9 @@
     return;
   
   raw_ostream *OutStream = GetLibSupportInfoOutputFile();
-
+  
   PrintQueuedTimers(*OutStream);
-
+  
   if (OutStream != &errs() && OutStream != &outs())
     delete OutStream;   // Close the file.
 }





More information about the llvm-commits mailing list