diff --git a/lib/Support/Timer.cpp b/lib/Support/Timer.cpp
index e4c085d..3672feb 100644
--- a/lib/Support/Timer.cpp
+++ b/lib/Support/Timer.cpp
@@ -17,7 +17,18 @@
 #include <functional>
 #include <fstream>
 
-static std::string LibSupportInfoOutputFilename;
+// getLibSupportInfoOutputFilename - This ugly hack is brought to you courtesy
+// of constructor/destructor ordering being unspecified by C++.  Basically the
+// problem is that a Statistic<> object gets destroyed, which ends up calling
+// 'GetLibSupportInfoOutputFile()' (below), which calls this function.
+// LibSupportInfoOutputFilename used to be a global variable, but sometimes it
+// would get destroyed before the Statistic, causing havoc to ensue.  We "fix"
+// this by creating the string the first time it is needed and never destroying
+// it.
+static std::string &getLibSupportInfoOutputFilename() {
+  static std::string *LibSupportInfoOutputFilename = new std::string();
+  return *LibSupportInfoOutputFilename;
+}
 
 namespace {
 #ifdef HAVE_MALLINFO
@@ -30,7 +41,7 @@
   cl::opt<std::string, true>
   InfoOutputFilename("info-output-file",
                      cl::desc("File to append -stats and -timer output to"),
-                     cl::Hidden, cl::location(LibSupportInfoOutputFilename));
+                   cl::Hidden, cl::location(getLibSupportInfoOutputFilename()));
 }
 
 static TimerGroup *DefaultTimerGroup = 0;
@@ -232,6 +243,7 @@
 
 // GetLibSupportInfoOutputFile - Return a file stream to print our output on...
 std::ostream *GetLibSupportInfoOutputFile() {
+  std::string &LibSupportInfoOutputFilename = getLibSupportInfoOutputFilename();
   if (LibSupportInfoOutputFilename.empty())
     return &std::cerr;
   if (LibSupportInfoOutputFilename == "-")
diff --git a/support/lib/Support/Timer.cpp b/support/lib/Support/Timer.cpp
index e4c085d..3672feb 100644
--- a/support/lib/Support/Timer.cpp
+++ b/support/lib/Support/Timer.cpp
@@ -17,7 +17,18 @@
 #include <functional>
 #include <fstream>
 
-static std::string LibSupportInfoOutputFilename;
+// getLibSupportInfoOutputFilename - This ugly hack is brought to you courtesy
+// of constructor/destructor ordering being unspecified by C++.  Basically the
+// problem is that a Statistic<> object gets destroyed, which ends up calling
+// 'GetLibSupportInfoOutputFile()' (below), which calls this function.
+// LibSupportInfoOutputFilename used to be a global variable, but sometimes it
+// would get destroyed before the Statistic, causing havoc to ensue.  We "fix"
+// this by creating the string the first time it is needed and never destroying
+// it.
+static std::string &getLibSupportInfoOutputFilename() {
+  static std::string *LibSupportInfoOutputFilename = new std::string();
+  return *LibSupportInfoOutputFilename;
+}
 
 namespace {
 #ifdef HAVE_MALLINFO
@@ -30,7 +41,7 @@
   cl::opt<std::string, true>
   InfoOutputFilename("info-output-file",
                      cl::desc("File to append -stats and -timer output to"),
-                     cl::Hidden, cl::location(LibSupportInfoOutputFilename));
+                   cl::Hidden, cl::location(getLibSupportInfoOutputFilename()));
 }
 
 static TimerGroup *DefaultTimerGroup = 0;
@@ -232,6 +243,7 @@
 
 // GetLibSupportInfoOutputFile - Return a file stream to print our output on...
 std::ostream *GetLibSupportInfoOutputFile() {
+  std::string &LibSupportInfoOutputFilename = getLibSupportInfoOutputFilename();
   if (LibSupportInfoOutputFilename.empty())
     return &std::cerr;
   if (LibSupportInfoOutputFilename == "-")
