[ManagedStatic] Avoid putting function pointers in template args.

This is super awkward, but GCC doesn't let us have template visible when
an argument is an inline function and -fvisibility-inlines-hidden is
used.

llvm-svn: 304175
diff --git a/llvm/lib/Support/Timer.cpp b/llvm/lib/Support/Timer.cpp
index ddcb057..dec6baf 100644
--- a/llvm/lib/Support/Timer.cpp
+++ b/llvm/lib/Support/Timer.cpp
@@ -73,9 +73,11 @@
 }
 
 namespace {
-void *CreateDefaultTimerGroup() {
-  return new TimerGroup("misc", "Miscellaneous Ungrouped Timers");
-}
+struct CreateDefaultTimerGroup {
+  static void *call() {
+    return new TimerGroup("misc", "Miscellaneous Ungrouped Timers");
+  }
+};
 } // namespace
 static ManagedStatic<TimerGroup, CreateDefaultTimerGroup> DefaultTimerGroup;
 static TimerGroup *getDefaultTimerGroup() { return &*DefaultTimerGroup; }