Detemplatize the Statistic class.  The only type it is instantiated with
is 'unsigned'.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32279 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Transforms/Hello/Hello.cpp b/lib/Transforms/Hello/Hello.cpp
index a91360f..8324cbb 100644
--- a/lib/Transforms/Hello/Hello.cpp
+++ b/lib/Transforms/Hello/Hello.cpp
@@ -21,7 +21,7 @@
 using namespace llvm;
 
 namespace {
-  Statistic<> HelloCounter("hellocount",
+  Statistic HelloCounter("hellocount",
       "Counts number of functions greeted");
   // Hello - The first implementation, without getAnalysisUsage.
   struct Hello : public FunctionPass {
diff --git a/lib/Transforms/IPO/ArgumentPromotion.cpp b/lib/Transforms/IPO/ArgumentPromotion.cpp
index e984169..2a06310 100644
--- a/lib/Transforms/IPO/ArgumentPromotion.cpp
+++ b/lib/Transforms/IPO/ArgumentPromotion.cpp
@@ -48,11 +48,11 @@
 using namespace llvm;
 
 namespace {
-  Statistic<> NumArgumentsPromoted("argpromotion",
+  Statistic NumArgumentsPromoted("argpromotion",
                                    "Number of pointer arguments promoted");
-  Statistic<> NumAggregatesPromoted("argpromotion",
+  Statistic NumAggregatesPromoted("argpromotion",
                                     "Number of aggregate arguments promoted");
-  Statistic<> NumArgumentsDead("argpromotion",
+  Statistic NumArgumentsDead("argpromotion",
                                "Number of dead pointer args eliminated");
 
   /// ArgPromotion - The 'by reference' to 'by value' argument promotion pass.
diff --git a/lib/Transforms/IPO/ConstantMerge.cpp b/lib/Transforms/IPO/ConstantMerge.cpp
index aca42fe..7ba7b32 100644
--- a/lib/Transforms/IPO/ConstantMerge.cpp
+++ b/lib/Transforms/IPO/ConstantMerge.cpp
@@ -24,7 +24,7 @@
 using namespace llvm;
 
 namespace {
-  Statistic<> NumMerged("constmerge", "Number of global constants merged");
+  Statistic NumMerged("constmerge", "Number of global constants merged");
 
   struct ConstantMerge : public ModulePass {
     // run - For this pass, process all of the globals in the module,
diff --git a/lib/Transforms/IPO/DeadArgumentElimination.cpp b/lib/Transforms/IPO/DeadArgumentElimination.cpp
index 77ac873..d3326ac 100644
--- a/lib/Transforms/IPO/DeadArgumentElimination.cpp
+++ b/lib/Transforms/IPO/DeadArgumentElimination.cpp
@@ -33,9 +33,9 @@
 using namespace llvm;
 
 namespace {
-  Statistic<> NumArgumentsEliminated("deadargelim",
+  Statistic NumArgumentsEliminated("deadargelim",
                                      "Number of unread args removed");
-  Statistic<> NumRetValsEliminated("deadargelim",
+  Statistic NumRetValsEliminated("deadargelim",
                                    "Number of unused return values removed");
 
   /// DAE - The dead argument elimination pass.
diff --git a/lib/Transforms/IPO/DeadTypeElimination.cpp b/lib/Transforms/IPO/DeadTypeElimination.cpp
index 57e5fa3..e30e0ed 100644
--- a/lib/Transforms/IPO/DeadTypeElimination.cpp
+++ b/lib/Transforms/IPO/DeadTypeElimination.cpp
@@ -37,7 +37,7 @@
     }
   };
   RegisterPass<DTE> X("deadtypeelim", "Dead Type Elimination");
-  Statistic<>
+  Statistic
   NumKilled("deadtypeelim", "Number of unused typenames removed from symtab");
 }
 
diff --git a/lib/Transforms/IPO/FunctionResolution.cpp b/lib/Transforms/IPO/FunctionResolution.cpp
index a514b92..de3fe5b 100644
--- a/lib/Transforms/IPO/FunctionResolution.cpp
+++ b/lib/Transforms/IPO/FunctionResolution.cpp
@@ -33,8 +33,8 @@
 using namespace llvm;
 
 namespace {
-  Statistic<>NumResolved("funcresolve", "Number of varargs functions resolved");
-  Statistic<> NumGlobals("funcresolve", "Number of global variables resolved");
+  Statistic NumResolved("funcresolve", "Number of varargs functions resolved");
+  Statistic NumGlobals("funcresolve", "Number of global variables resolved");
 
   struct FunctionResolvingPass : public ModulePass {
     virtual void getAnalysisUsage(AnalysisUsage &AU) const {
diff --git a/lib/Transforms/IPO/GlobalDCE.cpp b/lib/Transforms/IPO/GlobalDCE.cpp
index 07296cf..ac23760 100644
--- a/lib/Transforms/IPO/GlobalDCE.cpp
+++ b/lib/Transforms/IPO/GlobalDCE.cpp
@@ -24,8 +24,8 @@
 using namespace llvm;
 
 namespace {
-  Statistic<> NumFunctions("globaldce","Number of functions removed");
-  Statistic<> NumVariables("globaldce","Number of global variables removed");
+  Statistic NumFunctions("globaldce","Number of functions removed");
+  Statistic NumVariables("globaldce","Number of global variables removed");
 
   struct GlobalDCE : public ModulePass {
     // run - Do the GlobalDCE pass on the specified module, optionally updating
diff --git a/lib/Transforms/IPO/GlobalOpt.cpp b/lib/Transforms/IPO/GlobalOpt.cpp
index af3bf6a..a0dc937 100644
--- a/lib/Transforms/IPO/GlobalOpt.cpp
+++ b/lib/Transforms/IPO/GlobalOpt.cpp
@@ -32,21 +32,21 @@
 using namespace llvm;
 
 namespace {
-  Statistic<> NumMarked   ("globalopt", "Number of globals marked constant");
-  Statistic<> NumSRA      ("globalopt", "Number of aggregate globals broken "
+  Statistic NumMarked   ("globalopt", "Number of globals marked constant");
+  Statistic NumSRA      ("globalopt", "Number of aggregate globals broken "
                            "into scalars");
-  Statistic<> NumHeapSRA  ("globalopt", "Number of heap objects SRA'd");
-  Statistic<> NumSubstitute("globalopt",
+  Statistic NumHeapSRA  ("globalopt", "Number of heap objects SRA'd");
+  Statistic NumSubstitute("globalopt",
                         "Number of globals with initializers stored into them");
-  Statistic<> NumDeleted  ("globalopt", "Number of globals deleted");
-  Statistic<> NumFnDeleted("globalopt", "Number of functions deleted");
-  Statistic<> NumGlobUses ("globalopt", "Number of global uses devirtualized");
-  Statistic<> NumLocalized("globalopt", "Number of globals localized");
-  Statistic<> NumShrunkToBool("globalopt",
+  Statistic NumDeleted  ("globalopt", "Number of globals deleted");
+  Statistic NumFnDeleted("globalopt", "Number of functions deleted");
+  Statistic NumGlobUses ("globalopt", "Number of global uses devirtualized");
+  Statistic NumLocalized("globalopt", "Number of globals localized");
+  Statistic NumShrunkToBool("globalopt",
                               "Number of global vars shrunk to booleans");
-  Statistic<> NumFastCallFns("globalopt",
+  Statistic NumFastCallFns("globalopt",
                              "Number of functions converted to fastcc");
-  Statistic<> NumCtorsEvaluated("globalopt","Number of static ctors evaluated");
+  Statistic NumCtorsEvaluated("globalopt","Number of static ctors evaluated");
 
   struct GlobalOpt : public ModulePass {
     virtual void getAnalysisUsage(AnalysisUsage &AU) const {
diff --git a/lib/Transforms/IPO/IPConstantPropagation.cpp b/lib/Transforms/IPO/IPConstantPropagation.cpp
index 4713fb6..3f673ae 100644
--- a/lib/Transforms/IPO/IPConstantPropagation.cpp
+++ b/lib/Transforms/IPO/IPConstantPropagation.cpp
@@ -25,9 +25,9 @@
 using namespace llvm;
 
 namespace {
-  Statistic<> NumArgumentsProped("ipconstprop",
+  Statistic NumArgumentsProped("ipconstprop",
                                  "Number of args turned into constants");
-  Statistic<> NumReturnValProped("ipconstprop",
+  Statistic NumReturnValProped("ipconstprop",
                               "Number of return values turned into constants");
 
   /// IPCP - The interprocedural constant propagation pass
diff --git a/lib/Transforms/IPO/IndMemRemoval.cpp b/lib/Transforms/IPO/IndMemRemoval.cpp
index 0779a54..9d3c147 100644
--- a/lib/Transforms/IPO/IndMemRemoval.cpp
+++ b/lib/Transforms/IPO/IndMemRemoval.cpp
@@ -28,8 +28,8 @@
 using namespace llvm;
 
 namespace {
-  Statistic<> NumBounceSites("indmemrem", "Number of sites modified");
-  Statistic<> NumBounce  ("indmemrem", "Number of bounce functions created");
+  Statistic NumBounceSites("indmemrem", "Number of sites modified");
+  Statistic NumBounce  ("indmemrem", "Number of bounce functions created");
 
   class IndMemRemPass : public ModulePass {
 
diff --git a/lib/Transforms/IPO/Inliner.cpp b/lib/Transforms/IPO/Inliner.cpp
index ea43dc2..bd5fb98 100644
--- a/lib/Transforms/IPO/Inliner.cpp
+++ b/lib/Transforms/IPO/Inliner.cpp
@@ -26,8 +26,8 @@
 using namespace llvm;
 
 namespace {
-  Statistic<> NumInlined("inline", "Number of functions inlined");
-  Statistic<> NumDeleted("inline",
+  Statistic NumInlined("inline", "Number of functions inlined");
+  Statistic NumDeleted("inline",
                        "Number of functions deleted because all callers found");
   cl::opt<unsigned>             // FIXME: 200 is VERY conservative
   InlineLimit("inline-threshold", cl::Hidden, cl::init(200),
diff --git a/lib/Transforms/IPO/Internalize.cpp b/lib/Transforms/IPO/Internalize.cpp
index c19e2f2..3e7dcc6 100644
--- a/lib/Transforms/IPO/Internalize.cpp
+++ b/lib/Transforms/IPO/Internalize.cpp
@@ -24,8 +24,8 @@
 using namespace llvm;
 
 namespace {
-  Statistic<> NumFunctions("internalize", "Number of functions internalized");
-  Statistic<> NumGlobals  ("internalize", "Number of global vars internalized");
+  Statistic NumFunctions("internalize", "Number of functions internalized");
+  Statistic NumGlobals  ("internalize", "Number of global vars internalized");
 
   // APIFile - A file which contains a list of symbols that should not be marked
   // external.
diff --git a/lib/Transforms/IPO/LoopExtractor.cpp b/lib/Transforms/IPO/LoopExtractor.cpp
index a4ce585..f77f9f3 100644
--- a/lib/Transforms/IPO/LoopExtractor.cpp
+++ b/lib/Transforms/IPO/LoopExtractor.cpp
@@ -26,7 +26,7 @@
 using namespace llvm;
 
 namespace {
-  Statistic<> NumExtracted("loop-extract", "Number of loops extracted");
+  Statistic NumExtracted("loop-extract", "Number of loops extracted");
 
   // FIXME: This is not a function pass, but the PassManager doesn't allow
   // Module passes to require FunctionPasses, so we can't get loop info if we're
diff --git a/lib/Transforms/IPO/LowerSetJmp.cpp b/lib/Transforms/IPO/LowerSetJmp.cpp
index 3aac392..0417a5c 100644
--- a/lib/Transforms/IPO/LowerSetJmp.cpp
+++ b/lib/Transforms/IPO/LowerSetJmp.cpp
@@ -50,13 +50,13 @@
 using namespace llvm;
 
 namespace {
-  Statistic<> LongJmpsTransformed("lowersetjmp",
+  Statistic LongJmpsTransformed("lowersetjmp",
                                   "Number of longjmps transformed");
-  Statistic<> SetJmpsTransformed("lowersetjmp",
+  Statistic SetJmpsTransformed("lowersetjmp",
                                  "Number of setjmps transformed");
-  Statistic<> CallsTransformed("lowersetjmp",
+  Statistic CallsTransformed("lowersetjmp",
                                "Number of calls invokified");
-  Statistic<> InvokesTransformed("lowersetjmp",
+  Statistic InvokesTransformed("lowersetjmp",
                                  "Number of invokes modified");
 
   //===--------------------------------------------------------------------===//
diff --git a/lib/Transforms/IPO/PruneEH.cpp b/lib/Transforms/IPO/PruneEH.cpp
index 8ba0ac0..1dec7d7 100644
--- a/lib/Transforms/IPO/PruneEH.cpp
+++ b/lib/Transforms/IPO/PruneEH.cpp
@@ -28,8 +28,8 @@
 using namespace llvm;
 
 namespace {
-  Statistic<> NumRemoved("prune-eh", "Number of invokes removed");
-  Statistic<> NumUnreach("prune-eh", "Number of noreturn calls optimized");
+  Statistic NumRemoved("prune-eh", "Number of invokes removed");
+  Statistic NumUnreach("prune-eh", "Number of noreturn calls optimized");
 
   struct PruneEH : public CallGraphSCCPass {
     /// DoesNotUnwind - This set contains all of the functions which we have
diff --git a/lib/Transforms/IPO/RaiseAllocations.cpp b/lib/Transforms/IPO/RaiseAllocations.cpp
index 584a2e9..77a9a3d 100644
--- a/lib/Transforms/IPO/RaiseAllocations.cpp
+++ b/lib/Transforms/IPO/RaiseAllocations.cpp
@@ -23,7 +23,7 @@
 using namespace llvm;
 
 namespace {
-  Statistic<> NumRaised("raiseallocs", "Number of allocations raised");
+  Statistic NumRaised("raiseallocs", "Number of allocations raised");
 
   // RaiseAllocations - Turn %malloc and %free calls into the appropriate
   // instruction.
diff --git a/lib/Transforms/IPO/SimplifyLibCalls.cpp b/lib/Transforms/IPO/SimplifyLibCalls.cpp
index fb22a2f..f989d1d 100644
--- a/lib/Transforms/IPO/SimplifyLibCalls.cpp
+++ b/lib/Transforms/IPO/SimplifyLibCalls.cpp
@@ -35,7 +35,7 @@
 
 /// This statistic keeps track of the total number of library calls that have
 /// been simplified regardless of which call it is.
-Statistic<> SimplifiedLibCalls("simplify-libcalls",
+Statistic SimplifiedLibCalls("simplify-libcalls",
   "Number of library calls simplified");
 
 // Forward declarations
@@ -68,7 +68,7 @@
   LibCallOptimization **Prev, *Next;
   const char *FunctionName; ///< Name of the library call we optimize
 #ifndef NDEBUG
-  Statistic<> occurrences; ///< debug statistic (-debug-only=simplify-libcalls)
+  Statistic occurrences; ///< debug statistic (-debug-only=simplify-libcalls)
 #endif
 public:
   /// The \p fname argument must be the name of the library function being
diff --git a/lib/Transforms/Instrumentation/RSProfiling.cpp b/lib/Transforms/Instrumentation/RSProfiling.cpp
index 4c6f264..c14915c 100644
--- a/lib/Transforms/Instrumentation/RSProfiling.cpp
+++ b/lib/Transforms/Instrumentation/RSProfiling.cpp
@@ -52,7 +52,7 @@
 using namespace llvm;
 
 namespace {
-  Statistic<> NumBackEdges("bedge", "Number of BackEdges");
+  Statistic NumBackEdges("bedge", "Number of BackEdges");
 
   enum RandomMeth {
     GBV, GBVO, HOSTCC
diff --git a/lib/Transforms/LevelRaise.cpp b/lib/Transforms/LevelRaise.cpp
index c8635e1..5662269 100644
--- a/lib/Transforms/LevelRaise.cpp
+++ b/lib/Transforms/LevelRaise.cpp
@@ -34,22 +34,22 @@
 StartInst("raise-start-inst", cl::Hidden, cl::value_desc("inst name"),
        cl::desc("Start raise pass at the instruction with the specified name"));
 
-static Statistic<>
+static Statistic
 NumLoadStorePeepholes("raise", "Number of load/store peepholes");
 
-static Statistic<>
+static Statistic
 NumGEPInstFormed("raise", "Number of other getelementptr's formed");
 
-static Statistic<>
+static Statistic
 NumExprTreesConv("raise", "Number of expression trees converted");
 
-static Statistic<>
+static Statistic
 NumCastOfCast("raise", "Number of cast-of-self removed");
 
-static Statistic<>
+static Statistic
 NumDCEorCP("raise", "Number of insts DCEd or constprop'd");
 
-static Statistic<>
+static Statistic
 NumVarargCallChanges("raise", "Number of vararg call peepholes");
 
 #define PRINT_PEEPHOLE(ID, NUM, I)            \
diff --git a/lib/Transforms/Scalar/ADCE.cpp b/lib/Transforms/Scalar/ADCE.cpp
index 76a09f8..536b61f 100644
--- a/lib/Transforms/Scalar/ADCE.cpp
+++ b/lib/Transforms/Scalar/ADCE.cpp
@@ -30,9 +30,9 @@
 using namespace llvm;
 
 namespace {
-  Statistic<> NumBlockRemoved("adce", "Number of basic blocks removed");
-  Statistic<> NumInstRemoved ("adce", "Number of instructions removed");
-  Statistic<> NumCallRemoved ("adce", "Number of calls and invokes removed");
+  Statistic NumBlockRemoved("adce", "Number of basic blocks removed");
+  Statistic NumInstRemoved ("adce", "Number of instructions removed");
+  Statistic NumCallRemoved ("adce", "Number of calls and invokes removed");
 
 //===----------------------------------------------------------------------===//
 // ADCE Class
diff --git a/lib/Transforms/Scalar/BasicBlockPlacement.cpp b/lib/Transforms/Scalar/BasicBlockPlacement.cpp
index 492fba2..135d6b3 100644
--- a/lib/Transforms/Scalar/BasicBlockPlacement.cpp
+++ b/lib/Transforms/Scalar/BasicBlockPlacement.cpp
@@ -36,7 +36,7 @@
 using namespace llvm;
 
 namespace {
-  Statistic<> NumMoved("block-placement", "Number of basic blocks moved");
+  Statistic NumMoved("block-placement", "Number of basic blocks moved");
 
   struct BlockPlacement : public FunctionPass {
     virtual bool runOnFunction(Function &F);
diff --git a/lib/Transforms/Scalar/CondPropagate.cpp b/lib/Transforms/Scalar/CondPropagate.cpp
index 39f699a..4e07614 100644
--- a/lib/Transforms/Scalar/CondPropagate.cpp
+++ b/lib/Transforms/Scalar/CondPropagate.cpp
@@ -26,9 +26,9 @@
 using namespace llvm;
 
 namespace {
-  Statistic<>
+  Statistic
   NumBrThread("condprop", "Number of CFG edges threaded through branches");
-  Statistic<>
+  Statistic
   NumSwThread("condprop", "Number of CFG edges threaded through switches");
 
   struct CondProp : public FunctionPass {
diff --git a/lib/Transforms/Scalar/ConstantProp.cpp b/lib/Transforms/Scalar/ConstantProp.cpp
index 8f3baf9..54ccccc 100644
--- a/lib/Transforms/Scalar/ConstantProp.cpp
+++ b/lib/Transforms/Scalar/ConstantProp.cpp
@@ -29,7 +29,7 @@
 using namespace llvm;
 
 namespace {
-  Statistic<> NumInstKilled("constprop", "Number of instructions killed");
+  Statistic NumInstKilled("constprop", "Number of instructions killed");
 
   struct ConstantPropagation : public FunctionPass {
     bool runOnFunction(Function &F);
diff --git a/lib/Transforms/Scalar/CorrelatedExprs.cpp b/lib/Transforms/Scalar/CorrelatedExprs.cpp
index 3477007..9024f1c 100644
--- a/lib/Transforms/Scalar/CorrelatedExprs.cpp
+++ b/lib/Transforms/Scalar/CorrelatedExprs.cpp
@@ -46,9 +46,9 @@
 using namespace llvm;
 
 namespace {
-  Statistic<> NumSetCCRemoved("cee", "Number of setcc instruction eliminated");
-  Statistic<> NumOperandsCann("cee", "Number of operands canonicalized");
-  Statistic<> BranchRevectors("cee", "Number of branches revectored");
+  Statistic NumSetCCRemoved("cee", "Number of setcc instruction eliminated");
+  Statistic NumOperandsCann("cee", "Number of operands canonicalized");
+  Statistic BranchRevectors("cee", "Number of branches revectored");
 
   class ValueInfo;
   class Relation {
diff --git a/lib/Transforms/Scalar/DCE.cpp b/lib/Transforms/Scalar/DCE.cpp
index a4a1104..3304527 100644
--- a/lib/Transforms/Scalar/DCE.cpp
+++ b/lib/Transforms/Scalar/DCE.cpp
@@ -26,8 +26,8 @@
 using namespace llvm;
 
 namespace {
-  Statistic<> DIEEliminated("die", "Number of insts removed");
-  Statistic<> DCEEliminated("dce", "Number of insts removed");
+  Statistic DIEEliminated("die", "Number of insts removed");
+  Statistic DCEEliminated("dce", "Number of insts removed");
 
   //===--------------------------------------------------------------------===//
   // DeadInstElimination pass implementation
diff --git a/lib/Transforms/Scalar/DeadStoreElimination.cpp b/lib/Transforms/Scalar/DeadStoreElimination.cpp
index 6684b21..8057ebd 100644
--- a/lib/Transforms/Scalar/DeadStoreElimination.cpp
+++ b/lib/Transforms/Scalar/DeadStoreElimination.cpp
@@ -28,8 +28,8 @@
 using namespace llvm;
 
 namespace {
-  Statistic<> NumStores("dse", "Number of stores deleted");
-  Statistic<> NumOther ("dse", "Number of other instrs removed");
+  Statistic NumStores("dse", "Number of stores deleted");
+  Statistic NumOther ("dse", "Number of other instrs removed");
 
   struct DSE : public FunctionPass {
 
diff --git a/lib/Transforms/Scalar/GCSE.cpp b/lib/Transforms/Scalar/GCSE.cpp
index 7dbdf0a..a6d57ce 100644
--- a/lib/Transforms/Scalar/GCSE.cpp
+++ b/lib/Transforms/Scalar/GCSE.cpp
@@ -28,12 +28,12 @@
 using namespace llvm;
 
 namespace {
-  Statistic<> NumInstRemoved("gcse", "Number of instructions removed");
-  Statistic<> NumLoadRemoved("gcse", "Number of loads removed");
-  Statistic<> NumCallRemoved("gcse", "Number of calls removed");
-  Statistic<> NumNonInsts   ("gcse", "Number of instructions removed due "
+  Statistic NumInstRemoved("gcse", "Number of instructions removed");
+  Statistic NumLoadRemoved("gcse", "Number of loads removed");
+  Statistic NumCallRemoved("gcse", "Number of calls removed");
+  Statistic NumNonInsts   ("gcse", "Number of instructions removed due "
                              "to non-instruction values");
-  Statistic<> NumArgsRepl   ("gcse", "Number of function arguments replaced "
+  Statistic NumArgsRepl   ("gcse", "Number of function arguments replaced "
                              "with constant values");
 
   struct GCSE : public FunctionPass {
diff --git a/lib/Transforms/Scalar/IndVarSimplify.cpp b/lib/Transforms/Scalar/IndVarSimplify.cpp
index cd674ae..e17faa1 100644
--- a/lib/Transforms/Scalar/IndVarSimplify.cpp
+++ b/lib/Transforms/Scalar/IndVarSimplify.cpp
@@ -52,11 +52,11 @@
 using namespace llvm;
 
 namespace {
-  Statistic<> NumRemoved ("indvars", "Number of aux indvars removed");
-  Statistic<> NumPointer ("indvars", "Number of pointer indvars promoted");
-  Statistic<> NumInserted("indvars", "Number of canonical indvars added");
-  Statistic<> NumReplaced("indvars", "Number of exit values replaced");
-  Statistic<> NumLFTR    ("indvars", "Number of loop exit tests replaced");
+  Statistic NumRemoved ("indvars", "Number of aux indvars removed");
+  Statistic NumPointer ("indvars", "Number of pointer indvars promoted");
+  Statistic NumInserted("indvars", "Number of canonical indvars added");
+  Statistic NumReplaced("indvars", "Number of exit values replaced");
+  Statistic NumLFTR    ("indvars", "Number of loop exit tests replaced");
 
   class IndVarSimplify : public FunctionPass {
     LoopInfo        *LI;
diff --git a/lib/Transforms/Scalar/InstructionCombining.cpp b/lib/Transforms/Scalar/InstructionCombining.cpp
index b12c6b5..de11c52 100644
--- a/lib/Transforms/Scalar/InstructionCombining.cpp
+++ b/lib/Transforms/Scalar/InstructionCombining.cpp
@@ -56,11 +56,11 @@
 using namespace llvm::PatternMatch;
 
 namespace {
-  Statistic<> NumCombined ("instcombine", "Number of insts combined");
-  Statistic<> NumConstProp("instcombine", "Number of constant folds");
-  Statistic<> NumDeadInst ("instcombine", "Number of dead inst eliminated");
-  Statistic<> NumDeadStore("instcombine", "Number of dead stores eliminated");
-  Statistic<> NumSunkInst ("instcombine", "Number of instructions sunk");
+  Statistic NumCombined ("instcombine", "Number of insts combined");
+  Statistic NumConstProp("instcombine", "Number of constant folds");
+  Statistic NumDeadInst ("instcombine", "Number of dead inst eliminated");
+  Statistic NumDeadStore("instcombine", "Number of dead stores eliminated");
+  Statistic NumSunkInst ("instcombine", "Number of instructions sunk");
 
   class VISIBILITY_HIDDEN InstCombiner
     : public FunctionPass,
diff --git a/lib/Transforms/Scalar/LICM.cpp b/lib/Transforms/Scalar/LICM.cpp
index 5816e5c..4783388 100644
--- a/lib/Transforms/Scalar/LICM.cpp
+++ b/lib/Transforms/Scalar/LICM.cpp
@@ -54,11 +54,11 @@
   DisablePromotion("disable-licm-promotion", cl::Hidden,
                    cl::desc("Disable memory promotion in LICM pass"));
 
-  Statistic<> NumSunk("licm", "Number of instructions sunk out of loop");
-  Statistic<> NumHoisted("licm", "Number of instructions hoisted out of loop");
-  Statistic<> NumMovedLoads("licm", "Number of load insts hoisted or sunk");
-  Statistic<> NumMovedCalls("licm", "Number of call insts hoisted or sunk");
-  Statistic<> NumPromoted("licm",
+  Statistic NumSunk("licm", "Number of instructions sunk out of loop");
+  Statistic NumHoisted("licm", "Number of instructions hoisted out of loop");
+  Statistic NumMovedLoads("licm", "Number of load insts hoisted or sunk");
+  Statistic NumMovedCalls("licm", "Number of call insts hoisted or sunk");
+  Statistic NumPromoted("licm",
                           "Number of memory locations promoted to registers");
 
   struct LICM : public FunctionPass {
diff --git a/lib/Transforms/Scalar/LoopStrengthReduce.cpp b/lib/Transforms/Scalar/LoopStrengthReduce.cpp
index f6551ee..a262cf7 100644
--- a/lib/Transforms/Scalar/LoopStrengthReduce.cpp
+++ b/lib/Transforms/Scalar/LoopStrengthReduce.cpp
@@ -38,9 +38,9 @@
 using namespace llvm;
 
 namespace {
-  Statistic<> NumReduced ("loop-reduce", "Number of GEPs strength reduced");
-  Statistic<> NumInserted("loop-reduce", "Number of PHIs inserted");
-  Statistic<> NumVariable("loop-reduce","Number of PHIs with variable strides");
+  Statistic NumReduced ("loop-reduce", "Number of GEPs strength reduced");
+  Statistic NumInserted("loop-reduce", "Number of PHIs inserted");
+  Statistic NumVariable("loop-reduce","Number of PHIs with variable strides");
 
   /// IVStrideUse - Keep track of one use of a strided induction variable, where
   /// the stride is stored externally.  The Offset member keeps track of the 
diff --git a/lib/Transforms/Scalar/LoopUnroll.cpp b/lib/Transforms/Scalar/LoopUnroll.cpp
index 9d14891..45a4899 100644
--- a/lib/Transforms/Scalar/LoopUnroll.cpp
+++ b/lib/Transforms/Scalar/LoopUnroll.cpp
@@ -37,7 +37,7 @@
 using namespace llvm;
 
 namespace {
-  Statistic<> NumUnrolled("loop-unroll", "Number of loops completely unrolled");
+  Statistic NumUnrolled("loop-unroll", "Number of loops completely unrolled");
 
   cl::opt<unsigned>
   UnrollThreshold("unroll-threshold", cl::init(100), cl::Hidden,
diff --git a/lib/Transforms/Scalar/LoopUnswitch.cpp b/lib/Transforms/Scalar/LoopUnswitch.cpp
index 8b2f6cf..3079ce9 100644
--- a/lib/Transforms/Scalar/LoopUnswitch.cpp
+++ b/lib/Transforms/Scalar/LoopUnswitch.cpp
@@ -44,12 +44,12 @@
 using namespace llvm;
 
 namespace {
-  Statistic<> NumBranches("loop-unswitch", "Number of branches unswitched");
-  Statistic<> NumSwitches("loop-unswitch", "Number of switches unswitched");
-  Statistic<> NumSelects ("loop-unswitch", "Number of selects unswitched");
-  Statistic<> NumTrivial ("loop-unswitch",
+  Statistic NumBranches("loop-unswitch", "Number of branches unswitched");
+  Statistic NumSwitches("loop-unswitch", "Number of switches unswitched");
+  Statistic NumSelects ("loop-unswitch", "Number of selects unswitched");
+  Statistic NumTrivial ("loop-unswitch",
                           "Number of unswitches that are trivial");
-  Statistic<> NumSimplify("loop-unswitch", 
+  Statistic NumSimplify("loop-unswitch", 
                           "Number of simplifications of unswitched code");
   cl::opt<unsigned>
   Threshold("loop-unswitch-threshold", cl::desc("Max loop size to unswitch"),
diff --git a/lib/Transforms/Scalar/PredicateSimplifier.cpp b/lib/Transforms/Scalar/PredicateSimplifier.cpp
index 7d0a404..55e8579 100644
--- a/lib/Transforms/Scalar/PredicateSimplifier.cpp
+++ b/lib/Transforms/Scalar/PredicateSimplifier.cpp
@@ -93,11 +93,11 @@
 using namespace llvm;
 
 namespace {
-  Statistic<>
+  Statistic
   NumVarsReplaced("predsimplify", "Number of argument substitutions");
-  Statistic<>
+  Statistic
   NumInstruction("predsimplify", "Number of instructions removed");
-  Statistic<>
+  Statistic
   NumSimple("predsimplify", "Number of simple replacements");
 
   /// The InequalityGraph stores the relationships between values.
diff --git a/lib/Transforms/Scalar/Reassociate.cpp b/lib/Transforms/Scalar/Reassociate.cpp
index b0637ba..09f2748 100644
--- a/lib/Transforms/Scalar/Reassociate.cpp
+++ b/lib/Transforms/Scalar/Reassociate.cpp
@@ -37,11 +37,11 @@
 using namespace llvm;
 
 namespace {
-  Statistic<> NumLinear ("reassociate","Number of insts linearized");
-  Statistic<> NumChanged("reassociate","Number of insts reassociated");
-  Statistic<> NumSwapped("reassociate","Number of insts with operands swapped");
-  Statistic<> NumAnnihil("reassociate","Number of expr tree annihilated");
-  Statistic<> NumFactor ("reassociate","Number of multiplies factored");
+  Statistic NumLinear ("reassociate","Number of insts linearized");
+  Statistic NumChanged("reassociate","Number of insts reassociated");
+  Statistic NumSwapped("reassociate","Number of insts with operands swapped");
+  Statistic NumAnnihil("reassociate","Number of expr tree annihilated");
+  Statistic NumFactor ("reassociate","Number of multiplies factored");
 
   struct ValueEntry {
     unsigned Rank;
diff --git a/lib/Transforms/Scalar/Reg2Mem.cpp b/lib/Transforms/Scalar/Reg2Mem.cpp
index 10d05ee..d43e5b3 100644
--- a/lib/Transforms/Scalar/Reg2Mem.cpp
+++ b/lib/Transforms/Scalar/Reg2Mem.cpp
@@ -30,7 +30,7 @@
 using namespace llvm;
 
 namespace {
-  Statistic<> NumDemoted("reg2mem", "Number of registers demoted");
+  Statistic NumDemoted("reg2mem", "Number of registers demoted");
   
   struct RegToMem : public FunctionPass {
 
diff --git a/lib/Transforms/Scalar/SCCP.cpp b/lib/Transforms/Scalar/SCCP.cpp
index cf91b57..a5f7db8 100644
--- a/lib/Transforms/Scalar/SCCP.cpp
+++ b/lib/Transforms/Scalar/SCCP.cpp
@@ -1080,8 +1080,8 @@
 
 
 namespace {
-  Statistic<> NumInstRemoved("sccp", "Number of instructions removed");
-  Statistic<> NumDeadBlocks ("sccp", "Number of basic blocks unreachable");
+  Statistic NumInstRemoved("sccp", "Number of instructions removed");
+  Statistic NumDeadBlocks ("sccp", "Number of basic blocks unreachable");
 
   //===--------------------------------------------------------------------===//
   //
@@ -1191,11 +1191,11 @@
 }
 
 namespace {
-  Statistic<> IPNumInstRemoved("ipsccp", "Number of instructions removed");
-  Statistic<> IPNumDeadBlocks ("ipsccp", "Number of basic blocks unreachable");
-  Statistic<> IPNumArgsElimed ("ipsccp",
+  Statistic IPNumInstRemoved("ipsccp", "Number of instructions removed");
+  Statistic IPNumDeadBlocks ("ipsccp", "Number of basic blocks unreachable");
+  Statistic IPNumArgsElimed ("ipsccp",
                                "Number of arguments constant propagated");
-  Statistic<> IPNumGlobalConst("ipsccp",
+  Statistic IPNumGlobalConst("ipsccp",
                                "Number of globals found to be constant");
 
   //===--------------------------------------------------------------------===//
diff --git a/lib/Transforms/Scalar/ScalarReplAggregates.cpp b/lib/Transforms/Scalar/ScalarReplAggregates.cpp
index b62df63..959b192 100644
--- a/lib/Transforms/Scalar/ScalarReplAggregates.cpp
+++ b/lib/Transforms/Scalar/ScalarReplAggregates.cpp
@@ -37,9 +37,9 @@
 using namespace llvm;
 
 namespace {
-  Statistic<> NumReplaced("scalarrepl", "Number of allocas broken up");
-  Statistic<> NumPromoted("scalarrepl", "Number of allocas promoted");
-  Statistic<> NumConverted("scalarrepl",
+  Statistic NumReplaced("scalarrepl", "Number of allocas broken up");
+  Statistic NumPromoted("scalarrepl", "Number of allocas promoted");
+  Statistic NumConverted("scalarrepl",
                            "Number of aggregates converted to scalar");
 
   struct VISIBILITY_HIDDEN SROA : public FunctionPass {
diff --git a/lib/Transforms/Scalar/SimplifyCFG.cpp b/lib/Transforms/Scalar/SimplifyCFG.cpp
index 6b42f1c..0da53a3 100644
--- a/lib/Transforms/Scalar/SimplifyCFG.cpp
+++ b/lib/Transforms/Scalar/SimplifyCFG.cpp
@@ -30,7 +30,7 @@
 using namespace llvm;
 
 namespace {
-  Statistic<> NumSimpl("cfgsimplify", "Number of blocks simplified");
+  Statistic NumSimpl("cfgsimplify", "Number of blocks simplified");
 
   struct CFGSimplifyPass : public FunctionPass {
     virtual bool runOnFunction(Function &F);
diff --git a/lib/Transforms/Scalar/TailDuplication.cpp b/lib/Transforms/Scalar/TailDuplication.cpp
index 9e98273..6708418 100644
--- a/lib/Transforms/Scalar/TailDuplication.cpp
+++ b/lib/Transforms/Scalar/TailDuplication.cpp
@@ -37,9 +37,9 @@
   cl::opt<unsigned>
   Threshold("taildup-threshold", cl::desc("Max block size to tail duplicate"),
             cl::init(6), cl::Hidden);
-  Statistic<> NumEliminated("tailduplicate",
+  Statistic NumEliminated("tailduplicate",
                             "Number of unconditional branches eliminated");
-  Statistic<> NumPHINodes("tailduplicate", "Number of phi nodes inserted");
+  Statistic NumPHINodes("tailduplicate", "Number of phi nodes inserted");
 
   class TailDup : public FunctionPass {
     bool runOnFunction(Function &F);
diff --git a/lib/Transforms/Scalar/TailRecursionElimination.cpp b/lib/Transforms/Scalar/TailRecursionElimination.cpp
index e732392..aca5430 100644
--- a/lib/Transforms/Scalar/TailRecursionElimination.cpp
+++ b/lib/Transforms/Scalar/TailRecursionElimination.cpp
@@ -61,8 +61,8 @@
 using namespace llvm;
 
 namespace {
-  Statistic<> NumEliminated("tailcallelim", "Number of tail calls removed");
-  Statistic<> NumAccumAdded("tailcallelim","Number of accumulators introduced");
+  Statistic NumEliminated("tailcallelim", "Number of tail calls removed");
+  Statistic NumAccumAdded("tailcallelim","Number of accumulators introduced");
 
   struct TailCallElim : public FunctionPass {
     virtual bool runOnFunction(Function &F);
diff --git a/lib/Transforms/Utils/BreakCriticalEdges.cpp b/lib/Transforms/Utils/BreakCriticalEdges.cpp
index 58f0347..668d19d 100644
--- a/lib/Transforms/Utils/BreakCriticalEdges.cpp
+++ b/lib/Transforms/Utils/BreakCriticalEdges.cpp
@@ -30,7 +30,7 @@
 using namespace llvm;
 
 namespace {
-  Statistic<> NumBroken("break-crit-edges", "Number of blocks inserted");
+  Statistic NumBroken("break-crit-edges", "Number of blocks inserted");
 
   struct VISIBILITY_HIDDEN BreakCriticalEdges : public FunctionPass {
     virtual bool runOnFunction(Function &F);
diff --git a/lib/Transforms/Utils/LCSSA.cpp b/lib/Transforms/Utils/LCSSA.cpp
index ca7aff9..fe98903 100644
--- a/lib/Transforms/Utils/LCSSA.cpp
+++ b/lib/Transforms/Utils/LCSSA.cpp
@@ -43,7 +43,7 @@
 using namespace llvm;
 
 namespace {
-  static Statistic<> NumLCSSA("lcssa",
+  static Statistic NumLCSSA("lcssa",
                               "Number of live out of a loop variables");
   
   struct LCSSA : public FunctionPass {
diff --git a/lib/Transforms/Utils/LoopSimplify.cpp b/lib/Transforms/Utils/LoopSimplify.cpp
index 19293f4..7796022 100644
--- a/lib/Transforms/Utils/LoopSimplify.cpp
+++ b/lib/Transforms/Utils/LoopSimplify.cpp
@@ -49,9 +49,9 @@
 using namespace llvm;
 
 namespace {
-  Statistic<>
+  Statistic
   NumInserted("loopsimplify", "Number of pre-header or exit blocks inserted");
-  Statistic<>
+  Statistic
   NumNested("loopsimplify", "Number of nested loops split out");
 
   struct VISIBILITY_HIDDEN LoopSimplify : public FunctionPass {
diff --git a/lib/Transforms/Utils/LowerAllocations.cpp b/lib/Transforms/Utils/LowerAllocations.cpp
index b7e4040..75a4c70 100644
--- a/lib/Transforms/Utils/LowerAllocations.cpp
+++ b/lib/Transforms/Utils/LowerAllocations.cpp
@@ -25,7 +25,7 @@
 using namespace llvm;
 
 namespace {
-  Statistic<> NumLowered("lowerallocs", "Number of allocations lowered");
+  Statistic NumLowered("lowerallocs", "Number of allocations lowered");
 
   /// LowerAllocations - Turn malloc and free instructions into %malloc and
   /// %free calls.
diff --git a/lib/Transforms/Utils/LowerInvoke.cpp b/lib/Transforms/Utils/LowerInvoke.cpp
index 507fb86..dfeb834 100644
--- a/lib/Transforms/Utils/LowerInvoke.cpp
+++ b/lib/Transforms/Utils/LowerInvoke.cpp
@@ -50,9 +50,9 @@
 using namespace llvm;
 
 namespace {
-  Statistic<> NumInvokes("lowerinvoke", "Number of invokes replaced");
-  Statistic<> NumUnwinds("lowerinvoke", "Number of unwinds replaced");
-  Statistic<> NumSpilled("lowerinvoke",
+  Statistic NumInvokes("lowerinvoke", "Number of invokes replaced");
+  Statistic NumUnwinds("lowerinvoke", "Number of unwinds replaced");
+  Statistic NumSpilled("lowerinvoke",
                          "Number of registers live across unwind edges");
   cl::opt<bool> ExpensiveEHSupport("enable-correct-eh-support",
  cl::desc("Make the -lowerinvoke pass insert expensive, but correct, EH code"));
diff --git a/lib/Transforms/Utils/LowerSelect.cpp b/lib/Transforms/Utils/LowerSelect.cpp
index 6859813..5efdd9b 100644
--- a/lib/Transforms/Utils/LowerSelect.cpp
+++ b/lib/Transforms/Utils/LowerSelect.cpp
@@ -28,7 +28,7 @@
 using namespace llvm;
 
 namespace {
-  Statistic<> NumLowered("lowerselect","Number of select instructions lowered");
+  Statistic NumLowered("lowerselect","Number of select instructions lowered");
 
   /// LowerSelect - Turn select instructions into conditional branches.
   ///
diff --git a/lib/Transforms/Utils/LowerSwitch.cpp b/lib/Transforms/Utils/LowerSwitch.cpp
index 401f617..4ad12b9 100644
--- a/lib/Transforms/Utils/LowerSwitch.cpp
+++ b/lib/Transforms/Utils/LowerSwitch.cpp
@@ -26,7 +26,7 @@
 using namespace llvm;
 
 namespace {
-  Statistic<> NumLowered("lowerswitch", "Number of SwitchInst's replaced");
+  Statistic NumLowered("lowerswitch", "Number of SwitchInst's replaced");
 
   /// LowerSwitch Pass - Replace all SwitchInst instructions with chained branch
   /// instructions.  Note that this cannot be a BasicBlock pass because it
diff --git a/lib/Transforms/Utils/Mem2Reg.cpp b/lib/Transforms/Utils/Mem2Reg.cpp
index f4ab50f..e0f79dd 100644
--- a/lib/Transforms/Utils/Mem2Reg.cpp
+++ b/lib/Transforms/Utils/Mem2Reg.cpp
@@ -24,7 +24,7 @@
 using namespace llvm;
 
 namespace {
-  Statistic<> NumPromoted("mem2reg", "Number of alloca's promoted");
+  Statistic NumPromoted("mem2reg", "Number of alloca's promoted");
 
   struct VISIBILITY_HIDDEN PromotePass : public FunctionPass {
     // runOnFunction - To run this pass, first we calculate the alloca