[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