Instantiate Statistic<> in one place, not in every .o file that uses it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29971 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/include/llvm/ADT/Statistic.h b/include/llvm/ADT/Statistic.h
index dabacf4..99160da 100644
--- a/include/llvm/ADT/Statistic.h
+++ b/include/llvm/ADT/Statistic.h
@@ -24,7 +24,8 @@
#ifndef LLVM_ADT_STATISTIC_H
#define LLVM_ADT_STATISTIC_H
-#include <iosfwd>
+#include <ostream>
+#include "llvm/Support/Compiler.h"
namespace llvm {
@@ -85,6 +86,8 @@
const Statistic &operator/=(const DataType &V) { Value /= V; return *this; }
};
+EXTERN_TEMPLATE_INSTANTIATION(class Statistic<unsigned>);
+
} // End llvm namespace
#endif
diff --git a/lib/Support/Statistic.cpp b/lib/Support/Statistic.cpp
index d771f4d..56bbfe9 100644
--- a/lib/Support/Statistic.cpp
+++ b/lib/Support/Statistic.cpp
@@ -33,6 +33,8 @@
unsigned StatisticBase::NumStats = 0;
+TEMPLATE_INSTANTIATION(class Statistic<unsigned>);
+
// -stats - Command line option to cause transformations to emit stats about
// what they did.
//