summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Support/Timer.cpp
diff options
context:
space:
mode:
authorBenjamin Kramer <benny.kra@googlemail.com>2017-05-29 14:05:29 +0000
committerBenjamin Kramer <benny.kra@googlemail.com>2017-05-29 14:05:29 +0000
commit351779e9720e520603325c5a44218016c1bc6192 (patch)
treeab77ef52c6139194f3123abf54128dfb78cb3771 /llvm/lib/Support/Timer.cpp
parent1533eda111284a055aebeea92c54c05fb6d0939b (diff)
downloadbcm5719-llvm-351779e9720e520603325c5a44218016c1bc6192.tar.gz
bcm5719-llvm-351779e9720e520603325c5a44218016c1bc6192.zip
[Timer] Move DefaultTimerGroup into a ManagedStatic.
This used to be just leaked. r295370 made it use magic statics. This adds a global destructor, which is something we'd like to avoid. It also creates a weird situation where the mutex used by TimerGroup is re-created during global shutdown and leaked. Using a ManagedStatic here is also subtle as it relies on the mutex inside of ManagedStatic to be recursive. I've added a test for that in a previous change. llvm-svn: 304156
Diffstat (limited to 'llvm/lib/Support/Timer.cpp')
-rw-r--r--llvm/lib/Support/Timer.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/llvm/lib/Support/Timer.cpp b/llvm/lib/Support/Timer.cpp
index 8d68c6ae968..4cb04c164f0 100644
--- a/llvm/lib/Support/Timer.cpp
+++ b/llvm/lib/Support/Timer.cpp
@@ -72,10 +72,11 @@ std::unique_ptr<raw_fd_ostream> llvm::CreateInfoOutputFile() {
return llvm::make_unique<raw_fd_ostream>(2, false); // stderr.
}
-static TimerGroup *getDefaultTimerGroup() {
- static TimerGroup DefaultTimerGroup("misc", "Miscellaneous Ungrouped Timers");
- return &DefaultTimerGroup;
+static void *CreateDefaultTimerGroup() {
+ return new TimerGroup("misc", "Miscellaneous Ungrouped Timers");
}
+static ManagedStatic<TimerGroup, CreateDefaultTimerGroup> DefaultTimerGroup;
+static TimerGroup *getDefaultTimerGroup() { return &*DefaultTimerGroup; }
//===----------------------------------------------------------------------===//
// Timer Implementation
OpenPOWER on IntegriCloud