Eliminate static ctors due to Statistic objects

llvm-svn: 32693
diff --git a/llvm/lib/Transforms/IPO/ArgumentPromotion.cpp b/llvm/lib/Transforms/IPO/ArgumentPromotion.cpp
index 2a06310..ab52baf 100644
--- a/llvm/lib/Transforms/IPO/ArgumentPromotion.cpp
+++ b/llvm/lib/Transforms/IPO/ArgumentPromotion.cpp
@@ -47,14 +47,11 @@
 #include <set>
 using namespace llvm;
 
-namespace {
-  Statistic NumArgumentsPromoted("argpromotion",
-                                   "Number of pointer arguments promoted");
-  Statistic NumAggregatesPromoted("argpromotion",
-                                    "Number of aggregate arguments promoted");
-  Statistic NumArgumentsDead("argpromotion",
-                               "Number of dead pointer args eliminated");
+STATISTIC(NumArgumentsPromoted , "Number of pointer arguments promoted");
+STATISTIC(NumAggregatesPromoted, "Number of aggregate arguments promoted");
+STATISTIC(NumArgumentsDead     , "Number of dead pointer args eliminated");
 
+namespace {
   /// ArgPromotion - The 'by reference' to 'by value' argument promotion pass.
   ///
   struct ArgPromotion : public CallGraphSCCPass {
diff --git a/llvm/lib/Transforms/IPO/ConstantMerge.cpp b/llvm/lib/Transforms/IPO/ConstantMerge.cpp
index 7ba7b32..2916533 100644
--- a/llvm/lib/Transforms/IPO/ConstantMerge.cpp
+++ b/llvm/lib/Transforms/IPO/ConstantMerge.cpp
@@ -17,15 +17,16 @@
 //
 //===----------------------------------------------------------------------===//
 
+#define DEBUG_TYPE "constmerge"
 #include "llvm/Transforms/IPO.h"
 #include "llvm/Module.h"
 #include "llvm/Pass.h"
 #include "llvm/ADT/Statistic.h"
 using namespace llvm;
 
-namespace {
-  Statistic NumMerged("constmerge", "Number of global constants merged");
+STATISTIC(NumMerged, "Number of global constants merged");
 
+namespace {
   struct ConstantMerge : public ModulePass {
     // run - For this pass, process all of the globals in the module,
     // eliminating duplicate constants.
diff --git a/llvm/lib/Transforms/IPO/DeadArgumentElimination.cpp b/llvm/lib/Transforms/IPO/DeadArgumentElimination.cpp
index dbcc501..9d88a88 100644
--- a/llvm/lib/Transforms/IPO/DeadArgumentElimination.cpp
+++ b/llvm/lib/Transforms/IPO/DeadArgumentElimination.cpp
@@ -32,12 +32,10 @@
 #include <set>
 using namespace llvm;
 
-namespace {
-  Statistic NumArgumentsEliminated("deadargelim",
-                                     "Number of unread args removed");
-  Statistic NumRetValsEliminated("deadargelim",
-                                   "Number of unused return values removed");
+STATISTIC(NumArgumentsEliminated, "Number of unread args removed");
+STATISTIC(NumRetValsEliminated  , "Number of unused return values removed");
 
+namespace {
   /// DAE - The dead argument elimination pass.
   ///
   class DAE : public ModulePass {
diff --git a/llvm/lib/Transforms/IPO/DeadTypeElimination.cpp b/llvm/lib/Transforms/IPO/DeadTypeElimination.cpp
index e30e0ed..8199f74 100644
--- a/llvm/lib/Transforms/IPO/DeadTypeElimination.cpp
+++ b/llvm/lib/Transforms/IPO/DeadTypeElimination.cpp
@@ -12,6 +12,7 @@
 //
 //===----------------------------------------------------------------------===//
 
+#define DEBUG_TYPE "deadtypeelim"
 #include "llvm/Transforms/IPO.h"
 #include "llvm/Analysis/FindUsedTypes.h"
 #include "llvm/Module.h"
@@ -20,6 +21,8 @@
 #include "llvm/ADT/Statistic.h"
 using namespace llvm;
 
+STATISTIC(NumKilled, "Number of unused typenames removed from symtab");
+
 namespace {
   struct DTE : public ModulePass {
     // doPassInitialization - For this pass, it removes global symbol table
@@ -37,8 +40,6 @@
     }
   };
   RegisterPass<DTE> X("deadtypeelim", "Dead Type Elimination");
-  Statistic
-  NumKilled("deadtypeelim", "Number of unused typenames removed from symtab");
 }
 
 ModulePass *llvm::createDeadTypeEliminationPass() {
diff --git a/llvm/lib/Transforms/IPO/FunctionResolution.cpp b/llvm/lib/Transforms/IPO/FunctionResolution.cpp
index 6f1eea0..2ffbc7b 100644
--- a/llvm/lib/Transforms/IPO/FunctionResolution.cpp
+++ b/llvm/lib/Transforms/IPO/FunctionResolution.cpp
@@ -18,6 +18,7 @@
 //
 //===----------------------------------------------------------------------===//
 
+#define DEBUG_TYPE "funcresolve"
 #include "llvm/Transforms/IPO.h"
 #include "llvm/Module.h"
 #include "llvm/DerivedTypes.h"
@@ -31,10 +32,10 @@
 #include <algorithm>
 using namespace llvm;
 
-namespace {
-  Statistic NumResolved("funcresolve", "Number of varargs functions resolved");
-  Statistic NumGlobals("funcresolve", "Number of global variables resolved");
+STATISTIC(NumResolved, "Number of varargs functions resolved");
+STATISTIC(NumGlobals, "Number of global variables resolved");
 
+namespace {
   struct FunctionResolvingPass : public ModulePass {
     virtual void getAnalysisUsage(AnalysisUsage &AU) const {
       AU.addRequired<TargetData>();
diff --git a/llvm/lib/Transforms/IPO/GlobalDCE.cpp b/llvm/lib/Transforms/IPO/GlobalDCE.cpp
index ac23760..17dcb31 100644
--- a/llvm/lib/Transforms/IPO/GlobalDCE.cpp
+++ b/llvm/lib/Transforms/IPO/GlobalDCE.cpp
@@ -15,6 +15,7 @@
 //
 //===----------------------------------------------------------------------===//
 
+#define DEBUG_TYPE "globaldce"
 #include "llvm/Transforms/IPO.h"
 #include "llvm/Constants.h"
 #include "llvm/Module.h"
@@ -23,10 +24,10 @@
 #include <set>
 using namespace llvm;
 
-namespace {
-  Statistic NumFunctions("globaldce","Number of functions removed");
-  Statistic NumVariables("globaldce","Number of global variables removed");
+STATISTIC(NumFunctions, "Number of functions removed");
+STATISTIC(NumVariables, "Number of global variables removed");
 
+namespace {
   struct GlobalDCE : public ModulePass {
     // run - Do the GlobalDCE pass on the specified module, optionally updating
     // the specified callgraph to reflect the changes.
diff --git a/llvm/lib/Transforms/IPO/GlobalOpt.cpp b/llvm/lib/Transforms/IPO/GlobalOpt.cpp
index cf9cdaa..425bcc5 100644
--- a/llvm/lib/Transforms/IPO/GlobalOpt.cpp
+++ b/llvm/lib/Transforms/IPO/GlobalOpt.cpp
@@ -31,23 +31,19 @@
 #include <set>
 using namespace llvm;
 
-namespace {
-  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",
-                        "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",
-                              "Number of global vars shrunk to booleans");
-  Statistic NumFastCallFns("globalopt",
-                             "Number of functions converted to fastcc");
-  Statistic NumCtorsEvaluated("globalopt","Number of static ctors evaluated");
+STATISTIC(NumMarked    , "Number of globals marked constant");
+STATISTIC(NumSRA       , "Number of aggregate globals broken into scalars");
+STATISTIC(NumHeapSRA   , "Number of heap objects SRA'd");
+STATISTIC(NumSubstitute,"Number of globals with initializers stored into them");
+STATISTIC(NumDeleted   , "Number of globals deleted");
+STATISTIC(NumFnDeleted , "Number of functions deleted");
+STATISTIC(NumGlobUses  , "Number of global uses devirtualized");
+STATISTIC(NumLocalized , "Number of globals localized");
+STATISTIC(NumShrunkToBool  , "Number of global vars shrunk to booleans");
+STATISTIC(NumFastCallFns   , "Number of functions converted to fastcc");
+STATISTIC(NumCtorsEvaluated, "Number of static ctors evaluated");
 
+namespace {
   struct GlobalOpt : public ModulePass {
     virtual void getAnalysisUsage(AnalysisUsage &AU) const {
       AU.addRequired<TargetData>();
diff --git a/llvm/lib/Transforms/IPO/IPConstantPropagation.cpp b/llvm/lib/Transforms/IPO/IPConstantPropagation.cpp
index 3f673ae..be18f00 100644
--- a/llvm/lib/Transforms/IPO/IPConstantPropagation.cpp
+++ b/llvm/lib/Transforms/IPO/IPConstantPropagation.cpp
@@ -15,6 +15,7 @@
 //
 //===----------------------------------------------------------------------===//
 
+#define DEBUG_TYPE "ipconstprop"
 #include "llvm/Transforms/IPO.h"
 #include "llvm/Constants.h"
 #include "llvm/Instructions.h"
@@ -24,12 +25,10 @@
 #include "llvm/ADT/Statistic.h"
 using namespace llvm;
 
-namespace {
-  Statistic NumArgumentsProped("ipconstprop",
-                                 "Number of args turned into constants");
-  Statistic NumReturnValProped("ipconstprop",
-                              "Number of return values turned into constants");
+STATISTIC(NumArgumentsProped, "Number of args turned into constants");
+STATISTIC(NumReturnValProped, "Number of return values turned into constants");
 
+namespace {
   /// IPCP - The interprocedural constant propagation pass
   ///
   struct IPCP : public ModulePass {
diff --git a/llvm/lib/Transforms/IPO/IndMemRemoval.cpp b/llvm/lib/Transforms/IPO/IndMemRemoval.cpp
index 9ad25dd..82aa992 100644
--- a/llvm/lib/Transforms/IPO/IndMemRemoval.cpp
+++ b/llvm/lib/Transforms/IPO/IndMemRemoval.cpp
@@ -15,36 +15,27 @@
 //
 //===----------------------------------------------------------------------===//
 
+#define DEBUG_TYPE "indmemrem"
 #include "llvm/Transforms/IPO.h"
 #include "llvm/Pass.h"
 #include "llvm/Module.h"
-#include "llvm/Function.h"
 #include "llvm/Instructions.h"
 #include "llvm/Type.h"
-#include "llvm/Support/Debug.h"
 #include "llvm/ADT/Statistic.h"
-#include <fstream>
-#include <set>
 using namespace llvm;
 
+STATISTIC(NumBounceSites, "Number of sites modified");
+STATISTIC(NumBounce     , "Number of bounce functions created");
+
 namespace {
-  Statistic NumBounceSites("indmemrem", "Number of sites modified");
-  Statistic NumBounce  ("indmemrem", "Number of bounce functions created");
-
   class IndMemRemPass : public ModulePass {
-
   public:
-    IndMemRemPass();
     virtual bool runOnModule(Module &M);
   };
   RegisterPass<IndMemRemPass> X("indmemrem","Indirect Malloc and Free Removal");
 } // end anonymous namespace
 
 
-IndMemRemPass::IndMemRemPass()
-{
-}
-
 bool IndMemRemPass::runOnModule(Module &M) {
   //in Theory, all direct calls of malloc and free should be promoted
   //to intrinsics.  Therefor, this goes through and finds where the
diff --git a/llvm/lib/Transforms/IPO/Inliner.cpp b/llvm/lib/Transforms/IPO/Inliner.cpp
index bd5fb98..27dbf8b 100644
--- a/llvm/lib/Transforms/IPO/Inliner.cpp
+++ b/llvm/lib/Transforms/IPO/Inliner.cpp
@@ -13,6 +13,7 @@
 //
 //===----------------------------------------------------------------------===//
 
+#define DEBUG_TYPE "inline"
 #include "Inliner.h"
 #include "llvm/Module.h"
 #include "llvm/Instructions.h"
@@ -25,10 +26,10 @@
 #include <set>
 using namespace llvm;
 
+STATISTIC(NumInlined, "Number of functions inlined");
+STATISTIC(NumDeleted, "Number of functions deleted because all callers found");
+
 namespace {
-  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),
         cl::desc("Control the amount of inlining to perform (default = 200)"));
diff --git a/llvm/lib/Transforms/IPO/Internalize.cpp b/llvm/lib/Transforms/IPO/Internalize.cpp
index f43a27f..bf99235 100644
--- a/llvm/lib/Transforms/IPO/Internalize.cpp
+++ b/llvm/lib/Transforms/IPO/Internalize.cpp
@@ -13,6 +13,7 @@
 //
 //===----------------------------------------------------------------------===//
 
+#define DEBUG_TYPE "internalize"
 #include "llvm/Transforms/IPO.h"
 #include "llvm/Pass.h"
 #include "llvm/Module.h"
@@ -23,9 +24,10 @@
 #include <set>
 using namespace llvm;
 
+STATISTIC(NumFunctions, "Number of functions internalized");
+STATISTIC(NumGlobals  , "Number of global vars internalized");
+
 namespace {
-  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/llvm/lib/Transforms/IPO/LoopExtractor.cpp b/llvm/lib/Transforms/IPO/LoopExtractor.cpp
index f77f9f3..5a6e767 100644
--- a/llvm/lib/Transforms/IPO/LoopExtractor.cpp
+++ b/llvm/lib/Transforms/IPO/LoopExtractor.cpp
@@ -14,6 +14,7 @@
 //
 //===----------------------------------------------------------------------===//
 
+#define DEBUG_TYPE "loop-extract"
 #include "llvm/Transforms/IPO.h"
 #include "llvm/Instructions.h"
 #include "llvm/Module.h"
@@ -25,9 +26,9 @@
 #include "llvm/ADT/Statistic.h"
 using namespace llvm;
 
-namespace {
-  Statistic NumExtracted("loop-extract", "Number of loops extracted");
+STATISTIC(NumExtracted, "Number of loops extracted");
 
+namespace {
   // 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
   // not a function pass.
diff --git a/llvm/lib/Transforms/IPO/LowerSetJmp.cpp b/llvm/lib/Transforms/IPO/LowerSetJmp.cpp
index 0417a5c..d7f22fb 100644
--- a/llvm/lib/Transforms/IPO/LowerSetJmp.cpp
+++ b/llvm/lib/Transforms/IPO/LowerSetJmp.cpp
@@ -33,6 +33,7 @@
 // pass invokable via the "opt" command at will.
 //===----------------------------------------------------------------------===//
 
+#define DEBUG_TYPE "lowersetjmp"
 #include "llvm/Transforms/IPO.h"
 #include "llvm/Constants.h"
 #include "llvm/DerivedTypes.h"
@@ -49,16 +50,12 @@
 #include "llvm/ADT/VectorExtras.h"
 using namespace llvm;
 
-namespace {
-  Statistic LongJmpsTransformed("lowersetjmp",
-                                  "Number of longjmps transformed");
-  Statistic SetJmpsTransformed("lowersetjmp",
-                                 "Number of setjmps transformed");
-  Statistic CallsTransformed("lowersetjmp",
-                               "Number of calls invokified");
-  Statistic InvokesTransformed("lowersetjmp",
-                                 "Number of invokes modified");
+STATISTIC(LongJmpsTransformed, "Number of longjmps transformed");
+STATISTIC(SetJmpsTransformed , "Number of setjmps transformed");
+STATISTIC(CallsTransformed   , "Number of calls invokified");
+STATISTIC(InvokesTransformed , "Number of invokes modified");
 
+namespace {
   //===--------------------------------------------------------------------===//
   // LowerSetJmp pass implementation.
   class LowerSetJmp : public ModulePass,
diff --git a/llvm/lib/Transforms/IPO/PruneEH.cpp b/llvm/lib/Transforms/IPO/PruneEH.cpp
index 1dec7d7..14daf13 100644
--- a/llvm/lib/Transforms/IPO/PruneEH.cpp
+++ b/llvm/lib/Transforms/IPO/PruneEH.cpp
@@ -14,6 +14,7 @@
 //
 //===----------------------------------------------------------------------===//
 
+#define DEBUG_TYPE "prune-eh"
 #include "llvm/Transforms/IPO.h"
 #include "llvm/CallGraphSCCPass.h"
 #include "llvm/Constants.h"
@@ -27,10 +28,10 @@
 #include <algorithm>
 using namespace llvm;
 
-namespace {
-  Statistic NumRemoved("prune-eh", "Number of invokes removed");
-  Statistic NumUnreach("prune-eh", "Number of noreturn calls optimized");
+STATISTIC(NumRemoved, "Number of invokes removed");
+STATISTIC(NumUnreach, "Number of noreturn calls optimized");
 
+namespace {
   struct PruneEH : public CallGraphSCCPass {
     /// DoesNotUnwind - This set contains all of the functions which we have
     /// determined cannot unwind.
diff --git a/llvm/lib/Transforms/IPO/RaiseAllocations.cpp b/llvm/lib/Transforms/IPO/RaiseAllocations.cpp
index 46c6815..58f0d1b 100644
--- a/llvm/lib/Transforms/IPO/RaiseAllocations.cpp
+++ b/llvm/lib/Transforms/IPO/RaiseAllocations.cpp
@@ -12,6 +12,7 @@
 //
 //===----------------------------------------------------------------------===//
 
+#define DEBUG_TYPE "raiseallocs"
 #include "llvm/Transforms/IPO.h"
 #include "llvm/Constants.h"
 #include "llvm/DerivedTypes.h"
@@ -22,9 +23,9 @@
 #include "llvm/ADT/Statistic.h"
 using namespace llvm;
 
-namespace {
-  Statistic NumRaised("raiseallocs", "Number of allocations raised");
+STATISTIC(NumRaised, "Number of allocations raised");
 
+namespace {
   // RaiseAllocations - Turn %malloc and %free calls into the appropriate
   // instruction.
   //
diff --git a/llvm/lib/Transforms/IPO/SimplifyLibCalls.cpp b/llvm/lib/Transforms/IPO/SimplifyLibCalls.cpp
index 2c3b666..08ae199 100644
--- a/llvm/lib/Transforms/IPO/SimplifyLibCalls.cpp
+++ b/llvm/lib/Transforms/IPO/SimplifyLibCalls.cpp
@@ -31,17 +31,15 @@
 #include "llvm/Transforms/IPO.h"
 using namespace llvm;
 
-namespace {
-
 /// 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",
-  "Number of library calls simplified");
+STATISTIC(SimplifiedLibCalls, "Number of library calls simplified");
 
-// Forward declarations
-class LibCallOptimization;
-class SimplifyLibCalls;
-
+namespace {
+  // Forward declarations
+  class LibCallOptimization;
+  class SimplifyLibCalls;
+  
 /// This list is populated by the constructor for LibCallOptimization class.
 /// Therefore all subclasses are registered here at static initialization time
 /// and this list is what the SimplifyLibCalls pass uses to apply the individual