Drop 'const'


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36662 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/docs/WritingAnLLVMPass.html b/docs/WritingAnLLVMPass.html
index 77b0599..f65b679 100644
--- a/docs/WritingAnLLVMPass.html
+++ b/docs/WritingAnLLVMPass.html
@@ -263,7 +263,7 @@
 time.</p>
 
 <div class="doc_code"><pre>
-     static const char ID;
+     static char ID;
      Hello() : FunctionPass((intptr_t)&ID) {}
 </pre></div><p>
 
@@ -285,7 +285,7 @@
 function.</p>
 
 <div class="doc_code"><pre>
-  const char Hello::ID = 0;
+  char Hello::ID = 0;
 </pre></div>
 
 <p> We initialize pass ID here. LLVM uses ID's address to identify pass so 
@@ -311,7 +311,7 @@
 <b>namespace</b> {
   <b>struct Hello</b> : <b>public</b> <a href="#FunctionPass">FunctionPass</a> {
     
-    static const char ID;
+    static char ID;
     Hello() : FunctionPass((intptr_t)&ID) {}
 
     <b>virtual bool</b> <a href="#runOnFunction">runOnFunction</a>(Function &amp;F) {
diff --git a/include/llvm/Analysis/AliasAnalysis.h b/include/llvm/Analysis/AliasAnalysis.h
index 92a30d8..1cd6afc 100644
--- a/include/llvm/Analysis/AliasAnalysis.h
+++ b/include/llvm/Analysis/AliasAnalysis.h
@@ -61,7 +61,7 @@
   virtual void getAnalysisUsage(AnalysisUsage &AU) const;
 
 public:
-  static const char ID; // Class identification, replacement for typeinfo
+  static char ID; // Class identification, replacement for typeinfo
   AliasAnalysis() : TD(0), AA(0) {}
   virtual ~AliasAnalysis();  // We want to be subclassed
 
diff --git a/include/llvm/Analysis/CallGraph.h b/include/llvm/Analysis/CallGraph.h
index 5225a89..4f4ce0e 100644
--- a/include/llvm/Analysis/CallGraph.h
+++ b/include/llvm/Analysis/CallGraph.h
@@ -73,7 +73,7 @@
   FunctionMapTy FunctionMap;    // Map from a function to its node
 
 public:
-  static const char ID; // Class identification, replacement for typeinfo
+  static char ID; // Class identification, replacement for typeinfo
   //===---------------------------------------------------------------------
   // Accessors...
   //
diff --git a/include/llvm/Analysis/Dominators.h b/include/llvm/Analysis/Dominators.h
index 0be0bb0..cca73bf 100644
--- a/include/llvm/Analysis/Dominators.h
+++ b/include/llvm/Analysis/Dominators.h
@@ -208,7 +208,7 @@
 ///
 class DominatorTree : public DominatorTreeBase {
 public:
-  static const char ID; // Pass ID, replacement for typeid
+  static char ID; // Pass ID, replacement for typeid
   DominatorTree() : DominatorTreeBase((intptr_t)&ID, false) {}
   
   BasicBlock *getRoot() const {
@@ -399,7 +399,7 @@
 
 class ETForest : public ETForestBase {
 public:
-  static const char ID; // Pass identifcation, replacement for typeid
+  static char ID; // Pass identifcation, replacement for typeid
 
   ETForest() : ETForestBase((intptr_t)&ID, false) {}
 
@@ -477,7 +477,7 @@
 ///
 class DominanceFrontier : public DominanceFrontierBase {
 public:
-  static const char ID; // Pass ID, replacement for typeid
+  static char ID; // Pass ID, replacement for typeid
   DominanceFrontier() : 
     DominanceFrontierBase((intptr_t)& ID, false) {}
 
diff --git a/include/llvm/Analysis/FindUsedTypes.h b/include/llvm/Analysis/FindUsedTypes.h
index 9c83e41..d6ab010 100644
--- a/include/llvm/Analysis/FindUsedTypes.h
+++ b/include/llvm/Analysis/FindUsedTypes.h
@@ -24,7 +24,7 @@
 class FindUsedTypes : public ModulePass {
   std::set<const Type *> UsedTypes;
 public:
-  static const char ID; // Pass identifcation, replacement for typeid
+  static char ID; // Pass identifcation, replacement for typeid
   FindUsedTypes() : ModulePass((intptr_t)&ID) {}
 
   /// getTypes - After the pass has been run, return the set containing all of
diff --git a/include/llvm/Analysis/IntervalPartition.h b/include/llvm/Analysis/IntervalPartition.h
index 886450f..05f1560 100644
--- a/include/llvm/Analysis/IntervalPartition.h
+++ b/include/llvm/Analysis/IntervalPartition.h
@@ -45,7 +45,7 @@
   std::vector<Interval*> Intervals;
 
 public:
-  static const char ID; // Pass identifcation, replacement for typeid
+  static char ID; // Pass identifcation, replacement for typeid
 
   IntervalPartition() : FunctionPass((intptr_t)&ID), RootInterval(0) {}
 
diff --git a/include/llvm/Analysis/LoopInfo.h b/include/llvm/Analysis/LoopInfo.h
index 08eca1b..4806574 100644
--- a/include/llvm/Analysis/LoopInfo.h
+++ b/include/llvm/Analysis/LoopInfo.h
@@ -241,7 +241,7 @@
   std::vector<Loop*> TopLevelLoops;
   friend class Loop;
 public:
-  static const char ID; // Pass identifcation, replacement for typeid
+  static char ID; // Pass identifcation, replacement for typeid
 
   LoopInfo() : FunctionPass((intptr_t)&ID) {}
   ~LoopInfo() { releaseMemory(); }
diff --git a/include/llvm/Analysis/LoopPass.h b/include/llvm/Analysis/LoopPass.h
index 70fabfd..76a3018 100644
--- a/include/llvm/Analysis/LoopPass.h
+++ b/include/llvm/Analysis/LoopPass.h
@@ -68,7 +68,7 @@
 class LPPassManager : public FunctionPass, public PMDataManager {
 
 public:
-  static const char ID;
+  static char ID;
   LPPassManager(int Depth);
 
   /// run - Execute all of the passes scheduled for execution.  Keep track of
diff --git a/include/llvm/Analysis/PostDominators.h b/include/llvm/Analysis/PostDominators.h
index 161478c..642b746 100644
--- a/include/llvm/Analysis/PostDominators.h
+++ b/include/llvm/Analysis/PostDominators.h
@@ -22,7 +22,7 @@
 /// compute the a post-dominator tree.
 ///
 struct PostDominatorTree : public DominatorTreeBase {
-  static const char ID; // Pass identifcation, replacement for typeid
+  static char ID; // Pass identifcation, replacement for typeid
 
   PostDominatorTree() : 
     DominatorTreeBase((intptr_t)&ID, true) {}
@@ -54,7 +54,7 @@
 /// PostETForest Class - Concrete subclass of ETForestBase that is used to
 /// compute a forwards post-dominator ET-Forest.
 struct PostETForest : public ETForestBase {
-  static const char ID;
+  static char ID;
   PostETForest() : ETForestBase((intptr_t)&ID, true) {}
 
   virtual void getAnalysisUsage(AnalysisUsage &AU) const {
@@ -79,7 +79,7 @@
 /// used to compute the a post-dominance frontier.
 ///
 struct PostDominanceFrontier : public DominanceFrontierBase {
-  static const char ID;
+  static char ID;
   PostDominanceFrontier() 
     : DominanceFrontierBase((intptr_t) &ID, true) {}
 
diff --git a/include/llvm/Analysis/ProfileInfo.h b/include/llvm/Analysis/ProfileInfo.h
index c8c3055..74e3bc2 100644
--- a/include/llvm/Analysis/ProfileInfo.h
+++ b/include/llvm/Analysis/ProfileInfo.h
@@ -38,7 +38,7 @@
     // entered.
     std::map<std::pair<BasicBlock*, BasicBlock*>, unsigned> EdgeCounts;
   public:
-    static const char ID; // Class identification, replacement for typeinfo
+    static char ID; // Class identification, replacement for typeinfo
     virtual ~ProfileInfo();  // We want to be subclassed
 
     //===------------------------------------------------------------------===//
diff --git a/include/llvm/Analysis/ScalarEvolution.h b/include/llvm/Analysis/ScalarEvolution.h
index 72fdd9f..263af5f 100644
--- a/include/llvm/Analysis/ScalarEvolution.h
+++ b/include/llvm/Analysis/ScalarEvolution.h
@@ -197,7 +197,7 @@
   class ScalarEvolution : public FunctionPass {
     void *Impl;    // ScalarEvolution uses the pimpl pattern
   public:
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     ScalarEvolution() : FunctionPass((intptr_t)&ID), Impl(0) {}
 
     /// getSCEV - Return a SCEV expression handle for the full generality of the
diff --git a/include/llvm/Analysis/ValueNumbering.h b/include/llvm/Analysis/ValueNumbering.h
index f4e7da9..64d528e 100644
--- a/include/llvm/Analysis/ValueNumbering.h
+++ b/include/llvm/Analysis/ValueNumbering.h
@@ -29,7 +29,7 @@
 class Instruction;
 
 struct ValueNumbering {
-  static const char ID; // Class identification, replacement for typeinfo
+  static char ID; // Class identification, replacement for typeinfo
   virtual ~ValueNumbering();    // We want to be subclassed
 
   /// getEqualNumberNodes - Return nodes with the same value number as the
diff --git a/include/llvm/Assembly/PrintModulePass.h b/include/llvm/Assembly/PrintModulePass.h
index c769c13..0f65235 100644
--- a/include/llvm/Assembly/PrintModulePass.h
+++ b/include/llvm/Assembly/PrintModulePass.h
@@ -28,7 +28,7 @@
   OStream *Out;           // ostream to print on
   bool DeleteStream;      // Delete the ostream in our dtor?
 public:
-  static const char ID;
+  static char ID;
   PrintModulePass() : ModulePass((intptr_t)&ID), Out(&cerr), DeleteStream(false) {}
   PrintModulePass(OStream *o, bool DS = false)
     : ModulePass((intptr_t)&ID), Out(o), DeleteStream(DS) {}
@@ -52,7 +52,7 @@
   OStream *Out;           // ostream to print on
   bool DeleteStream;      // Delete the ostream in our dtor?
 public:
-  static const char ID;
+  static char ID;
   PrintFunctionPass() : FunctionPass((intptr_t)&ID), Banner(""), Out(&cerr), 
                         DeleteStream(false) {}
   PrintFunctionPass(const std::string &B, OStream *o = &cout,
diff --git a/include/llvm/Bytecode/WriteBytecodePass.h b/include/llvm/Bytecode/WriteBytecodePass.h
index 924a1ff..63036d2 100644
--- a/include/llvm/Bytecode/WriteBytecodePass.h
+++ b/include/llvm/Bytecode/WriteBytecodePass.h
@@ -26,7 +26,7 @@
   bool DeleteStream;
   bool CompressFile;
 public:
-  static const char ID; // Pass identifcation, replacement for typeid
+  static char ID; // Pass identifcation, replacement for typeid
   WriteBytecodePass()
     : ModulePass((intptr_t) &ID), Out(&cout), DeleteStream(false), 
       CompressFile(false) {}
diff --git a/include/llvm/CodeGen/AsmPrinter.h b/include/llvm/CodeGen/AsmPrinter.h
index 9703e2e..8dd6aec 100644
--- a/include/llvm/CodeGen/AsmPrinter.h
+++ b/include/llvm/CodeGen/AsmPrinter.h
@@ -34,7 +34,7 @@
   /// AsmPrinter - This class is intended to be used as a driving class for all
   /// asm writers.
   class AsmPrinter : public MachineFunctionPass {
-    static const char ID;
+    static char ID;
 
     /// FunctionNumber - This provides a unique ID for each function emitted in
     /// this translation unit.  It is autoincremented by SetupMachineFunction,
diff --git a/include/llvm/CodeGen/LiveIntervalAnalysis.h b/include/llvm/CodeGen/LiveIntervalAnalysis.h
index c77edf8..fc95dee 100644
--- a/include/llvm/CodeGen/LiveIntervalAnalysis.h
+++ b/include/llvm/CodeGen/LiveIntervalAnalysis.h
@@ -65,7 +65,7 @@
     BitVector JoinedLIs;
 
   public:
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     LiveIntervals() : MachineFunctionPass((intptr_t)&ID) {}
 
     struct CopyRec {
diff --git a/include/llvm/CodeGen/LiveVariables.h b/include/llvm/CodeGen/LiveVariables.h
index 198ce75..dc67ae1 100644
--- a/include/llvm/CodeGen/LiveVariables.h
+++ b/include/llvm/CodeGen/LiveVariables.h
@@ -40,7 +40,7 @@
 
 class LiveVariables : public MachineFunctionPass {
 public:
-  static const char ID; // Pass identifcation, replacement for typeid
+  static char ID; // Pass identifcation, replacement for typeid
   LiveVariables() : MachineFunctionPass((intptr_t)&ID) {}
 
   /// VarInfo - This represents the regions where a virtual register is live in
diff --git a/include/llvm/CodeGen/MachineModuleInfo.h b/include/llvm/CodeGen/MachineModuleInfo.h
index 791b866..4c09af2 100644
--- a/include/llvm/CodeGen/MachineModuleInfo.h
+++ b/include/llvm/CodeGen/MachineModuleInfo.h
@@ -1022,7 +1022,7 @@
   std::vector<GlobalVariable *> TypeInfos;
 
 public:
-  static const char ID; // Pass identifcation, replacement for typeid
+  static char ID; // Pass identifcation, replacement for typeid
 
   MachineModuleInfo();
   ~MachineModuleInfo();
diff --git a/include/llvm/CodeGen/SelectionDAGISel.h b/include/llvm/CodeGen/SelectionDAGISel.h
index 5682cfd..497040d 100644
--- a/include/llvm/CodeGen/SelectionDAGISel.h
+++ b/include/llvm/CodeGen/SelectionDAGISel.h
@@ -41,7 +41,7 @@
   MachineBasicBlock *BB;
   std::vector<SDNode*> TopOrder;
   unsigned DAGSize;
-  static const char ID;
+  static char ID;
 
   explicit SelectionDAGISel(TargetLowering &tli) : 
     FunctionPass((intptr_t)&ID), TLI(tli), DAGSize(0) {}
diff --git a/include/llvm/PassManagers.h b/include/llvm/PassManagers.h
index 7716b6a..da05647 100644
--- a/include/llvm/PassManagers.h
+++ b/include/llvm/PassManagers.h
@@ -336,7 +336,7 @@
 class FPPassManager : public ModulePass, public PMDataManager {
  
 public:
-  static const char ID;
+  static char ID;
   explicit FPPassManager(int Depth) 
   : ModulePass((intptr_t)&ID), PMDataManager(Depth) { }
   
diff --git a/include/llvm/Target/TargetData.h b/include/llvm/Target/TargetData.h
index 50cfab1..bcb2b4d 100644
--- a/include/llvm/Target/TargetData.h
+++ b/include/llvm/Target/TargetData.h
@@ -202,7 +202,7 @@
   /// requested alignment (if the global has one).
   unsigned getPreferredAlignmentLog(const GlobalVariable *GV) const;
 
-  static const char ID; // Pass identifcation, replacement for typeid
+  static char ID; // Pass identifcation, replacement for typeid
 };
 
 /// StructLayout - used to lazily calculate structure layout information for a
diff --git a/include/llvm/Transforms/RSProfiling.h b/include/llvm/Transforms/RSProfiling.h
index 96554c5..b5cb302 100644
--- a/include/llvm/Transforms/RSProfiling.h
+++ b/include/llvm/Transforms/RSProfiling.h
@@ -23,7 +23,7 @@
   /// this interface are expected to chain to other implementations, such that
   /// multiple profilers can be support simultaniously.
   struct RSProfilers : public ModulePass {
-    static const char ID; // Pass identification, replacement for typeinfo
+    static char ID; // Pass identification, replacement for typeinfo
     RSProfilers() : ModulePass((intptr_t)&ID) {}
 
     /// isProfiling - This method returns true if the value passed it was 
diff --git a/include/llvm/Transforms/Utils/UnifyFunctionExitNodes.h b/include/llvm/Transforms/Utils/UnifyFunctionExitNodes.h
index d107c93..ab58a66 100644
--- a/include/llvm/Transforms/Utils/UnifyFunctionExitNodes.h
+++ b/include/llvm/Transforms/Utils/UnifyFunctionExitNodes.h
@@ -25,7 +25,7 @@
 struct UnifyFunctionExitNodes : public FunctionPass {
   BasicBlock *ReturnBlock, *UnwindBlock, *UnreachableBlock;
 public:
-  static const char ID; // Pass identifcation, replacement for typeid
+  static char ID; // Pass identifcation, replacement for typeid
   UnifyFunctionExitNodes() : FunctionPass((intptr_t)&ID),
                              ReturnBlock(0), UnwindBlock(0) {}
 
diff --git a/lib/Analysis/AliasAnalysis.cpp b/lib/Analysis/AliasAnalysis.cpp
index 32d2bb6..5ae2342 100644
--- a/lib/Analysis/AliasAnalysis.cpp
+++ b/lib/Analysis/AliasAnalysis.cpp
@@ -36,7 +36,7 @@
 namespace {
   RegisterAnalysisGroup<AliasAnalysis> Z("Alias Analysis");
 }
-const char AliasAnalysis::ID = 0;
+char AliasAnalysis::ID = 0;
 
 //===----------------------------------------------------------------------===//
 // Default chaining methods
diff --git a/lib/Analysis/AliasAnalysisCounter.cpp b/lib/Analysis/AliasAnalysisCounter.cpp
index 313f4c3..eea2c99 100644
--- a/lib/Analysis/AliasAnalysisCounter.cpp
+++ b/lib/Analysis/AliasAnalysisCounter.cpp
@@ -34,7 +34,7 @@
     const char *Name;
     Module *M;
   public:
-    static const char ID; // Class identification, replacement for typeinfo
+    static char ID; // Class identification, replacement for typeinfo
     AliasAnalysisCounter() : ModulePass((intptr_t) &ID) {
       No = May = Must = 0;
       NoMR = JustRef = JustMod = MR = 0;
@@ -108,7 +108,7 @@
     }
   };
 
-  const char AliasAnalysisCounter::ID = 0;
+  char AliasAnalysisCounter::ID = 0;
   RegisterPass<AliasAnalysisCounter>
   X("count-aa", "Count Alias Analysis Query Responses");
   RegisterAnalysisGroup<AliasAnalysis> Y(X);
diff --git a/lib/Analysis/AliasAnalysisEvaluator.cpp b/lib/Analysis/AliasAnalysisEvaluator.cpp
index 34d984d..469f94d 100644
--- a/lib/Analysis/AliasAnalysisEvaluator.cpp
+++ b/lib/Analysis/AliasAnalysisEvaluator.cpp
@@ -50,7 +50,7 @@
     unsigned NoModRef, Mod, Ref, ModRef;
 
   public:
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     AAEval() : FunctionPass((intptr_t)&ID) {}
 
     virtual void getAnalysisUsage(AnalysisUsage &AU) const {
@@ -73,7 +73,7 @@
     bool doFinalization(Module &M);
   };
 
-  const char AAEval::ID = 0;
+  char AAEval::ID = 0;
   RegisterPass<AAEval>
   X("aa-eval", "Exhaustive Alias Analysis Precision Evaluator");
 }
diff --git a/lib/Analysis/AliasDebugger.cpp b/lib/Analysis/AliasDebugger.cpp
index 14526a2..bbb7acf 100644
--- a/lib/Analysis/AliasDebugger.cpp
+++ b/lib/Analysis/AliasDebugger.cpp
@@ -40,7 +40,7 @@
     std::set<const Value*> Vals;
     
   public:
-    static const char ID; // Class identification, replacement for typeinfo
+    static char ID; // Class identification, replacement for typeinfo
     AliasDebugger() : ModulePass((intptr_t)&ID) {}
 
     bool runOnModule(Module &M) {
@@ -122,7 +122,7 @@
 
   };
 
-  const char AliasDebugger::ID = 0;
+  char AliasDebugger::ID = 0;
   RegisterPass<AliasDebugger> X("debug-aa", "AA use debugger");
   RegisterAnalysisGroup<AliasAnalysis> Y(X);
 }
diff --git a/lib/Analysis/AliasSetTracker.cpp b/lib/Analysis/AliasSetTracker.cpp
index 79d2198..fca612c 100644
--- a/lib/Analysis/AliasSetTracker.cpp
+++ b/lib/Analysis/AliasSetTracker.cpp
@@ -555,7 +555,7 @@
   class VISIBILITY_HIDDEN AliasSetPrinter : public FunctionPass {
     AliasSetTracker *Tracker;
   public:
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     AliasSetPrinter() : FunctionPass((intptr_t)&ID) {}
 
     virtual void getAnalysisUsage(AnalysisUsage &AU) const {
@@ -573,6 +573,6 @@
       return false;
     }
   };
-  const char AliasSetPrinter::ID = 0;
+  char AliasSetPrinter::ID = 0;
   RegisterPass<AliasSetPrinter> X("print-alias-sets", "Alias Set Printer");
 }
diff --git a/lib/Analysis/BasicAliasAnalysis.cpp b/lib/Analysis/BasicAliasAnalysis.cpp
index 1b72818..666d5d6 100644
--- a/lib/Analysis/BasicAliasAnalysis.cpp
+++ b/lib/Analysis/BasicAliasAnalysis.cpp
@@ -36,7 +36,7 @@
   /// such it doesn't follow many of the rules that other alias analyses must.
   ///
   struct VISIBILITY_HIDDEN NoAA : public ImmutablePass, public AliasAnalysis {
-    static const char ID; // Class identification, replacement for typeinfo
+    static char ID; // Class identification, replacement for typeinfo
     NoAA() : ImmutablePass((intptr_t)&ID) {}
 
     virtual void getAnalysisUsage(AnalysisUsage &AU) const {
@@ -77,7 +77,7 @@
   };
 
   // Register this pass...
-  const char NoAA::ID = 0;
+  char NoAA::ID = 0;
   RegisterPass<NoAA>
   U("no-aa", "No Alias Analysis (always returns 'may' alias)");
 
@@ -92,7 +92,7 @@
   /// Because it doesn't chain to a previous alias analysis (like -no-aa), it
   /// derives from the NoAA class.
   struct VISIBILITY_HIDDEN BasicAliasAnalysis : public NoAA {
-    static const char ID; // Class identification, replacement for typeinfo
+    static char ID; // Class identification, replacement for typeinfo
     AliasResult alias(const Value *V1, unsigned V1Size,
                       const Value *V2, unsigned V2Size);
 
@@ -124,7 +124,7 @@
   };
 
   // Register this pass...
-  const char BasicAliasAnalysis::ID = 0;
+  char BasicAliasAnalysis::ID = 0;
   RegisterPass<BasicAliasAnalysis>
   X("basicaa", "Basic Alias Analysis (default AA impl)");
 
diff --git a/lib/Analysis/CFGPrinter.cpp b/lib/Analysis/CFGPrinter.cpp
index 13ed16b..88fbc26 100644
--- a/lib/Analysis/CFGPrinter.cpp
+++ b/lib/Analysis/CFGPrinter.cpp
@@ -91,7 +91,7 @@
 
 namespace {
   struct VISIBILITY_HIDDEN CFGPrinter : public FunctionPass {
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     CFGPrinter() : FunctionPass((intptr_t)&ID) {}
 
     virtual bool runOnFunction(Function &F) {
@@ -114,12 +114,12 @@
     }
   };
 
-  const char CFGPrinter::ID = 0;
+  char CFGPrinter::ID = 0;
   RegisterPass<CFGPrinter> P1("print-cfg",
                               "Print CFG of function to 'dot' file");
 
   struct VISIBILITY_HIDDEN CFGOnlyPrinter : public CFGPrinter {
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     virtual bool runOnFunction(Function &F) {
       bool OldCFGOnly = CFGOnly;
       CFGOnly = true;
@@ -134,7 +134,7 @@
     }
   };
 
-  const char CFGOnlyPrinter::ID = 0;
+  char CFGOnlyPrinter::ID = 0;
   RegisterPass<CFGOnlyPrinter>
   P2("print-cfg-only",
      "Print CFG of function to 'dot' file (with no function bodies)");
diff --git a/lib/Analysis/IPA/Andersens.cpp b/lib/Analysis/IPA/Andersens.cpp
index 3e5be67..c84c602 100644
--- a/lib/Analysis/IPA/Andersens.cpp
+++ b/lib/Analysis/IPA/Andersens.cpp
@@ -76,7 +76,7 @@
   class VISIBILITY_HIDDEN Andersens : public ModulePass, public AliasAnalysis,
                                       private InstVisitor<Andersens> {
   public:
-    static const char ID; // Class identification, replacement for typeinfo
+    static char ID; // Class identification, replacement for typeinfo
     Andersens() : ModulePass((intptr_t)&ID) {}
   private:
     /// Node class - This class is used to represent a memory object in the
@@ -339,7 +339,7 @@
     void visitInstruction(Instruction &I);
   };
 
-  const char Andersens::ID = 0;
+  char Andersens::ID = 0;
   RegisterPass<Andersens> X("anders-aa",
                             "Andersen's Interprocedural Alias Analysis");
   RegisterAnalysisGroup<AliasAnalysis> Y(X);
diff --git a/lib/Analysis/IPA/CallGraph.cpp b/lib/Analysis/IPA/CallGraph.cpp
index 4309555..5f9850c 100644
--- a/lib/Analysis/IPA/CallGraph.cpp
+++ b/lib/Analysis/IPA/CallGraph.cpp
@@ -51,7 +51,7 @@
   CallGraphNode *CallsExternalNode;
 
 public:
-  static const char ID; // Class identification, replacement for typeinfo
+  static char ID; // Class identification, replacement for typeinfo
   BasicCallGraph() : ModulePass((intptr_t)&ID), Root(0), 
     ExternalCallingNode(0), CallsExternalNode(0) {}
 
@@ -196,8 +196,8 @@
 
 } //End anonymous namespace
 
-const char CallGraph::ID = 0;
-const char BasicCallGraph::ID = 0;
+char CallGraph::ID = 0;
+char BasicCallGraph::ID = 0;
 
 void CallGraph::initialize(Module &M) {
   Mod = &M;
diff --git a/lib/Analysis/IPA/CallGraphSCCPass.cpp b/lib/Analysis/IPA/CallGraphSCCPass.cpp
index b75eae8..f05c8b8 100644
--- a/lib/Analysis/IPA/CallGraphSCCPass.cpp
+++ b/lib/Analysis/IPA/CallGraphSCCPass.cpp
@@ -30,7 +30,7 @@
 class CGPassManager : public ModulePass, public PMDataManager {
 
 public:
-  static const char ID;
+  static char ID;
   CGPassManager(int Depth) 
     : ModulePass((intptr_t)&ID), PMDataManager(Depth) { }
 
@@ -73,7 +73,7 @@
   }
 };
 
-const char CGPassManager::ID = 0;
+char CGPassManager::ID = 0;
 /// run - Execute all of the passes scheduled for execution.  Keep track of
 /// whether any of the passes modifies the module, and if so, return true.
 bool CGPassManager::runOnModule(Module &M) {
diff --git a/lib/Analysis/IPA/FindUsedTypes.cpp b/lib/Analysis/IPA/FindUsedTypes.cpp
index d52617d..a954414 100644
--- a/lib/Analysis/IPA/FindUsedTypes.cpp
+++ b/lib/Analysis/IPA/FindUsedTypes.cpp
@@ -21,7 +21,7 @@
 #include "llvm/Support/InstIterator.h"
 using namespace llvm;
 
-const char FindUsedTypes::ID = 0;
+char FindUsedTypes::ID = 0;
 static RegisterPass<FindUsedTypes>
 X("printusedtypes", "Find Used Types");
 
diff --git a/lib/Analysis/IPA/GlobalsModRef.cpp b/lib/Analysis/IPA/GlobalsModRef.cpp
index b704931..63ddb89 100644
--- a/lib/Analysis/IPA/GlobalsModRef.cpp
+++ b/lib/Analysis/IPA/GlobalsModRef.cpp
@@ -83,7 +83,7 @@
     std::map<Function*, FunctionRecord> FunctionInfo;
 
   public:
-    static const char ID;
+    static char ID;
     GlobalsModRef() : ModulePass((intptr_t)&ID) {}
 
     bool runOnModule(Module &M) {
@@ -146,7 +146,7 @@
     bool AnalyzeIndirectGlobalMemory(GlobalValue *GV);
   };
 
-  const char GlobalsModRef::ID = 0;
+  char GlobalsModRef::ID = 0;
   RegisterPass<GlobalsModRef> X("globalsmodref-aa",
                                 "Simple mod/ref analysis for globals");
   RegisterAnalysisGroup<AliasAnalysis> Y(X);
diff --git a/lib/Analysis/InstCount.cpp b/lib/Analysis/InstCount.cpp
index 87fcd8f..9b743fe 100644
--- a/lib/Analysis/InstCount.cpp
+++ b/lib/Analysis/InstCount.cpp
@@ -51,7 +51,7 @@
       abort();
     }
   public:
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     InstCount() : FunctionPass((intptr_t)&ID) {}
 
     virtual bool runOnFunction(Function &F);
@@ -63,7 +63,7 @@
 
   };
 
-  const char InstCount::ID = 0;
+  char InstCount::ID = 0;
   RegisterPass<InstCount> X("instcount",
                             "Counts the various types of Instructions");
 }
diff --git a/lib/Analysis/IntervalPartition.cpp b/lib/Analysis/IntervalPartition.cpp
index dab60d6..e339691 100644
--- a/lib/Analysis/IntervalPartition.cpp
+++ b/lib/Analysis/IntervalPartition.cpp
@@ -15,7 +15,7 @@
 #include "llvm/Analysis/IntervalIterator.h"
 using namespace llvm;
 
-const char IntervalPartition::ID = 0;
+char IntervalPartition::ID = 0;
 static RegisterPass<IntervalPartition>
 X("intervals", "Interval Partition Construction", true);
 
diff --git a/lib/Analysis/LoadValueNumbering.cpp b/lib/Analysis/LoadValueNumbering.cpp
index 6f4dbbb..ad5dd20 100644
--- a/lib/Analysis/LoadValueNumbering.cpp
+++ b/lib/Analysis/LoadValueNumbering.cpp
@@ -40,7 +40,7 @@
 namespace {
   // FIXME: This should not be a FunctionPass.
   struct VISIBILITY_HIDDEN LoadVN : public FunctionPass, public ValueNumbering {
-    static const char ID; // Class identification, replacement for typeinfo
+    static char ID; // Class identification, replacement for typeinfo
     LoadVN() : FunctionPass((intptr_t)&ID) {}
 
     /// Pass Implementation stuff.  This doesn't do any analysis.
@@ -83,7 +83,7 @@
                                  std::vector<Value*> &RetVals) const;
   };
 
-  const char LoadVN::ID = 0;
+  char LoadVN::ID = 0;
   // Register this pass...
   RegisterPass<LoadVN> X("load-vn", "Load Value Numbering");
 
diff --git a/lib/Analysis/LoopInfo.cpp b/lib/Analysis/LoopInfo.cpp
index f936706..154c922 100644
--- a/lib/Analysis/LoopInfo.cpp
+++ b/lib/Analysis/LoopInfo.cpp
@@ -27,7 +27,7 @@
 #include <ostream>
 using namespace llvm;
 
-const char LoopInfo::ID = 0;
+char LoopInfo::ID = 0;
 static RegisterPass<LoopInfo>
 X("loops", "Natural Loop Construction", true);
 
diff --git a/lib/Analysis/LoopPass.cpp b/lib/Analysis/LoopPass.cpp
index de0f21c..ab64c3c 100644
--- a/lib/Analysis/LoopPass.cpp
+++ b/lib/Analysis/LoopPass.cpp
@@ -21,7 +21,7 @@
 // LPPassManager
 //
 
-const char LPPassManager::ID = 0;
+char LPPassManager::ID = 0;
 /// LPPassManager manages FPPassManagers and CalLGraphSCCPasses.
 
 LPPassManager::LPPassManager(int Depth) 
diff --git a/lib/Analysis/PostDominators.cpp b/lib/Analysis/PostDominators.cpp
index a818e6a..6842440 100644
--- a/lib/Analysis/PostDominators.cpp
+++ b/lib/Analysis/PostDominators.cpp
@@ -22,9 +22,9 @@
 //  PostDominatorTree Implementation
 //===----------------------------------------------------------------------===//
 
-const char PostDominatorTree::ID = 0;
-const char PostDominanceFrontier::ID = 0;
-const char PostETForest::ID = 0;
+char PostDominatorTree::ID = 0;
+char PostDominanceFrontier::ID = 0;
+char PostETForest::ID = 0;
 static RegisterPass<PostDominatorTree>
 F("postdomtree", "Post-Dominator Tree Construction", true);
 
diff --git a/lib/Analysis/ProfileInfo.cpp b/lib/Analysis/ProfileInfo.cpp
index f487a05..c8dad66 100644
--- a/lib/Analysis/ProfileInfo.cpp
+++ b/lib/Analysis/ProfileInfo.cpp
@@ -24,7 +24,7 @@
 namespace {
   RegisterAnalysisGroup<ProfileInfo> Z("Profile Information");
 }
-const char ProfileInfo::ID = 0;
+char ProfileInfo::ID = 0;
 
 ProfileInfo::~ProfileInfo() {}
 
@@ -86,11 +86,11 @@
 namespace {
   struct VISIBILITY_HIDDEN NoProfileInfo 
     : public ImmutablePass, public ProfileInfo {
-    static const char ID; // Class identification, replacement for typeinfo
+    static char ID; // Class identification, replacement for typeinfo
     NoProfileInfo() : ImmutablePass((intptr_t)&ID) {}
   };
 
-  const char NoProfileInfo::ID = 0;
+  char NoProfileInfo::ID = 0;
   // Register this pass...
   RegisterPass<NoProfileInfo>
   X("no-profile", "No Profile Information");
diff --git a/lib/Analysis/ProfileInfoLoaderPass.cpp b/lib/Analysis/ProfileInfoLoaderPass.cpp
index ca6f4e4..e749375 100644
--- a/lib/Analysis/ProfileInfoLoaderPass.cpp
+++ b/lib/Analysis/ProfileInfoLoaderPass.cpp
@@ -32,7 +32,7 @@
   class VISIBILITY_HIDDEN LoaderPass : public ModulePass, public ProfileInfo {
     std::string Filename;
   public:
-    static const char ID; // Class identification, replacement for typeinfo
+    static char ID; // Class identification, replacement for typeinfo
     LoaderPass(const std::string &filename = "")
       : ModulePass((intptr_t)&ID), Filename(filename) {
       if (filename.empty()) Filename = ProfileInfoFilename;
@@ -50,7 +50,7 @@
     virtual bool runOnModule(Module &M);
   };
 
-  const char LoaderPass::ID = 0;
+  char LoaderPass::ID = 0;
   RegisterPass<LoaderPass>
   X("profile-loader", "Load profile information from llvmprof.out");
 
diff --git a/lib/Analysis/ScalarEvolution.cpp b/lib/Analysis/ScalarEvolution.cpp
index cef1dc2..1ff21a7 100644
--- a/lib/Analysis/ScalarEvolution.cpp
+++ b/lib/Analysis/ScalarEvolution.cpp
@@ -105,7 +105,7 @@
   RegisterPass<ScalarEvolution>
   R("scalar-evolution", "Scalar Evolution Analysis");
 }
-const char ScalarEvolution::ID = 0;
+char ScalarEvolution::ID = 0;
 
 //===----------------------------------------------------------------------===//
 //                           SCEV class definitions
diff --git a/lib/Analysis/ValueNumbering.cpp b/lib/Analysis/ValueNumbering.cpp
index b91286b..bdb9422 100644
--- a/lib/Analysis/ValueNumbering.cpp
+++ b/lib/Analysis/ValueNumbering.cpp
@@ -22,7 +22,7 @@
 #include "llvm/Support/Compiler.h"
 using namespace llvm;
 
-const char ValueNumbering::ID = 0;
+char ValueNumbering::ID = 0;
 // Register the ValueNumbering interface, providing a nice name to refer to.
 static RegisterAnalysisGroup<ValueNumbering> X("Value Numbering");
 
@@ -52,7 +52,7 @@
   ///
   struct VISIBILITY_HIDDEN BasicVN 
       : public ImmutablePass, public ValueNumbering {
-    static const char ID; // Class identification, replacement for typeinfo
+    static char ID; // Class identification, replacement for typeinfo
     BasicVN() : ImmutablePass((intptr_t)&ID) {}
 
     /// getEqualNumberNodes - Return nodes with the same value number as the
@@ -65,7 +65,7 @@
                                      std::vector<Value*> &RetVals) const;
   };
 
-  const char BasicVN::ID = 0;
+  char BasicVN::ID = 0;
   // Register this pass...
   RegisterPass<BasicVN>
   X("basicvn", "Basic Value Numbering (default GVN impl)");
diff --git a/lib/Bytecode/Writer/Writer.cpp b/lib/Bytecode/Writer/Writer.cpp
index 16a291a..ea5159b 100644
--- a/lib/Bytecode/Writer/Writer.cpp
+++ b/lib/Bytecode/Writer/Writer.cpp
@@ -47,7 +47,7 @@
 /// @brief The bytecode version number
 const unsigned BCVersionNum = 7;
 
-const char WriteBytecodePass::ID = 0;
+char WriteBytecodePass::ID = 0;
 static RegisterPass<WriteBytecodePass> X("emitbytecode", "Bytecode Writer");
 
 STATISTIC(BytesWritten, "Number of bytecode bytes written");
diff --git a/lib/CodeGen/AsmPrinter.cpp b/lib/CodeGen/AsmPrinter.cpp
index 999a91b..fd112a3 100644
--- a/lib/CodeGen/AsmPrinter.cpp
+++ b/lib/CodeGen/AsmPrinter.cpp
@@ -32,7 +32,7 @@
 static cl::opt<bool>
 AsmVerbose("asm-verbose", cl::Hidden, cl::desc("Add comments to directives."));
 
-const char AsmPrinter::ID = 0;
+char AsmPrinter::ID = 0;
 AsmPrinter::AsmPrinter(std::ostream &o, TargetMachine &tm,
                        const TargetAsmInfo *T)
   : MachineFunctionPass((intptr_t)&ID), FunctionNumber(0), O(o), TM(tm), TAI(T)
diff --git a/lib/CodeGen/BranchFolding.cpp b/lib/CodeGen/BranchFolding.cpp
index 2cad5a7..2abeb2d 100644
--- a/lib/CodeGen/BranchFolding.cpp
+++ b/lib/CodeGen/BranchFolding.cpp
@@ -39,7 +39,7 @@
 
 namespace {
   struct BranchFolder : public MachineFunctionPass {
-    static const char ID;
+    static char ID;
     BranchFolder() : MachineFunctionPass((intptr_t)&ID) {}
 
     virtual bool runOnMachineFunction(MachineFunction &MF);
@@ -67,7 +67,7 @@
                         MachineBasicBlock *TBB, MachineBasicBlock *FBB,
                         const std::vector<MachineOperand> &Cond);
   };
-  const char BranchFolder::ID = 0;
+  char BranchFolder::ID = 0;
 }
 
 FunctionPass *llvm::createBranchFoldingPass() { return new BranchFolder(); }
diff --git a/lib/CodeGen/ELFWriter.cpp b/lib/CodeGen/ELFWriter.cpp
index 9ca7cf1..8ecddb8 100644
--- a/lib/CodeGen/ELFWriter.cpp
+++ b/lib/CodeGen/ELFWriter.cpp
@@ -47,7 +47,7 @@
 #include <list>
 using namespace llvm;
 
-const char ELFWriter::ID = 0;
+char ELFWriter::ID = 0;
 /// AddELFWriter - Concrete function to add the ELF writer to the function pass
 /// manager.
 MachineCodeEmitter *llvm::AddELFWriter(FunctionPassManager &FPM,
diff --git a/lib/CodeGen/ELFWriter.h b/lib/CodeGen/ELFWriter.h
index f8f82de..04cd177 100644
--- a/lib/CodeGen/ELFWriter.h
+++ b/lib/CodeGen/ELFWriter.h
@@ -30,7 +30,7 @@
   class ELFWriter : public MachineFunctionPass {
     friend class ELFCodeEmitter;
   public:
-    static const char ID;
+    static char ID;
 
     MachineCodeEmitter &getMachineCodeEmitter() const {
       return *(MachineCodeEmitter*)MCE;
diff --git a/lib/CodeGen/LiveIntervalAnalysis.cpp b/lib/CodeGen/LiveIntervalAnalysis.cpp
index 5e69852..c816baf 100644
--- a/lib/CodeGen/LiveIntervalAnalysis.cpp
+++ b/lib/CodeGen/LiveIntervalAnalysis.cpp
@@ -44,7 +44,7 @@
 STATISTIC(numFolded   , "Number of loads/stores folded into instructions");
 STATISTIC(numAborts   , "Number of times interval joining aborted");
 
-const char LiveIntervals::ID = 0;
+char LiveIntervals::ID = 0;
 namespace {
   RegisterPass<LiveIntervals> X("liveintervals", "Live Interval Analysis");
 
diff --git a/lib/CodeGen/LiveVariables.cpp b/lib/CodeGen/LiveVariables.cpp
index 796f160..4afeb28 100644
--- a/lib/CodeGen/LiveVariables.cpp
+++ b/lib/CodeGen/LiveVariables.cpp
@@ -37,7 +37,7 @@
 #include <algorithm>
 using namespace llvm;
 
-const char LiveVariables::ID = 0;
+char LiveVariables::ID = 0;
 static RegisterPass<LiveVariables> X("livevars", "Live Variable Analysis");
 
 void LiveVariables::VarInfo::dump() const {
diff --git a/lib/CodeGen/MachOWriter.cpp b/lib/CodeGen/MachOWriter.cpp
index cec245d..36060e1 100644
--- a/lib/CodeGen/MachOWriter.cpp
+++ b/lib/CodeGen/MachOWriter.cpp
@@ -317,7 +317,7 @@
 //                          MachOWriter Implementation
 //===----------------------------------------------------------------------===//
 
-const char MachOWriter::ID = 0;
+char MachOWriter::ID = 0;
 MachOWriter::MachOWriter(std::ostream &o, TargetMachine &tm) 
   : MachineFunctionPass((intptr_t)&ID), O(o), TM(tm) {
   is64Bit = TM.getTargetData()->getPointerSizeInBits() == 64;
diff --git a/lib/CodeGen/MachOWriter.h b/lib/CodeGen/MachOWriter.h
index 6c44662..6d88832 100644
--- a/lib/CodeGen/MachOWriter.h
+++ b/lib/CodeGen/MachOWriter.h
@@ -84,7 +84,7 @@
   class MachOWriter : public MachineFunctionPass {
     friend class MachOCodeEmitter;
   public:
-    static const char ID;
+    static char ID;
     MachineCodeEmitter &getMachineCodeEmitter() const {
       return *(MachineCodeEmitter*)MCE;
     }
diff --git a/lib/CodeGen/MachineFunction.cpp b/lib/CodeGen/MachineFunction.cpp
index 9690eea..c762ae5 100644
--- a/lib/CodeGen/MachineFunction.cpp
+++ b/lib/CodeGen/MachineFunction.cpp
@@ -44,7 +44,7 @@
 
 namespace {
   struct VISIBILITY_HIDDEN Printer : public MachineFunctionPass {
-    static const char ID;
+    static char ID;
 
     std::ostream *OS;
     const std::string Banner;
@@ -64,7 +64,7 @@
       return false;
     }
   };
-  const char Printer::ID = 0;
+  char Printer::ID = 0;
 }
 
 /// Returns a newly-created MachineFunction Printer pass. The default output
@@ -77,7 +77,7 @@
 
 namespace {
   struct VISIBILITY_HIDDEN Deleter : public MachineFunctionPass {
-    static const char ID;
+    static char ID;
     Deleter() : MachineFunctionPass((intptr_t)&ID) {}
 
     const char *getPassName() const { return "Machine Code Deleter"; }
@@ -88,7 +88,7 @@
       return true;
     }
   };
-  const char Deleter::ID = 0;
+  char Deleter::ID = 0;
 }
 
 /// MachineCodeDeletion Pass - This pass deletes all of the machine code for
diff --git a/lib/CodeGen/MachineModuleInfo.cpp b/lib/CodeGen/MachineModuleInfo.cpp
index ab664ac..399fb0d 100644
--- a/lib/CodeGen/MachineModuleInfo.cpp
+++ b/lib/CodeGen/MachineModuleInfo.cpp
@@ -30,7 +30,7 @@
 namespace {
   RegisterPass<MachineModuleInfo> X("machinemoduleinfo", "Module Information");
 }
-const char MachineModuleInfo::ID = 0;
+char MachineModuleInfo::ID = 0;
 
 //===----------------------------------------------------------------------===//
 
@@ -1751,14 +1751,14 @@
 namespace llvm {
 
 struct DebugLabelFolder : public MachineFunctionPass {
-  static const char ID;
+  static char ID;
   DebugLabelFolder() : MachineFunctionPass((intptr_t)&ID) {}
 
   virtual bool runOnMachineFunction(MachineFunction &MF);
   virtual const char *getPassName() const { return "Label Folder"; }
 };
 
-const char DebugLabelFolder::ID = 0;
+char DebugLabelFolder::ID = 0;
 
 bool DebugLabelFolder::runOnMachineFunction(MachineFunction &MF) {
   // Get machine module info.
diff --git a/lib/CodeGen/PHIElimination.cpp b/lib/CodeGen/PHIElimination.cpp
index 91dbc2e..9b5a115 100644
--- a/lib/CodeGen/PHIElimination.cpp
+++ b/lib/CodeGen/PHIElimination.cpp
@@ -33,7 +33,7 @@
 
 namespace {
   struct VISIBILITY_HIDDEN PNE : public MachineFunctionPass {
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     PNE() : MachineFunctionPass((intptr_t)&ID) {}
 
     bool runOnMachineFunction(MachineFunction &Fn) {
@@ -76,7 +76,7 @@
     VRegPHIUse VRegPHIUseCount;
   };
 
-  const char PNE::ID = 0;
+  char PNE::ID = 0;
   RegisterPass<PNE> X("phi-node-elimination",
                       "Eliminate PHI nodes for register allocation");
 }
diff --git a/lib/CodeGen/PrologEpilogInserter.cpp b/lib/CodeGen/PrologEpilogInserter.cpp
index 18b2d7d..55172b5 100644
--- a/lib/CodeGen/PrologEpilogInserter.cpp
+++ b/lib/CodeGen/PrologEpilogInserter.cpp
@@ -32,7 +32,7 @@
 
 namespace {
   struct VISIBILITY_HIDDEN PEI : public MachineFunctionPass {
-    static const char ID;
+    static char ID;
     PEI() : MachineFunctionPass((intptr_t)&ID) {}
 
     const char *getPassName() const {
@@ -101,7 +101,7 @@
     void replaceFrameIndices(MachineFunction &Fn);
     void insertPrologEpilogCode(MachineFunction &Fn);
   };
-  const char PEI::ID = 0;
+  char PEI::ID = 0;
 }
 
 
diff --git a/lib/CodeGen/RegAllocLinearScan.cpp b/lib/CodeGen/RegAllocLinearScan.cpp
index 1e345a4..35fc9ff 100644
--- a/lib/CodeGen/RegAllocLinearScan.cpp
+++ b/lib/CodeGen/RegAllocLinearScan.cpp
@@ -48,7 +48,7 @@
   static unsigned numIntervals = 0;
 
   struct VISIBILITY_HIDDEN RA : public MachineFunctionPass {
-    static const char ID;
+    static char ID;
     RA() : MachineFunctionPass((intptr_t)&ID) {}
 
     typedef std::pair<LiveInterval*, LiveInterval::iterator> IntervalPtr;
@@ -149,7 +149,7 @@
       }
     }
   };
-  const char RA::ID = 0;
+  char RA::ID = 0;
 }
 
 void RA::ComputeRelatedRegClasses() {
diff --git a/lib/CodeGen/RegAllocLocal.cpp b/lib/CodeGen/RegAllocLocal.cpp
index 500ed87..ca4962e 100644
--- a/lib/CodeGen/RegAllocLocal.cpp
+++ b/lib/CodeGen/RegAllocLocal.cpp
@@ -44,7 +44,7 @@
 
   class VISIBILITY_HIDDEN RA : public MachineFunctionPass {
   public:
-    static const char ID;
+    static char ID;
     RA() : MachineFunctionPass((intptr_t)&ID) {}
   private:
     const TargetMachine *TM;
@@ -228,7 +228,7 @@
     void reloadPhysReg(MachineBasicBlock &MBB, MachineBasicBlock::iterator &I,
                        unsigned PhysReg);
   };
-  const char RA::ID = 0;
+  char RA::ID = 0;
 }
 
 /// getStackSpaceFor - This allocates space for the specified virtual register
diff --git a/lib/CodeGen/RegAllocSimple.cpp b/lib/CodeGen/RegAllocSimple.cpp
index 181ba03..f49dd4c 100644
--- a/lib/CodeGen/RegAllocSimple.cpp
+++ b/lib/CodeGen/RegAllocSimple.cpp
@@ -39,7 +39,7 @@
 
   class VISIBILITY_HIDDEN RegAllocSimple : public MachineFunctionPass {
   public:
-    static const char ID;
+    static char ID;
     RegAllocSimple() : MachineFunctionPass((intptr_t)&ID) {}
   private:
     MachineFunction *MF;
@@ -94,7 +94,7 @@
     void spillVirtReg(MachineBasicBlock &MBB, MachineBasicBlock::iterator I,
                       unsigned VirtReg, unsigned PhysReg);
   };
-  const char RegAllocSimple::ID = 0;
+  char RegAllocSimple::ID = 0;
 }
 
 /// getStackSpaceFor - This allocates space for the specified virtual
diff --git a/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp b/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
index 8bd6c97..2546314 100644
--- a/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
+++ b/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
@@ -5012,4 +5012,4 @@
     Ops.push_back(InOps.back());
 }
 
-const char SelectionDAGISel::ID = 0;
+char SelectionDAGISel::ID = 0;
diff --git a/lib/CodeGen/TwoAddressInstructionPass.cpp b/lib/CodeGen/TwoAddressInstructionPass.cpp
index dfbc4a7..e3a38f6 100644
--- a/lib/CodeGen/TwoAddressInstructionPass.cpp
+++ b/lib/CodeGen/TwoAddressInstructionPass.cpp
@@ -50,7 +50,7 @@
 namespace {
   struct VISIBILITY_HIDDEN TwoAddressInstructionPass
    : public MachineFunctionPass {
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     TwoAddressInstructionPass() : MachineFunctionPass((intptr_t)&ID) {}
 
     virtual void getAnalysisUsage(AnalysisUsage &AU) const;
@@ -59,7 +59,7 @@
     bool runOnMachineFunction(MachineFunction&);
   };
 
-  const char TwoAddressInstructionPass::ID = 0;
+  char TwoAddressInstructionPass::ID = 0;
   RegisterPass<TwoAddressInstructionPass>
   X("twoaddressinstruction", "Two-Address instruction pass");
 }
diff --git a/lib/CodeGen/UnreachableBlockElim.cpp b/lib/CodeGen/UnreachableBlockElim.cpp
index 24ee42e..f1d092d 100644
--- a/lib/CodeGen/UnreachableBlockElim.cpp
+++ b/lib/CodeGen/UnreachableBlockElim.cpp
@@ -35,10 +35,10 @@
   class VISIBILITY_HIDDEN UnreachableBlockElim : public FunctionPass {
     virtual bool runOnFunction(Function &F);
   public:
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     UnreachableBlockElim() : FunctionPass((intptr_t)&ID) {}
   };
-  const char UnreachableBlockElim::ID = 0;
+  char UnreachableBlockElim::ID = 0;
   RegisterPass<UnreachableBlockElim>
   X("unreachableblockelim", "Remove unreachable blocks from the CFG");
 }
diff --git a/lib/Target/ARM/ARMConstantIslandPass.cpp b/lib/Target/ARM/ARMConstantIslandPass.cpp
index 405ac0a..1d76ddc 100644
--- a/lib/Target/ARM/ARMConstantIslandPass.cpp
+++ b/lib/Target/ARM/ARMConstantIslandPass.cpp
@@ -128,7 +128,7 @@
     ARMFunctionInfo *AFI;
     bool isThumb;
   public:
-    static const char ID;
+    static char ID;
     ARMConstantIslands() : MachineFunctionPass((intptr_t)&ID) {}
 
     virtual bool runOnMachineFunction(MachineFunction &Fn);
@@ -174,7 +174,7 @@
     void dumpBBs();
     void verify(MachineFunction &Fn);
   };
-  const char ARMConstantIslands::ID = 0;
+  char ARMConstantIslands::ID = 0;
 }
 
 /// verify - check BBOffsets, BBSizes, alignment of islands
diff --git a/lib/Target/ARM/ARMLoadStoreOptimizer.cpp b/lib/Target/ARM/ARMLoadStoreOptimizer.cpp
index 83509d8..5d45568 100644
--- a/lib/Target/ARM/ARMLoadStoreOptimizer.cpp
+++ b/lib/Target/ARM/ARMLoadStoreOptimizer.cpp
@@ -38,7 +38,7 @@
 
 namespace {
   struct VISIBILITY_HIDDEN ARMLoadStoreOpt : public MachineFunctionPass {
-    static const char ID;
+    static char ID;
     ARMLoadStoreOpt() : MachineFunctionPass((intptr_t)&ID) {}
 
     const TargetInstrInfo *TII;
@@ -73,7 +73,7 @@
     bool LoadStoreMultipleOpti(MachineBasicBlock &MBB);
     bool MergeReturnIntoLDM(MachineBasicBlock &MBB);
   };
-  const char ARMLoadStoreOpt::ID = 0;
+  char ARMLoadStoreOpt::ID = 0;
 }
 
 /// createARMLoadStoreOptimizationPass - returns an instance of the load / store
diff --git a/lib/Target/Alpha/AlphaBranchSelector.cpp b/lib/Target/Alpha/AlphaBranchSelector.cpp
index a9b9c63..ac789b3 100644
--- a/lib/Target/Alpha/AlphaBranchSelector.cpp
+++ b/lib/Target/Alpha/AlphaBranchSelector.cpp
@@ -22,7 +22,7 @@
 
 namespace {
   struct VISIBILITY_HIDDEN AlphaBSel : public MachineFunctionPass {
-    static const char ID;
+    static char ID;
     AlphaBSel() : MachineFunctionPass((intptr_t)&ID) {}
 
     virtual bool runOnMachineFunction(MachineFunction &Fn);
@@ -31,7 +31,7 @@
       return "Alpha Branch Selection";
     }
   };
-  const char AlphaBSel::ID = 0;
+  char AlphaBSel::ID = 0;
 }
 
 /// createAlphaBranchSelectionPass - returns an instance of the Branch Selection
diff --git a/lib/Target/Alpha/AlphaCodeEmitter.cpp b/lib/Target/Alpha/AlphaCodeEmitter.cpp
index 23552fa..3549551 100644
--- a/lib/Target/Alpha/AlphaCodeEmitter.cpp
+++ b/lib/Target/Alpha/AlphaCodeEmitter.cpp
@@ -36,7 +36,7 @@
     int getMachineOpValue(MachineInstr &MI, MachineOperand &MO);
 
   public:
-    static const char ID;
+    static char ID;
     explicit AlphaCodeEmitter(TargetMachine &tm, MachineCodeEmitter &mce)
       : MachineFunctionPass((intptr_t)&ID), II(0), TM(tm), MCE(mce) {}
     AlphaCodeEmitter(TargetMachine &tm, MachineCodeEmitter &mce,
@@ -61,7 +61,7 @@
     void emitBasicBlock(MachineBasicBlock &MBB);
 
   };
-  const char AlphaCodeEmitter::ID = 0;
+  char AlphaCodeEmitter::ID = 0;
 }
 
 /// createAlphaCodeEmitterPass - Return a pass that emits the collected Alpha code
diff --git a/lib/Target/Alpha/AlphaLLRP.cpp b/lib/Target/Alpha/AlphaLLRP.cpp
index ee745b5..27c2738 100644
--- a/lib/Target/Alpha/AlphaLLRP.cpp
+++ b/lib/Target/Alpha/AlphaLLRP.cpp
@@ -37,7 +37,7 @@
     ///
     AlphaTargetMachine &TM;
 
-    static const char ID;
+    static char ID;
     AlphaLLRPPass(AlphaTargetMachine &tm) 
       : MachineFunctionPass((intptr_t)&ID), TM(tm) { }
 
@@ -154,7 +154,7 @@
       return Changed;
     }
   };
-  const char AlphaLLRPPass::ID = 0;
+  char AlphaLLRPPass::ID = 0;
 } // end of anonymous namespace
 
 FunctionPass *llvm::createAlphaLLRPPass(AlphaTargetMachine &tm) {
diff --git a/lib/Target/CBackend/CBackend.cpp b/lib/Target/CBackend/CBackend.cpp
index 0fd03e0..7568472 100644
--- a/lib/Target/CBackend/CBackend.cpp
+++ b/lib/Target/CBackend/CBackend.cpp
@@ -57,7 +57,7 @@
   ///
   class CBackendNameAllUsedStructsAndMergeFunctions : public ModulePass {
   public:
-    static const char ID;
+    static char ID;
     CBackendNameAllUsedStructsAndMergeFunctions() 
       : ModulePass((intptr_t)&ID) {}
     void getAnalysisUsage(AnalysisUsage &AU) const {
@@ -71,7 +71,7 @@
     virtual bool runOnModule(Module &M);
   };
 
-  const char CBackendNameAllUsedStructsAndMergeFunctions::ID = 0;
+  char CBackendNameAllUsedStructsAndMergeFunctions::ID = 0;
 
   /// CWriter - This class is the main chunk of code that converts an LLVM
   /// module to a C translation unit.
@@ -88,7 +88,7 @@
     std::set<Function*> intrinsicPrototypesAlreadyGenerated;
 
   public:
-    static const char ID;
+    static char ID;
     CWriter(std::ostream &o) 
       : FunctionPass((intptr_t)&ID), Out(o), IL(0), Mang(0), LI(0), 
         TheModule(0), TAsm(0), TD(0) {}
@@ -264,7 +264,7 @@
   };
 }
 
-const char CWriter::ID = 0;
+char CWriter::ID = 0;
 
 /// This method inserts names for any unnamed structure types that are used by
 /// the program, and removes names from structure types that are not used by the
diff --git a/lib/Target/IA64/IA64Bundling.cpp b/lib/Target/IA64/IA64Bundling.cpp
index afe029c..6c9fa29 100644
--- a/lib/Target/IA64/IA64Bundling.cpp
+++ b/lib/Target/IA64/IA64Bundling.cpp
@@ -36,7 +36,7 @@
 
 namespace {
   struct IA64BundlingPass : public MachineFunctionPass {
-    static const char ID;
+    static char ID;
     /// Target machine description which we query for reg. names, data
     /// layout, etc.
     ///
@@ -63,7 +63,7 @@
     // 'fallthrough' code
     std::set<unsigned> PendingRegWrites;
   };
-  const char IA64BundlingPass::ID = 0;
+  char IA64BundlingPass::ID = 0;
 } // end of anonymous namespace
 
 /// createIA64BundlingPass - Returns a pass that adds STOP (;;) instructions
diff --git a/lib/Target/MSIL/MSILWriter.cpp b/lib/Target/MSIL/MSILWriter.cpp
index 029094c..37aed43 100644
--- a/lib/Target/MSIL/MSILWriter.cpp
+++ b/lib/Target/MSIL/MSILWriter.cpp
@@ -80,8 +80,8 @@
   return Changed;
 }
 
-const char MSILModule::ID = 0;
-const char MSILWriter::ID = 0;
+char MSILModule::ID = 0;
+char MSILWriter::ID = 0;
 
 bool MSILWriter::runOnFunction(Function &F) {
   if (F.isDeclaration()) return false;
diff --git a/lib/Target/MSIL/MSILWriter.h b/lib/Target/MSIL/MSILWriter.h
index 6746d67..3db825f 100644
--- a/lib/Target/MSIL/MSILWriter.h
+++ b/lib/Target/MSIL/MSILWriter.h
@@ -37,7 +37,7 @@
     const TargetData*& TD;
 
   public:
-    static const char ID;
+    static char ID;
     MSILModule(const std::set<const Type *>*& _UsedTypes,
                const TargetData*& _TD)
       : ModulePass((intptr_t)&ID), UsedTypes(_UsedTypes), TD(_TD) {}
@@ -83,7 +83,7 @@
     std::map<const GlobalVariable*,std::vector<StaticInitializer> >
       StaticInitList;
     const std::set<const Type *>* UsedTypes;
-    static const char ID;
+    static char ID;
     MSILWriter(std::ostream &o) : FunctionPass((intptr_t)&ID), Out(o) {
       UniqID = 0;
     }
diff --git a/lib/Target/PowerPC/PPCBranchSelector.cpp b/lib/Target/PowerPC/PPCBranchSelector.cpp
index 28a61c0..4286f01 100644
--- a/lib/Target/PowerPC/PPCBranchSelector.cpp
+++ b/lib/Target/PowerPC/PPCBranchSelector.cpp
@@ -32,7 +32,7 @@
 
 namespace {
   struct VISIBILITY_HIDDEN PPCBSel : public MachineFunctionPass {
-    static const char ID;
+    static char ID;
     PPCBSel() : MachineFunctionPass((intptr_t)&ID) {}
 
     /// BlockSizes - The sizes of the basic blocks in the function.
@@ -44,7 +44,7 @@
       return "PowerPC Branch Selector";
     }
   };
-  const char PPCBSel::ID = 0;
+  char PPCBSel::ID = 0;
 }
 
 /// createPPCBranchSelectionPass - returns an instance of the Branch Selection
diff --git a/lib/Target/PowerPC/PPCCodeEmitter.cpp b/lib/Target/PowerPC/PPCCodeEmitter.cpp
index cffc128..446e031 100644
--- a/lib/Target/PowerPC/PPCCodeEmitter.cpp
+++ b/lib/Target/PowerPC/PPCCodeEmitter.cpp
@@ -40,7 +40,7 @@
     int getMachineOpValue(MachineInstr &MI, MachineOperand &MO);
 
   public:
-    static const char ID;
+    static char ID;
     PPCCodeEmitter(TargetMachine &T, MachineCodeEmitter &M)
       : MachineFunctionPass((intptr_t)&ID), TM(T), MCE(M) {}
 
@@ -64,7 +64,7 @@
     ///
     unsigned getBinaryCodeForInstr(MachineInstr &MI);
   };
-  const char PPCCodeEmitter::ID = 0;
+  char PPCCodeEmitter::ID = 0;
 }
 
 /// createPPCCodeEmitterPass - Return a pass that emits the collected PPC code
diff --git a/lib/Target/Sparc/DelaySlotFiller.cpp b/lib/Target/Sparc/DelaySlotFiller.cpp
index 57eb1a1..784f1bd 100644
--- a/lib/Target/Sparc/DelaySlotFiller.cpp
+++ b/lib/Target/Sparc/DelaySlotFiller.cpp
@@ -30,7 +30,7 @@
     TargetMachine &TM;
     const TargetInstrInfo *TII;
 
-    static const char ID;
+    static char ID;
     Filler(TargetMachine &tm) 
       : MachineFunctionPass((intptr_t)&ID), TM(tm), TII(tm.getInstrInfo()) { }
 
@@ -48,7 +48,7 @@
     }
 
   };
-  const char Filler::ID = 0;
+  char Filler::ID = 0;
 } // end of anonymous namespace
 
 /// createSparcDelaySlotFillerPass - Returns a pass that fills in delay
diff --git a/lib/Target/Sparc/FPMover.cpp b/lib/Target/Sparc/FPMover.cpp
index ca70a9c..e1c9966 100644
--- a/lib/Target/Sparc/FPMover.cpp
+++ b/lib/Target/Sparc/FPMover.cpp
@@ -32,7 +32,7 @@
     ///
     TargetMachine &TM;
     
-    static const char ID;
+    static char ID;
     FPMover(TargetMachine &tm) 
       : MachineFunctionPass((intptr_t)&ID), TM(tm) { }
 
@@ -43,7 +43,7 @@
     bool runOnMachineBasicBlock(MachineBasicBlock &MBB);
     bool runOnMachineFunction(MachineFunction &F);
   };
-  const char FPMover::ID = 0;
+  char FPMover::ID = 0;
 } // end of anonymous namespace
 
 /// createSparcFPMoverPass - Returns a pass that turns FpMOVD
diff --git a/lib/Target/TargetData.cpp b/lib/Target/TargetData.cpp
index d4c9e58..301e8c1 100644
--- a/lib/Target/TargetData.cpp
+++ b/lib/Target/TargetData.cpp
@@ -35,7 +35,7 @@
   // Register the default SparcV9 implementation...
   RegisterPass<TargetData> X("targetdata", "Target Data Layout");
 }
-const char TargetData::ID = 0;
+char TargetData::ID = 0;
 
 //===----------------------------------------------------------------------===//
 // Support for StructLayout
diff --git a/lib/Target/X86/X86CodeEmitter.cpp b/lib/Target/X86/X86CodeEmitter.cpp
index 244ddc0..8b22634 100644
--- a/lib/Target/X86/X86CodeEmitter.cpp
+++ b/lib/Target/X86/X86CodeEmitter.cpp
@@ -39,7 +39,7 @@
     MachineCodeEmitter  &MCE;
     bool Is64BitMode;
   public:
-    static const char ID;
+    static char ID;
     explicit Emitter(TargetMachine &tm, MachineCodeEmitter &mce)
       : MachineFunctionPass((intptr_t)&ID), II(0), TD(0), TM(tm), 
       MCE(mce), Is64BitMode(false) {}
@@ -82,7 +82,7 @@
     bool isX86_64ExtendedReg(const MachineOperand &MO);
     unsigned determineREX(const MachineInstr &MI);
   };
-  const char Emitter::ID = 0;
+  char Emitter::ID = 0;
 }
 
 /// createX86CodeEmitterPass - Return a pass that emits the collected X86 code
diff --git a/lib/Target/X86/X86FloatingPoint.cpp b/lib/Target/X86/X86FloatingPoint.cpp
index 9a048cc..0c5ded8 100644
--- a/lib/Target/X86/X86FloatingPoint.cpp
+++ b/lib/Target/X86/X86FloatingPoint.cpp
@@ -52,7 +52,7 @@
 
 namespace {
   struct VISIBILITY_HIDDEN FPS : public MachineFunctionPass {
-    static const char ID;
+    static char ID;
     FPS() : MachineFunctionPass((intptr_t)&ID) {}
 
     virtual bool runOnMachineFunction(MachineFunction &MF);
@@ -154,7 +154,7 @@
     void handleCondMovFP(MachineBasicBlock::iterator &I);
     void handleSpecialFP(MachineBasicBlock::iterator &I);
   };
-  const char FPS::ID = 0;
+  char FPS::ID = 0;
 }
 
 FunctionPass *llvm::createX86FloatingPointStackifierPass() { return new FPS(); }
diff --git a/lib/Transforms/Hello/Hello.cpp b/lib/Transforms/Hello/Hello.cpp
index 2db4990..ca8f89d 100644
--- a/lib/Transforms/Hello/Hello.cpp
+++ b/lib/Transforms/Hello/Hello.cpp
@@ -25,7 +25,7 @@
 namespace {
   // Hello - The first implementation, without getAnalysisUsage.
   struct Hello : public FunctionPass {
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     Hello() : FunctionPass((intptr_t)&ID) {}
 
     virtual bool runOnFunction(Function &F) {
@@ -37,12 +37,12 @@
     }
   };
 
-  const char Hello::ID = 0;
+  char Hello::ID = 0;
   RegisterPass<Hello> X("hello", "Hello World Pass");
 
   // Hello2 - The second implementation with getAnalysisUsage implemented.
   struct Hello2 : public FunctionPass {
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     Hello2() : FunctionPass((intptr_t)&ID) {}
 
     virtual bool runOnFunction(Function &F) {
@@ -58,7 +58,7 @@
       AU.setPreservesAll();
     };
   };
-  const char Hello2::ID = 0;
+  char Hello2::ID = 0;
   RegisterPass<Hello2> Y("hello2",
                         "Hello World Pass (with getAnalysisUsage implemented)");
 }
diff --git a/lib/Transforms/IPO/ArgumentPromotion.cpp b/lib/Transforms/IPO/ArgumentPromotion.cpp
index a91dbc2..5a6b466 100644
--- a/lib/Transforms/IPO/ArgumentPromotion.cpp
+++ b/lib/Transforms/IPO/ArgumentPromotion.cpp
@@ -63,7 +63,7 @@
     }
 
     virtual bool runOnSCC(const std::vector<CallGraphNode *> &SCC);
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     ArgPromotion() : CallGraphSCCPass((intptr_t)&ID) {}
 
   private:
@@ -72,7 +72,7 @@
     Function *DoPromotion(Function *F, std::vector<Argument*> &ArgsToPromote);
   };
 
-  const char ArgPromotion::ID = 0;
+  char ArgPromotion::ID = 0;
   RegisterPass<ArgPromotion> X("argpromotion",
                                "Promote 'by reference' arguments to scalars");
 }
diff --git a/lib/Transforms/IPO/ConstantMerge.cpp b/lib/Transforms/IPO/ConstantMerge.cpp
index 635caf5..c13b69f 100644
--- a/lib/Transforms/IPO/ConstantMerge.cpp
+++ b/lib/Transforms/IPO/ConstantMerge.cpp
@@ -29,7 +29,7 @@
 
 namespace {
   struct VISIBILITY_HIDDEN ConstantMerge : public ModulePass {
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     ConstantMerge() : ModulePass((intptr_t)&ID) {}
 
     // run - For this pass, process all of the globals in the module,
@@ -38,7 +38,7 @@
     bool runOnModule(Module &M);
   };
 
-  const char ConstantMerge::ID = 0;
+  char ConstantMerge::ID = 0;
   RegisterPass<ConstantMerge>X("constmerge","Merge Duplicate Global Constants");
 }
 
diff --git a/lib/Transforms/IPO/DeadArgumentElimination.cpp b/lib/Transforms/IPO/DeadArgumentElimination.cpp
index f355021..019949c 100644
--- a/lib/Transforms/IPO/DeadArgumentElimination.cpp
+++ b/lib/Transforms/IPO/DeadArgumentElimination.cpp
@@ -76,7 +76,7 @@
     std::multimap<Function*, CallSite> CallSites;
 
   public:
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     DAE() : ModulePass((intptr_t)&ID) {}
     bool runOnModule(Module &M);
 
@@ -95,17 +95,17 @@
 
     void RemoveDeadArgumentsFromFunction(Function *F);
   };
-  const char DAE::ID = 0;
+  char DAE::ID = 0;
   RegisterPass<DAE> X("deadargelim", "Dead Argument Elimination");
 
   /// DAH - DeadArgumentHacking pass - Same as dead argument elimination, but
   /// deletes arguments to functions which are external.  This is only for use
   /// by bugpoint.
   struct DAH : public DAE {
-    static const char ID;
+    static char ID;
     virtual bool ShouldHackArguments() const { return true; }
   };
-  const char DAH::ID = 0;
+  char DAH::ID = 0;
   RegisterPass<DAH> Y("deadarghaX0r",
                       "Dead Argument Hacking (BUGPOINT USE ONLY; DO NOT USE)");
 }
diff --git a/lib/Transforms/IPO/DeadTypeElimination.cpp b/lib/Transforms/IPO/DeadTypeElimination.cpp
index 4dff7a3..a2ee18e 100644
--- a/lib/Transforms/IPO/DeadTypeElimination.cpp
+++ b/lib/Transforms/IPO/DeadTypeElimination.cpp
@@ -26,7 +26,7 @@
 
 namespace {
   struct VISIBILITY_HIDDEN DTE : public ModulePass {
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     DTE() : ModulePass((intptr_t)&ID) {}
 
     // doPassInitialization - For this pass, it removes global symbol table
@@ -43,7 +43,7 @@
       AU.addRequired<FindUsedTypes>();
     }
   };
-  const char DTE::ID = 0;
+  char DTE::ID = 0;
   RegisterPass<DTE> X("deadtypeelim", "Dead Type Elimination");
 }
 
diff --git a/lib/Transforms/IPO/ExtractFunction.cpp b/lib/Transforms/IPO/ExtractFunction.cpp
index 2d5c034..1a284c4 100644
--- a/lib/Transforms/IPO/ExtractFunction.cpp
+++ b/lib/Transforms/IPO/ExtractFunction.cpp
@@ -25,7 +25,7 @@
     bool deleteFunc;
     bool reLink;
   public:
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
 
     /// FunctionExtractorPass - If deleteFn is true, this pass deletes as the
     /// specified function. Otherwise, it deletes as much of the module as
@@ -134,7 +134,7 @@
     }
   };
 
-  const char FunctionExtractorPass::ID = 0;
+  char FunctionExtractorPass::ID = 0;
   RegisterPass<FunctionExtractorPass> X("extract", "Function Extractor");
 }
 
diff --git a/lib/Transforms/IPO/GlobalDCE.cpp b/lib/Transforms/IPO/GlobalDCE.cpp
index 4a08b45..f309847 100644
--- a/lib/Transforms/IPO/GlobalDCE.cpp
+++ b/lib/Transforms/IPO/GlobalDCE.cpp
@@ -30,7 +30,7 @@
 
 namespace {
   struct VISIBILITY_HIDDEN GlobalDCE : public ModulePass {
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     GlobalDCE() : ModulePass((intptr_t)&ID) {}
  
     // run - Do the GlobalDCE pass on the specified module, optionally updating
@@ -49,7 +49,7 @@
     bool SafeToDestroyConstant(Constant* C);
     bool RemoveUnusedGlobalValue(GlobalValue &GV);
   };
-  const char GlobalDCE::ID = 0;
+  char GlobalDCE::ID = 0;
   RegisterPass<GlobalDCE> X("globaldce", "Dead Global Elimination");
 }
 
diff --git a/lib/Transforms/IPO/GlobalOpt.cpp b/lib/Transforms/IPO/GlobalOpt.cpp
index 421bda6..6aea4aa 100644
--- a/lib/Transforms/IPO/GlobalOpt.cpp
+++ b/lib/Transforms/IPO/GlobalOpt.cpp
@@ -50,7 +50,7 @@
     virtual void getAnalysisUsage(AnalysisUsage &AU) const {
       AU.addRequired<TargetData>();
     }
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     GlobalOpt() : ModulePass((intptr_t)&ID) {}
 
     bool runOnModule(Module &M);
@@ -63,7 +63,7 @@
     bool ProcessInternalGlobal(GlobalVariable *GV,Module::global_iterator &GVI);
   };
 
-  const char GlobalOpt::ID = 0;
+  char GlobalOpt::ID = 0;
   RegisterPass<GlobalOpt> X("globalopt", "Global Variable Optimizer");
 }
 
diff --git a/lib/Transforms/IPO/IPConstantPropagation.cpp b/lib/Transforms/IPO/IPConstantPropagation.cpp
index 00b829e..8321b22 100644
--- a/lib/Transforms/IPO/IPConstantPropagation.cpp
+++ b/lib/Transforms/IPO/IPConstantPropagation.cpp
@@ -33,7 +33,7 @@
   /// IPCP - The interprocedural constant propagation pass
   ///
   struct VISIBILITY_HIDDEN IPCP : public ModulePass {
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     IPCP() : ModulePass((intptr_t)&ID) {}
 
     bool runOnModule(Module &M);
@@ -41,7 +41,7 @@
     bool PropagateConstantsIntoArguments(Function &F);
     bool PropagateConstantReturn(Function &F);
   };
-  const char IPCP::ID = 0;
+  char IPCP::ID = 0;
   RegisterPass<IPCP> X("ipconstprop", "Interprocedural constant propagation");
 }
 
diff --git a/lib/Transforms/IPO/IndMemRemoval.cpp b/lib/Transforms/IPO/IndMemRemoval.cpp
index 5dd82bd..f21e4f6 100644
--- a/lib/Transforms/IPO/IndMemRemoval.cpp
+++ b/lib/Transforms/IPO/IndMemRemoval.cpp
@@ -32,12 +32,12 @@
 namespace {
   class VISIBILITY_HIDDEN IndMemRemPass : public ModulePass {
   public:
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     IndMemRemPass() : ModulePass((intptr_t)&ID) {}
 
     virtual bool runOnModule(Module &M);
   };
-  const char IndMemRemPass::ID = 0;
+  char IndMemRemPass::ID = 0;
   RegisterPass<IndMemRemPass> X("indmemrem","Indirect Malloc and Free Removal");
 } // end anonymous namespace
 
diff --git a/lib/Transforms/IPO/InlineSimple.cpp b/lib/Transforms/IPO/InlineSimple.cpp
index a300c62..85061d7 100644
--- a/lib/Transforms/IPO/InlineSimple.cpp
+++ b/lib/Transforms/IPO/InlineSimple.cpp
@@ -54,10 +54,10 @@
   class VISIBILITY_HIDDEN SimpleInliner : public Inliner {
     std::map<const Function*, FunctionInfo> CachedFunctionInfo;
   public:
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     int getInlineCost(CallSite CS);
   };
-  const char SimpleInliner::ID = 0;
+  char SimpleInliner::ID = 0;
   RegisterPass<SimpleInliner> X("inline", "Function Integration/Inlining");
 }
 
diff --git a/lib/Transforms/IPO/Inliner.cpp b/lib/Transforms/IPO/Inliner.cpp
index d769043..cd204a7 100644
--- a/lib/Transforms/IPO/Inliner.cpp
+++ b/lib/Transforms/IPO/Inliner.cpp
@@ -36,7 +36,7 @@
         cl::desc("Control the amount of inlining to perform (default = 200)"));
 }
 
-const char Inliner::ID = 0;
+char Inliner::ID = 0;
 Inliner::Inliner() 
   : CallGraphSCCPass((intptr_t)&ID), InlineThreshold(InlineLimit) {}
 
diff --git a/lib/Transforms/IPO/Inliner.h b/lib/Transforms/IPO/Inliner.h
index 6a7c665..80be81a 100644
--- a/lib/Transforms/IPO/Inliner.h
+++ b/lib/Transforms/IPO/Inliner.h
@@ -27,7 +27,7 @@
 /// perform the inlining operations that does not depend on the policy.
 ///
 struct Inliner : public CallGraphSCCPass {
-  static const char ID;
+  static char ID;
   Inliner();
 
   /// getAnalysisUsage - For this class, we declare that we require and preserve
diff --git a/lib/Transforms/IPO/Internalize.cpp b/lib/Transforms/IPO/Internalize.cpp
index eeabc3f..5046401 100644
--- a/lib/Transforms/IPO/Internalize.cpp
+++ b/lib/Transforms/IPO/Internalize.cpp
@@ -46,13 +46,13 @@
     std::set<std::string> ExternalNames;
     bool DontInternalize;
   public:
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     InternalizePass(bool InternalizeEverything = true);
     InternalizePass(const std::vector <const char *>& exportList);
     void LoadFile(const char *Filename);
     virtual bool runOnModule(Module &M);
   };
-  const char InternalizePass::ID = 0;
+  char InternalizePass::ID = 0;
   RegisterPass<InternalizePass> X("internalize", "Internalize Global Symbols");
 } // end anonymous namespace
 
diff --git a/lib/Transforms/IPO/LoopExtractor.cpp b/lib/Transforms/IPO/LoopExtractor.cpp
index dc0ad43..7b10186 100644
--- a/lib/Transforms/IPO/LoopExtractor.cpp
+++ b/lib/Transforms/IPO/LoopExtractor.cpp
@@ -34,7 +34,7 @@
   // Module passes to require FunctionPasses, so we can't get loop info if we're
   // not a function pass.
   struct VISIBILITY_HIDDEN LoopExtractor : public FunctionPass {
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     unsigned NumLoops;
 
     LoopExtractor(unsigned numLoops = ~0) 
@@ -51,17 +51,17 @@
     }
   };
 
-  const char LoopExtractor::ID = 0;
+  char LoopExtractor::ID = 0;
   RegisterPass<LoopExtractor>
   X("loop-extract", "Extract loops into new functions");
 
   /// SingleLoopExtractor - For bugpoint.
   struct SingleLoopExtractor : public LoopExtractor {
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     SingleLoopExtractor() : LoopExtractor(1) {}
   };
 
-  const char SingleLoopExtractor::ID = 0;
+  char SingleLoopExtractor::ID = 0;
   RegisterPass<SingleLoopExtractor>
   Y("loop-extract-single", "Extract at most one loop into a new function");
 } // End anonymous namespace
@@ -152,7 +152,7 @@
   class BlockExtractorPass : public ModulePass {
     std::vector<BasicBlock*> BlocksToNotExtract;
   public:
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     BlockExtractorPass(std::vector<BasicBlock*> &B) 
       : ModulePass((intptr_t)&ID), BlocksToNotExtract(B) {}
     BlockExtractorPass() : ModulePass((intptr_t)&ID) {}
@@ -160,7 +160,7 @@
     bool runOnModule(Module &M);
   };
 
-  const char BlockExtractorPass::ID = 0;
+  char BlockExtractorPass::ID = 0;
   RegisterPass<BlockExtractorPass>
   XX("extract-blocks", "Extract Basic Blocks From Module (for bugpoint use)");
 }
diff --git a/lib/Transforms/IPO/LowerSetJmp.cpp b/lib/Transforms/IPO/LowerSetJmp.cpp
index 1fd9071..1f83add 100644
--- a/lib/Transforms/IPO/LowerSetJmp.cpp
+++ b/lib/Transforms/IPO/LowerSetJmp.cpp
@@ -109,7 +109,7 @@
 
     bool IsTransformableFunction(const std::string& Name);
   public:
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     LowerSetJmp() : ModulePass((intptr_t)&ID) {}
 
     void visitCallInst(CallInst& CI);
@@ -121,7 +121,7 @@
     bool doInitialization(Module& M);
   };
 
-  const char LowerSetJmp::ID = 0;
+  char LowerSetJmp::ID = 0;
   RegisterPass<LowerSetJmp> X("lowersetjmp", "Lower Set Jump");
 } // end anonymous namespace
 
diff --git a/lib/Transforms/IPO/PruneEH.cpp b/lib/Transforms/IPO/PruneEH.cpp
index 3d70f16..6f497e2 100644
--- a/lib/Transforms/IPO/PruneEH.cpp
+++ b/lib/Transforms/IPO/PruneEH.cpp
@@ -35,7 +35,7 @@
 
 namespace {
   struct VISIBILITY_HIDDEN PruneEH : public CallGraphSCCPass {
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     PruneEH() : CallGraphSCCPass((intptr_t)&ID) {}
 
     /// DoesNotUnwind - This set contains all of the functions which we have
@@ -53,7 +53,7 @@
     void DeleteBasicBlock(BasicBlock *BB);
   };
 
-  const char PruneEH::ID = 0;
+  char PruneEH::ID = 0;
   RegisterPass<PruneEH> X("prune-eh", "Remove unused exception handling info");
 }
 
diff --git a/lib/Transforms/IPO/RaiseAllocations.cpp b/lib/Transforms/IPO/RaiseAllocations.cpp
index 7b338b1..6b8f7e6 100644
--- a/lib/Transforms/IPO/RaiseAllocations.cpp
+++ b/lib/Transforms/IPO/RaiseAllocations.cpp
@@ -35,7 +35,7 @@
     Function *MallocFunc;   // Functions in the module we are processing
     Function *FreeFunc;     // Initialized by doPassInitializationVirt
   public:
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     RaiseAllocations() 
       : ModulePass((intptr_t)&ID), MallocFunc(0), FreeFunc(0) {}
 
@@ -49,7 +49,7 @@
     bool runOnModule(Module &M);
   };
 
-  const char RaiseAllocations::ID = 0;
+  char RaiseAllocations::ID = 0;
   RegisterPass<RaiseAllocations>
   X("raiseallocs", "Raise allocations from calls to instructions");
 }  // end anonymous namespace
diff --git a/lib/Transforms/IPO/SimplifyLibCalls.cpp b/lib/Transforms/IPO/SimplifyLibCalls.cpp
index 8e5567c..b55b9c5 100644
--- a/lib/Transforms/IPO/SimplifyLibCalls.cpp
+++ b/lib/Transforms/IPO/SimplifyLibCalls.cpp
@@ -152,7 +152,7 @@
 /// @brief A ModulePass for optimizing well-known function calls.
 class VISIBILITY_HIDDEN SimplifyLibCalls : public ModulePass {
 public:
-  static const char ID; // Pass identifcation, replacement for typeid
+  static char ID; // Pass identifcation, replacement for typeid
   SimplifyLibCalls() : ModulePass((intptr_t)&ID) {}
 
   /// We need some target data for accurate signature details that are
@@ -376,7 +376,7 @@
   TargetData *TD;        ///< Cached TargetData
 };
 
-const char SimplifyLibCalls::ID = 0;
+char SimplifyLibCalls::ID = 0;
 // Register the pass
 RegisterPass<SimplifyLibCalls>
 X("simplify-libcalls", "Simplify well-known library calls");
diff --git a/lib/Transforms/IPO/StripDeadPrototypes.cpp b/lib/Transforms/IPO/StripDeadPrototypes.cpp
index d40e743..5d30969 100644
--- a/lib/Transforms/IPO/StripDeadPrototypes.cpp
+++ b/lib/Transforms/IPO/StripDeadPrototypes.cpp
@@ -27,12 +27,12 @@
 /// @brief Pass to remove unused function declarations.
 class VISIBILITY_HIDDEN StripDeadPrototypesPass : public ModulePass {
 public:
-  static const char ID; // Pass identifcation, replacement for typeid
+  static char ID; // Pass identifcation, replacement for typeid
   StripDeadPrototypesPass() : ModulePass((intptr_t)&ID) { }
   virtual bool runOnModule(Module &M);
 };
 
-const char StripDeadPrototypesPass::ID = 0;
+char StripDeadPrototypesPass::ID = 0;
 RegisterPass<StripDeadPrototypesPass> X("strip-dead-prototypes", 
                                         "Strip Unused Function Prototypes");
 
diff --git a/lib/Transforms/IPO/StripSymbols.cpp b/lib/Transforms/IPO/StripSymbols.cpp
index 50a5aba..b19f327 100644
--- a/lib/Transforms/IPO/StripSymbols.cpp
+++ b/lib/Transforms/IPO/StripSymbols.cpp
@@ -37,7 +37,7 @@
   class VISIBILITY_HIDDEN StripSymbols : public ModulePass {
     bool OnlyDebugInfo;
   public:
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     StripSymbols(bool ODI = false) 
       : ModulePass((intptr_t)&ID), OnlyDebugInfo(ODI) {}
 
@@ -48,7 +48,7 @@
     }
   };
 
-  const char StripSymbols::ID = 0;
+  char StripSymbols::ID = 0;
   RegisterPass<StripSymbols> X("strip", "Strip all symbols from a module");
 }
 
diff --git a/lib/Transforms/Instrumentation/BlockProfiling.cpp b/lib/Transforms/Instrumentation/BlockProfiling.cpp
index c3f5022..f772dd4 100644
--- a/lib/Transforms/Instrumentation/BlockProfiling.cpp
+++ b/lib/Transforms/Instrumentation/BlockProfiling.cpp
@@ -33,11 +33,11 @@
 namespace {
   class VISIBILITY_HIDDEN FunctionProfiler : public RSProfilers_std {
   public:
-    static const char ID;
+    static char ID;
     bool runOnModule(Module &M);
   };
 
-  const char FunctionProfiler::ID = 0;
+  char FunctionProfiler::ID = 0;
 
   RegisterPass<FunctionProfiler> X("insert-function-profiling",
                                "Insert instrumentation for function profiling");
@@ -84,10 +84,10 @@
   class BlockProfiler : public RSProfilers_std {
     bool runOnModule(Module &M);
   public:
-    static const char ID;
+    static char ID;
   };
 
-  const char BlockProfiler::ID = 0;
+  char BlockProfiler::ID = 0;
   RegisterPass<BlockProfiler> Y("insert-block-profiling",
                                 "Insert instrumentation for block profiling");
   RegisterAnalysisGroup<RSProfilers> YG(Y);
diff --git a/lib/Transforms/Instrumentation/EdgeProfiling.cpp b/lib/Transforms/Instrumentation/EdgeProfiling.cpp
index 07024cd..4cf65a8 100644
--- a/lib/Transforms/Instrumentation/EdgeProfiling.cpp
+++ b/lib/Transforms/Instrumentation/EdgeProfiling.cpp
@@ -33,11 +33,11 @@
   class VISIBILITY_HIDDEN EdgeProfiler : public ModulePass {
     bool runOnModule(Module &M);
   public:
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     EdgeProfiler() : ModulePass((intptr_t)&ID) {}
   };
 
-  const char EdgeProfiler::ID = 0;
+  char EdgeProfiler::ID = 0;
   RegisterPass<EdgeProfiler> X("insert-edge-profiling",
                                "Insert instrumentation for edge profiling");
 }
diff --git a/lib/Transforms/Instrumentation/RSProfiling.cpp b/lib/Transforms/Instrumentation/RSProfiling.cpp
index f19e9b4..bd8e55f 100644
--- a/lib/Transforms/Instrumentation/RSProfiling.cpp
+++ b/lib/Transforms/Instrumentation/RSProfiling.cpp
@@ -69,7 +69,7 @@
   /// measuring framework overhead
   class VISIBILITY_HIDDEN NullProfilerRS : public RSProfilers {
   public:
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     bool isProfiling(Value* v) {
       return false;
     }
@@ -139,7 +139,7 @@
 
   /// ProfilerRS - Insert the random sampling framework
   struct VISIBILITY_HIDDEN ProfilerRS : public FunctionPass {
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     ProfilerRS() : FunctionPass((intptr_t)&ID) {}
 
     std::map<Value*, Value*> TransCache;
@@ -162,9 +162,9 @@
                              "Insert random sampling instrumentation framework");
 }
 
-const char RSProfilers::ID = 0;
-const char NullProfilerRS::ID = 0;
-const char ProfilerRS::ID = 0;
+char RSProfilers::ID = 0;
+char NullProfilerRS::ID = 0;
+char ProfilerRS::ID = 0;
 
 //Local utilities
 static void ReplacePhiPred(BasicBlock* btarget, 
diff --git a/lib/Transforms/Instrumentation/RSProfiling.h b/lib/Transforms/Instrumentation/RSProfiling.h
index c1250a2..b7c31f2 100644
--- a/lib/Transforms/Instrumentation/RSProfiling.h
+++ b/lib/Transforms/Instrumentation/RSProfiling.h
@@ -17,7 +17,7 @@
   /// RSProfilers_std - a simple support class for profilers that handles most
   /// of the work of chaining and tracking inserted code.
   struct RSProfilers_std : public RSProfilers {
-    static const char ID;
+    static char ID;
     std::set<Value*> profcode;
     // Lookup up values in profcode
     virtual bool isProfiling(Value* v);
diff --git a/lib/Transforms/Scalar/ADCE.cpp b/lib/Transforms/Scalar/ADCE.cpp
index c7aae4b..9eb739e 100644
--- a/lib/Transforms/Scalar/ADCE.cpp
+++ b/lib/Transforms/Scalar/ADCE.cpp
@@ -52,7 +52,7 @@
   // The public interface for this class
   //
 public:
-  static const char ID; // Pass identifcation, replacement for typeid
+  static char ID; // Pass identifcation, replacement for typeid
   ADCE() : FunctionPass((intptr_t)&ID) {}
 
   // Execute the Aggressive Dead Code Elimination Algorithm
@@ -107,7 +107,7 @@
   }
 };
 
-  const char ADCE::ID = 0;
+  char ADCE::ID = 0;
   RegisterPass<ADCE> X("adce", "Aggressive Dead Code Elimination");
 } // End of anonymous namespace
 
diff --git a/lib/Transforms/Scalar/BasicBlockPlacement.cpp b/lib/Transforms/Scalar/BasicBlockPlacement.cpp
index b8f1d50..28e8012 100644
--- a/lib/Transforms/Scalar/BasicBlockPlacement.cpp
+++ b/lib/Transforms/Scalar/BasicBlockPlacement.cpp
@@ -41,7 +41,7 @@
 
 namespace {
   struct VISIBILITY_HIDDEN BlockPlacement : public FunctionPass {
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     BlockPlacement() : FunctionPass((intptr_t)&ID) {}
 
     virtual bool runOnFunction(Function &F);
@@ -73,7 +73,7 @@
     void PlaceBlocks(BasicBlock *BB);
   };
 
-  const char BlockPlacement::ID = 0;
+  char BlockPlacement::ID = 0;
   RegisterPass<BlockPlacement> X("block-placement",
                                  "Profile Guided Basic Block Placement");
 }
diff --git a/lib/Transforms/Scalar/CodeGenPrepare.cpp b/lib/Transforms/Scalar/CodeGenPrepare.cpp
index a40d133..c077f7c 100644
--- a/lib/Transforms/Scalar/CodeGenPrepare.cpp
+++ b/lib/Transforms/Scalar/CodeGenPrepare.cpp
@@ -39,7 +39,7 @@
     /// transformation profitability.
     const TargetLowering *TLI;
   public:
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     CodeGenPrepare(const TargetLowering *tli = 0) : FunctionPass((intptr_t)&ID),
       TLI(tli) {}
     bool runOnFunction(Function &F);
@@ -55,7 +55,7 @@
   };
 }
 
-const char CodeGenPrepare::ID = 0;
+char CodeGenPrepare::ID = 0;
 static RegisterPass<CodeGenPrepare> X("codegenprepare",
                                       "Optimize for code generation");
 
diff --git a/lib/Transforms/Scalar/CondPropagate.cpp b/lib/Transforms/Scalar/CondPropagate.cpp
index c1dd9ed..84e9782 100644
--- a/lib/Transforms/Scalar/CondPropagate.cpp
+++ b/lib/Transforms/Scalar/CondPropagate.cpp
@@ -31,7 +31,7 @@
 
 namespace {
   struct VISIBILITY_HIDDEN CondProp : public FunctionPass {
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     CondProp() : FunctionPass((intptr_t)&ID) {}
 
     virtual bool runOnFunction(Function &F);
@@ -49,7 +49,7 @@
     void RevectorBlockTo(BasicBlock *FromBB, BasicBlock *ToBB);
   };
   
-  const char CondProp::ID = 0;
+  char CondProp::ID = 0;
   RegisterPass<CondProp> X("condprop", "Conditional Propagation");
 }
 
diff --git a/lib/Transforms/Scalar/ConstantProp.cpp b/lib/Transforms/Scalar/ConstantProp.cpp
index 26d3260..8fbed88 100644
--- a/lib/Transforms/Scalar/ConstantProp.cpp
+++ b/lib/Transforms/Scalar/ConstantProp.cpp
@@ -34,7 +34,7 @@
 
 namespace {
   struct VISIBILITY_HIDDEN ConstantPropagation : public FunctionPass {
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     ConstantPropagation() : FunctionPass((intptr_t)&ID) {}
 
     bool runOnFunction(Function &F);
@@ -44,7 +44,7 @@
     }
   };
 
-  const char ConstantPropagation::ID = 0;
+  char ConstantPropagation::ID = 0;
   RegisterPass<ConstantPropagation> X("constprop",
                                       "Simple constant propagation");
 }
diff --git a/lib/Transforms/Scalar/CorrelatedExprs.cpp b/lib/Transforms/Scalar/CorrelatedExprs.cpp
index c6f4dd7..d1d3fed 100644
--- a/lib/Transforms/Scalar/CorrelatedExprs.cpp
+++ b/lib/Transforms/Scalar/CorrelatedExprs.cpp
@@ -225,7 +225,7 @@
     std::map<BasicBlock*, RegionInfo> RegionInfoMap;
     ETForest *EF;
   public:
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     CEE() : FunctionPass((intptr_t)&ID) {}
 
     virtual bool runOnFunction(Function &F);
@@ -288,7 +288,7 @@
     bool SimplifyInstruction(Instruction *Inst, const RegionInfo &RI);
   };
   
-  const char CEE::ID = 0;
+  char CEE::ID = 0;
   RegisterPass<CEE> X("cee", "Correlated Expression Elimination");
 }
 
diff --git a/lib/Transforms/Scalar/DCE.cpp b/lib/Transforms/Scalar/DCE.cpp
index 9a8b39f..1469c66 100644
--- a/lib/Transforms/Scalar/DCE.cpp
+++ b/lib/Transforms/Scalar/DCE.cpp
@@ -35,7 +35,7 @@
   // DeadInstElimination pass implementation
   //
   struct VISIBILITY_HIDDEN DeadInstElimination : public BasicBlockPass {
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     DeadInstElimination() : BasicBlockPass(intptr_t(&ID)) {}
     virtual bool runOnBasicBlock(BasicBlock &BB) {
       bool Changed = false;
@@ -53,7 +53,7 @@
     }
   };
 
-  const char DeadInstElimination::ID = 0;
+  char DeadInstElimination::ID = 0;
   RegisterPass<DeadInstElimination> X("die", "Dead Instruction Elimination");
 }
 
@@ -67,7 +67,7 @@
   // DeadCodeElimination pass implementation
   //
   struct DCE : public FunctionPass {
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     DCE() : FunctionPass((intptr_t)&ID) {}
 
     virtual bool runOnFunction(Function &F);
@@ -77,7 +77,7 @@
     }
  };
 
-  const char DCE::ID = 0;
+  char DCE::ID = 0;
   RegisterPass<DCE> Y("dce", "Dead Code Elimination");
 }
 
diff --git a/lib/Transforms/Scalar/DeadStoreElimination.cpp b/lib/Transforms/Scalar/DeadStoreElimination.cpp
index aef6653..9a30994 100644
--- a/lib/Transforms/Scalar/DeadStoreElimination.cpp
+++ b/lib/Transforms/Scalar/DeadStoreElimination.cpp
@@ -34,7 +34,7 @@
 
 namespace {
   struct VISIBILITY_HIDDEN DSE : public FunctionPass {
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     DSE() : FunctionPass((intptr_t)&ID) {}
 
     virtual bool runOnFunction(Function &F) {
@@ -58,7 +58,7 @@
       AU.addPreserved<AliasAnalysis>();
     }
   };
-  const char DSE::ID = 0;
+  char DSE::ID = 0;
   RegisterPass<DSE> X("dse", "Dead Store Elimination");
 }
 
diff --git a/lib/Transforms/Scalar/GCSE.cpp b/lib/Transforms/Scalar/GCSE.cpp
index 2cf8b64..fa9867a 100644
--- a/lib/Transforms/Scalar/GCSE.cpp
+++ b/lib/Transforms/Scalar/GCSE.cpp
@@ -37,7 +37,7 @@
                           "with constant values");
 namespace {
   struct VISIBILITY_HIDDEN GCSE : public FunctionPass {
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     GCSE() : FunctionPass((intptr_t)&ID) {}
 
     virtual bool runOnFunction(Function &F);
@@ -54,7 +54,7 @@
     }
   };
 
-  const char GCSE::ID = 0;
+  char GCSE::ID = 0;
   RegisterPass<GCSE> X("gcse", "Global Common Subexpression Elimination");
 }
 
diff --git a/lib/Transforms/Scalar/IndVarSimplify.cpp b/lib/Transforms/Scalar/IndVarSimplify.cpp
index c7262a0..4e18512 100644
--- a/lib/Transforms/Scalar/IndVarSimplify.cpp
+++ b/lib/Transforms/Scalar/IndVarSimplify.cpp
@@ -69,7 +69,7 @@
     bool Changed;
   public:
 
-   static const char ID; // Pass identifcation, replacement for typeid
+   static char ID; // Pass identifcation, replacement for typeid
    IndVarSimplify() : LoopPass((intptr_t)&ID) {}
 
    bool runOnLoop(Loop *L, LPPassManager &LPM);
@@ -95,7 +95,7 @@
     void DeleteTriviallyDeadInstructions(std::set<Instruction*> &Insts);
   };
 
-  const char IndVarSimplify::ID = 0;
+  char IndVarSimplify::ID = 0;
   RegisterPass<IndVarSimplify> X("indvars", "Canonicalize Induction Variables");
 }
 
diff --git a/lib/Transforms/Scalar/InstructionCombining.cpp b/lib/Transforms/Scalar/InstructionCombining.cpp
index 8da33c5..b80d4d6 100644
--- a/lib/Transforms/Scalar/InstructionCombining.cpp
+++ b/lib/Transforms/Scalar/InstructionCombining.cpp
@@ -76,7 +76,7 @@
     TargetData *TD;
     bool MustPreserveLCSSA;
   public:
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     InstCombiner() : FunctionPass((intptr_t)&ID) {}
 
     /// AddToWorkList - Add the specified instruction to the worklist if it
@@ -361,7 +361,7 @@
     Value *EvaluateInDifferentType(Value *V, const Type *Ty, bool isSigned);
   };
 
-  const char InstCombiner::ID = 0;
+  char InstCombiner::ID = 0;
   RegisterPass<InstCombiner> X("instcombine", "Combine redundant instructions");
 }
 
diff --git a/lib/Transforms/Scalar/LICM.cpp b/lib/Transforms/Scalar/LICM.cpp
index d3b4353..27b0f2e 100644
--- a/lib/Transforms/Scalar/LICM.cpp
+++ b/lib/Transforms/Scalar/LICM.cpp
@@ -63,7 +63,7 @@
                    cl::desc("Disable memory promotion in LICM pass"));
 
   struct VISIBILITY_HIDDEN LICM : public LoopPass {
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     LICM() : LoopPass((intptr_t)&ID) {}
 
     virtual bool runOnLoop(Loop *L, LPPassManager &LPM);
@@ -204,7 +204,7 @@
                                     std::map<Value*, AllocaInst*> &Val2AlMap);
   };
 
-  const char LICM::ID = 0;
+  char LICM::ID = 0;
   RegisterPass<LICM> X("licm", "Loop Invariant Code Motion");
 }
 
diff --git a/lib/Transforms/Scalar/LoopRotation.cpp b/lib/Transforms/Scalar/LoopRotation.cpp
index b746e1d..9532bcf 100644
--- a/lib/Transforms/Scalar/LoopRotation.cpp
+++ b/lib/Transforms/Scalar/LoopRotation.cpp
@@ -44,7 +44,7 @@
   class VISIBILITY_HIDDEN LoopRotate : public LoopPass {
 
   public:
-    static const char ID; // Pass ID, replacement for typeid
+    static char ID; // Pass ID, replacement for typeid
     LoopRotate() : LoopPass((intptr_t)&ID) {}
 
     // Rotate Loop L as many times as possible. Return true if
@@ -94,7 +94,7 @@
     SmallVector<RenameData, MAX_HEADER_SIZE> LoopHeaderInfo;
   };
   
-  const char LoopRotate::ID = 0;
+  char LoopRotate::ID = 0;
   RegisterPass<LoopRotate> X ("loop-rotate", "Rotate Loops");
 }
 
diff --git a/lib/Transforms/Scalar/LoopStrengthReduce.cpp b/lib/Transforms/Scalar/LoopStrengthReduce.cpp
index c728d6e..bf0484c 100644
--- a/lib/Transforms/Scalar/LoopStrengthReduce.cpp
+++ b/lib/Transforms/Scalar/LoopStrengthReduce.cpp
@@ -143,7 +143,7 @@
     const TargetLowering *TLI;
 
   public:
-    static const char ID; // Pass ID, replacement for typeid
+    static char ID; // Pass ID, replacement for typeid
     LoopStrengthReduce(const TargetLowering *tli = NULL) : 
       LoopPass((intptr_t)&ID), TLI(tli) {
     }
@@ -188,7 +188,7 @@
                                       Loop *L, bool isOnlyStride);
     void DeleteTriviallyDeadInstructions(std::set<Instruction*> &Insts);
   };
-  const char LoopStrengthReduce::ID = 0;
+  char LoopStrengthReduce::ID = 0;
   RegisterPass<LoopStrengthReduce> X("loop-reduce", "Loop Strength Reduction");
 }
 
diff --git a/lib/Transforms/Scalar/LoopUnroll.cpp b/lib/Transforms/Scalar/LoopUnroll.cpp
index b3671a9..e4be2d2 100644
--- a/lib/Transforms/Scalar/LoopUnroll.cpp
+++ b/lib/Transforms/Scalar/LoopUnroll.cpp
@@ -49,7 +49,7 @@
   class VISIBILITY_HIDDEN LoopUnroll : public LoopPass {
     LoopInfo *LI;  // The current loop information
   public:
-    static const char ID; // Pass ID, replacement for typeid
+    static char ID; // Pass ID, replacement for typeid
     LoopUnroll()  : LoopPass((intptr_t)&ID) {}
 
     bool runOnLoop(Loop *L, LPPassManager &LPM);
@@ -66,7 +66,7 @@
       AU.addPreserved<LoopInfo>();
     }
   };
-  const char LoopUnroll::ID = 0;
+  char LoopUnroll::ID = 0;
   RegisterPass<LoopUnroll> X("loop-unroll", "Unroll loops");
 }
 
diff --git a/lib/Transforms/Scalar/LoopUnswitch.cpp b/lib/Transforms/Scalar/LoopUnswitch.cpp
index b46c29c..5fea7cb 100644
--- a/lib/Transforms/Scalar/LoopUnswitch.cpp
+++ b/lib/Transforms/Scalar/LoopUnswitch.cpp
@@ -69,7 +69,7 @@
     SmallPtrSet<Value *,8> UnswitchedVals;
 
   public:
-    static const char ID; // Pass ID, replacement for typeid
+    static char ID; // Pass ID, replacement for typeid
     LoopUnswitch() : LoopPass((intptr_t)&ID) {}
 
     bool runOnLoop(Loop *L, LPPassManager &LPM);
@@ -112,7 +112,7 @@
                            std::vector<Instruction*> &Worklist);
     void RemoveLoopFromHierarchy(Loop *L);
   };
-  const char LoopUnswitch::ID = 0;
+  char LoopUnswitch::ID = 0;
   RegisterPass<LoopUnswitch> X("loop-unswitch", "Unswitch loops");
 }
 
diff --git a/lib/Transforms/Scalar/LowerGC.cpp b/lib/Transforms/Scalar/LowerGC.cpp
index 9cf3ad1..3a620da 100644
--- a/lib/Transforms/Scalar/LowerGC.cpp
+++ b/lib/Transforms/Scalar/LowerGC.cpp
@@ -47,7 +47,7 @@
     /// had zero roots.
     const Type *MainRootRecordType;
   public:
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     LowerGC() : FunctionPass((intptr_t)&ID), 
                 GCRootInt(0), GCReadInt(0), GCWriteInt(0),
                 GCRead(0), GCWrite(0), RootChain(0), MainRootRecordType(0) {}
@@ -58,7 +58,7 @@
     const StructType *getRootRecordType(unsigned NumRoots);
   };
 
-  const char LowerGC::ID = 0;
+  char LowerGC::ID = 0;
   RegisterPass<LowerGC>
   X("lowergc", "Lower GC intrinsics, for GCless code generators");
 }
diff --git a/lib/Transforms/Scalar/LowerPacked.cpp b/lib/Transforms/Scalar/LowerPacked.cpp
index c80d14a..78b6214 100644
--- a/lib/Transforms/Scalar/LowerPacked.cpp
+++ b/lib/Transforms/Scalar/LowerPacked.cpp
@@ -40,7 +40,7 @@
 class VISIBILITY_HIDDEN LowerPacked 
   : public FunctionPass, public InstVisitor<LowerPacked> {
 public:
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     LowerPacked() : FunctionPass((intptr_t)&ID) {}
 
    /// @brief Lowers packed operations to scalar operations.
@@ -107,7 +107,7 @@
    std::vector<Instruction*> instrsToRemove;
 };
 
-const char LowerPacked::ID = 0;
+char LowerPacked::ID = 0;
 RegisterPass<LowerPacked>
 X("lower-packed",
   "lowers packed operations to operations on smaller packed datatypes");
diff --git a/lib/Transforms/Scalar/PredicateSimplifier.cpp b/lib/Transforms/Scalar/PredicateSimplifier.cpp
index f9f8713..3b1b2cf 100644
--- a/lib/Transforms/Scalar/PredicateSimplifier.cpp
+++ b/lib/Transforms/Scalar/PredicateSimplifier.cpp
@@ -1989,7 +1989,7 @@
     std::vector<DominatorTree::Node *> WorkList;
 
   public:
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     PredicateSimplifier() : FunctionPass((intptr_t)&ID) {}
 
     bool runOnFunction(Function &F);
@@ -2377,7 +2377,7 @@
     }
   }
 
-  const char PredicateSimplifier::ID = 0;
+  char PredicateSimplifier::ID = 0;
   RegisterPass<PredicateSimplifier> X("predsimplify",
                                       "Predicate Simplifier");
 }
diff --git a/lib/Transforms/Scalar/Reassociate.cpp b/lib/Transforms/Scalar/Reassociate.cpp
index da9efac..929154f 100644
--- a/lib/Transforms/Scalar/Reassociate.cpp
+++ b/lib/Transforms/Scalar/Reassociate.cpp
@@ -69,7 +69,7 @@
     std::map<Value*, unsigned> ValueRankMap;
     bool MadeChange;
   public:
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     Reassociate() : FunctionPass((intptr_t)&ID) {}
 
     bool runOnFunction(Function &F);
@@ -92,7 +92,7 @@
     void RemoveDeadBinaryOp(Value *V);
   };
 
-  const char Reassociate::ID = 0;
+  char Reassociate::ID = 0;
   RegisterPass<Reassociate> X("reassociate", "Reassociate expressions");
 }
 
diff --git a/lib/Transforms/Scalar/Reg2Mem.cpp b/lib/Transforms/Scalar/Reg2Mem.cpp
index 17f19d7..53df484 100644
--- a/lib/Transforms/Scalar/Reg2Mem.cpp
+++ b/lib/Transforms/Scalar/Reg2Mem.cpp
@@ -33,7 +33,7 @@
 
 namespace {
   struct VISIBILITY_HIDDEN RegToMem : public FunctionPass {
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     RegToMem() : FunctionPass((intptr_t)&ID) {}
 
     virtual void getAnalysisUsage(AnalysisUsage &AU) const {
@@ -78,7 +78,7 @@
     }
   };
   
-  const char RegToMem::ID = 0;
+  char RegToMem::ID = 0;
   RegisterPass<RegToMem> X("reg2mem", "Demote all values to stack slots");
 }
 
diff --git a/lib/Transforms/Scalar/SCCP.cpp b/lib/Transforms/Scalar/SCCP.cpp
index b90fc40..8aaf844 100644
--- a/lib/Transforms/Scalar/SCCP.cpp
+++ b/lib/Transforms/Scalar/SCCP.cpp
@@ -1334,7 +1334,7 @@
   /// Sparse Conditional Constant Propagator.
   ///
   struct VISIBILITY_HIDDEN SCCP : public FunctionPass {
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     SCCP() : FunctionPass((intptr_t)&ID) {}
 
     // runOnFunction - Run the Sparse Conditional Constant Propagation
@@ -1347,7 +1347,7 @@
     }
   };
 
-  const char SCCP::ID = 0;
+  char SCCP::ID = 0;
   RegisterPass<SCCP> X("sccp", "Sparse Conditional Constant Propagation");
 } // end anonymous namespace
 
@@ -1447,12 +1447,12 @@
   /// Constant Propagation.
   ///
   struct VISIBILITY_HIDDEN IPSCCP : public ModulePass {
-    static const char ID;
+    static char ID;
     IPSCCP() : ModulePass((intptr_t)&ID) {}
     bool runOnModule(Module &M);
   };
 
-  const char IPSCCP::ID = 0;
+  char IPSCCP::ID = 0;
   RegisterPass<IPSCCP>
   Y("ipsccp", "Interprocedural Sparse Conditional Constant Propagation");
 } // end anonymous namespace
diff --git a/lib/Transforms/Scalar/ScalarReplAggregates.cpp b/lib/Transforms/Scalar/ScalarReplAggregates.cpp
index f0faa87..4943626 100644
--- a/lib/Transforms/Scalar/ScalarReplAggregates.cpp
+++ b/lib/Transforms/Scalar/ScalarReplAggregates.cpp
@@ -47,7 +47,7 @@
 
 namespace {
   struct VISIBILITY_HIDDEN SROA : public FunctionPass {
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     SROA() : FunctionPass((intptr_t)&ID) {}
 
     bool runOnFunction(Function &F);
@@ -84,7 +84,7 @@
     static Instruction *isOnlyCopiedFromConstantGlobal(AllocationInst *AI);
   };
 
-  const char SROA::ID = 0;
+  char SROA::ID = 0;
   RegisterPass<SROA> X("scalarrepl", "Scalar Replacement of Aggregates");
 }
 
diff --git a/lib/Transforms/Scalar/SimplifyCFG.cpp b/lib/Transforms/Scalar/SimplifyCFG.cpp
index b8ebbdb..cbd0d48 100644
--- a/lib/Transforms/Scalar/SimplifyCFG.cpp
+++ b/lib/Transforms/Scalar/SimplifyCFG.cpp
@@ -35,12 +35,12 @@
 
 namespace {
   struct VISIBILITY_HIDDEN CFGSimplifyPass : public FunctionPass {
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     CFGSimplifyPass() : FunctionPass((intptr_t)&ID) {}
 
     virtual bool runOnFunction(Function &F);
   };
-  const char CFGSimplifyPass::ID = 0;
+  char CFGSimplifyPass::ID = 0;
   RegisterPass<CFGSimplifyPass> X("simplifycfg", "Simplify the CFG");
 }
 
diff --git a/lib/Transforms/Scalar/TailDuplication.cpp b/lib/Transforms/Scalar/TailDuplication.cpp
index b218628..877e674 100644
--- a/lib/Transforms/Scalar/TailDuplication.cpp
+++ b/lib/Transforms/Scalar/TailDuplication.cpp
@@ -43,14 +43,14 @@
   class VISIBILITY_HIDDEN TailDup : public FunctionPass {
     bool runOnFunction(Function &F);
   public:
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     TailDup() : FunctionPass((intptr_t)&ID) {}
 
   private:
     inline bool shouldEliminateUnconditionalBranch(TerminatorInst *TI);
     inline void eliminateUnconditionalBranch(BranchInst *BI);
   };
-  const char TailDup::ID = 0;
+  char TailDup::ID = 0;
   RegisterPass<TailDup> X("tailduplicate", "Tail Duplication");
 }
 
diff --git a/lib/Transforms/Scalar/TailRecursionElimination.cpp b/lib/Transforms/Scalar/TailRecursionElimination.cpp
index 056c2a1..d911321 100644
--- a/lib/Transforms/Scalar/TailRecursionElimination.cpp
+++ b/lib/Transforms/Scalar/TailRecursionElimination.cpp
@@ -67,7 +67,7 @@
 
 namespace {
   struct VISIBILITY_HIDDEN TailCallElim : public FunctionPass {
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     TailCallElim() : FunctionPass((intptr_t)&ID) {}
 
     virtual bool runOnFunction(Function &F);
@@ -80,7 +80,7 @@
     bool CanMoveAboveCall(Instruction *I, CallInst *CI);
     Value *CanTransformAccumulatorRecursion(Instruction *I, CallInst *CI);
   };
-  const char TailCallElim::ID = 0;
+  char TailCallElim::ID = 0;
   RegisterPass<TailCallElim> X("tailcallelim", "Tail Call Elimination");
 }
 
diff --git a/lib/Transforms/Utils/BreakCriticalEdges.cpp b/lib/Transforms/Utils/BreakCriticalEdges.cpp
index 67ccbc8..1c44f24 100644
--- a/lib/Transforms/Utils/BreakCriticalEdges.cpp
+++ b/lib/Transforms/Utils/BreakCriticalEdges.cpp
@@ -34,7 +34,7 @@
 
 namespace {
   struct VISIBILITY_HIDDEN BreakCriticalEdges : public FunctionPass {
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     BreakCriticalEdges() : FunctionPass((intptr_t)&ID) {}
 
     virtual bool runOnFunction(Function &F);
@@ -50,7 +50,7 @@
     }
   };
 
-  const char BreakCriticalEdges::ID = 0;
+  char BreakCriticalEdges::ID = 0;
   RegisterPass<BreakCriticalEdges> X("break-crit-edges",
                                     "Break critical edges in CFG");
 }
diff --git a/lib/Transforms/Utils/LCSSA.cpp b/lib/Transforms/Utils/LCSSA.cpp
index 86f6da0..acd092f 100644
--- a/lib/Transforms/Utils/LCSSA.cpp
+++ b/lib/Transforms/Utils/LCSSA.cpp
@@ -47,7 +47,7 @@
 
 namespace {
   struct VISIBILITY_HIDDEN LCSSA : public FunctionPass {
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     LCSSA() : FunctionPass((intptr_t)&ID) {}
 
     // Cached analysis information for the current function.
@@ -84,7 +84,7 @@
     }
   };
   
-  const char LCSSA::ID = 0;
+  char LCSSA::ID = 0;
   RegisterPass<LCSSA> X("lcssa", "Loop-Closed SSA Form Pass");
 }
 
diff --git a/lib/Transforms/Utils/LoopSimplify.cpp b/lib/Transforms/Utils/LoopSimplify.cpp
index c0227e1..c88ba17 100644
--- a/lib/Transforms/Utils/LoopSimplify.cpp
+++ b/lib/Transforms/Utils/LoopSimplify.cpp
@@ -54,7 +54,7 @@
 
 namespace {
   struct VISIBILITY_HIDDEN LoopSimplify : public FunctionPass {
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     LoopSimplify() : FunctionPass((intptr_t)&ID) {}
 
     // AA - If we have an alias analysis object to update, this is it, otherwise
@@ -92,7 +92,7 @@
                                          std::vector<BasicBlock*> &PredBlocks);
   };
 
-  const char LoopSimplify::ID = 0;
+  char LoopSimplify::ID = 0;
   RegisterPass<LoopSimplify>
   X("loopsimplify", "Canonicalize natural loops", true);
 }
diff --git a/lib/Transforms/Utils/LowerAllocations.cpp b/lib/Transforms/Utils/LowerAllocations.cpp
index 2d0258e..7ce2479 100644
--- a/lib/Transforms/Utils/LowerAllocations.cpp
+++ b/lib/Transforms/Utils/LowerAllocations.cpp
@@ -36,7 +36,7 @@
     Constant *FreeFunc;     // Initialized by doInitialization
     bool LowerMallocArgToInteger;
   public:
-    static const char ID; // Pass ID, replacement for typeid
+    static char ID; // Pass ID, replacement for typeid
     LowerAllocations(bool LowerToInt = false)
       : BasicBlockPass((intptr_t)&ID), MallocFunc(0), FreeFunc(0), 
         LowerMallocArgToInteger(LowerToInt) {}
@@ -68,7 +68,7 @@
     bool runOnBasicBlock(BasicBlock &BB);
   };
 
-  const char LowerAllocations::ID = 0;
+  char LowerAllocations::ID = 0;
   RegisterPass<LowerAllocations>
   X("lowerallocs", "Lower allocations from instructions to calls");
 }
diff --git a/lib/Transforms/Utils/LowerInvoke.cpp b/lib/Transforms/Utils/LowerInvoke.cpp
index 7c6070e..fcb078a 100644
--- a/lib/Transforms/Utils/LowerInvoke.cpp
+++ b/lib/Transforms/Utils/LowerInvoke.cpp
@@ -75,7 +75,7 @@
     const TargetLowering *TLI;
     
   public:
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     LowerInvoke(const TargetLowering *tli = NULL) : FunctionPass((intptr_t)&ID),
       TLI(tli) { }
     bool doInitialization(Module &M);
@@ -99,7 +99,7 @@
     bool insertExpensiveEHSupport(Function &F);
   };
 
-  const char LowerInvoke::ID = 0;
+  char LowerInvoke::ID = 0;
   RegisterPass<LowerInvoke>
   X("lowerinvoke", "Lower invoke and unwind, for unwindless code generators");
 }
diff --git a/lib/Transforms/Utils/LowerSelect.cpp b/lib/Transforms/Utils/LowerSelect.cpp
index 2a65fe7..09eb413 100644
--- a/lib/Transforms/Utils/LowerSelect.cpp
+++ b/lib/Transforms/Utils/LowerSelect.cpp
@@ -33,7 +33,7 @@
   class VISIBILITY_HIDDEN LowerSelect : public FunctionPass {
     bool OnlyFP;   // Only lower FP select instructions?
   public:
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     LowerSelect(bool onlyfp = false) : FunctionPass((intptr_t)&ID), 
       OnlyFP(onlyfp) {}
 
@@ -50,7 +50,7 @@
     bool runOnFunction(Function &F);
   };
 
-  const char LowerSelect::ID = 0;
+  char LowerSelect::ID = 0;
   RegisterPass<LowerSelect>
   X("lowerselect", "Lower select instructions to branches");
 }
diff --git a/lib/Transforms/Utils/LowerSwitch.cpp b/lib/Transforms/Utils/LowerSwitch.cpp
index 6a6833f..30b9925 100644
--- a/lib/Transforms/Utils/LowerSwitch.cpp
+++ b/lib/Transforms/Utils/LowerSwitch.cpp
@@ -30,7 +30,7 @@
   /// modifies the CFG!
   class VISIBILITY_HIDDEN LowerSwitch : public FunctionPass {
   public:
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     LowerSwitch() : FunctionPass((intptr_t) &ID) {} 
 
     virtual bool runOnFunction(Function &F);
@@ -78,7 +78,7 @@
     }
   };
 
-  const char LowerSwitch::ID = 0;
+  char LowerSwitch::ID = 0;
   RegisterPass<LowerSwitch>
   X("lowerswitch", "Lower SwitchInst's to branches");
 }
diff --git a/lib/Transforms/Utils/Mem2Reg.cpp b/lib/Transforms/Utils/Mem2Reg.cpp
index 16fd07b..7ffafd8 100644
--- a/lib/Transforms/Utils/Mem2Reg.cpp
+++ b/lib/Transforms/Utils/Mem2Reg.cpp
@@ -27,7 +27,7 @@
 
 namespace {
   struct VISIBILITY_HIDDEN PromotePass : public FunctionPass {
-    static const char ID; // Pass identifcation, replacement for typeid
+    static char ID; // Pass identifcation, replacement for typeid
     PromotePass() : FunctionPass((intptr_t)&ID) {}
 
     // runOnFunction - To run this pass, first we calculate the alloca
@@ -50,7 +50,7 @@
     }
   };
 
-  const char PromotePass::ID = 0;
+  char PromotePass::ID = 0;
   RegisterPass<PromotePass> X("mem2reg", "Promote Memory to Register");
 }  // end of anonymous namespace
 
diff --git a/lib/Transforms/Utils/UnifyFunctionExitNodes.cpp b/lib/Transforms/Utils/UnifyFunctionExitNodes.cpp
index aef64b4..b545ad3 100644
--- a/lib/Transforms/Utils/UnifyFunctionExitNodes.cpp
+++ b/lib/Transforms/Utils/UnifyFunctionExitNodes.cpp
@@ -22,7 +22,7 @@
 #include "llvm/Type.h"
 using namespace llvm;
 
-const char UnifyFunctionExitNodes::ID = 0;
+char UnifyFunctionExitNodes::ID = 0;
 static RegisterPass<UnifyFunctionExitNodes>
 X("mergereturn", "Unify function exit nodes");
 
diff --git a/lib/VMCore/AsmWriter.cpp b/lib/VMCore/AsmWriter.cpp
index f747760..536b541 100644
--- a/lib/VMCore/AsmWriter.cpp
+++ b/lib/VMCore/AsmWriter.cpp
@@ -135,10 +135,10 @@
 
 }  // end namespace llvm
 
-const char PrintModulePass::ID = 0;
+char PrintModulePass::ID = 0;
 static RegisterPass<PrintModulePass>
 X("printm", "Print module to stderr");
-const char PrintFunctionPass::ID = 0;
+char PrintFunctionPass::ID = 0;
 static RegisterPass<PrintFunctionPass>
 Y("print","Print function to stderr");
 
diff --git a/lib/VMCore/Dominators.cpp b/lib/VMCore/Dominators.cpp
index f1d655f..9f49b55 100644
--- a/lib/VMCore/Dominators.cpp
+++ b/lib/VMCore/Dominators.cpp
@@ -58,7 +58,7 @@
 //
 //===----------------------------------------------------------------------===//
 
-const char DominatorTree::ID = 0;
+char DominatorTree::ID = 0;
 static RegisterPass<DominatorTree>
 E("domtree", "Dominator Tree Construction", true);
 
@@ -354,7 +354,7 @@
 //  DominanceFrontier Implementation
 //===----------------------------------------------------------------------===//
 
-const char DominanceFrontier::ID = 0;
+char DominanceFrontier::ID = 0;
 static RegisterPass<DominanceFrontier>
 G("domfrontier", "Dominance Frontier Construction", true);
 
@@ -835,7 +835,7 @@
 // ETForest implementation
 //===----------------------------------------------------------------------===//
 
-const char ETForest::ID = 0;
+char ETForest::ID = 0;
 static RegisterPass<ETForest>
 D("etforest", "ET Forest Construction", true);
 
diff --git a/lib/VMCore/PassManager.cpp b/lib/VMCore/PassManager.cpp
index ee9200c..e590a6c 100644
--- a/lib/VMCore/PassManager.cpp
+++ b/lib/VMCore/PassManager.cpp
@@ -63,7 +63,7 @@
                                         public FunctionPass {
 
 public:
-  static const char ID;
+  static char ID;
   BBPassManager(int Depth) 
     : PMDataManager(Depth), FunctionPass((intptr_t)&ID) {}
 
@@ -106,7 +106,7 @@
   }
 };
 
-const char BBPassManager::ID = 0;
+char BBPassManager::ID = 0;
 }
 
 namespace llvm {
@@ -119,7 +119,7 @@
                                 public PMDataManager,
                                 public PMTopLevelManager {
 public:
-  static const char ID;
+  static char ID;
   FunctionPassManagerImpl(int Depth) : 
     Pass((intptr_t)&ID), PMDataManager(Depth), 
     PMTopLevelManager(TLM_Function) { }
@@ -173,7 +173,7 @@
   }
 };
 
-const char FunctionPassManagerImpl::ID = 0;
+char FunctionPassManagerImpl::ID = 0;
 //===----------------------------------------------------------------------===//
 // MPPassManager
 //
@@ -183,7 +183,7 @@
 class MPPassManager : public Pass, public PMDataManager {
  
 public:
-  static const char ID;
+  static char ID;
   MPPassManager(int Depth) : Pass((intptr_t)&ID), PMDataManager(Depth) { }
 
   // Delete on the fly managers.
@@ -247,7 +247,7 @@
   std::map<Pass *, FunctionPassManagerImpl *> OnTheFlyManagers;
 };
 
-const char MPPassManager::ID = 0;
+char MPPassManager::ID = 0;
 //===----------------------------------------------------------------------===//
 // PassManagerImpl
 //
@@ -258,7 +258,7 @@
                         public PMTopLevelManager {
 
 public:
-  static const char ID;
+  static char ID;
   PassManagerImpl(int Depth) : Pass((intptr_t)&ID), PMDataManager(Depth),
                                PMTopLevelManager(TLM_Pass) { }
 
@@ -304,7 +304,7 @@
 
 };
 
-const char PassManagerImpl::ID = 0;
+char PassManagerImpl::ID = 0;
 } // End of llvm namespace
 
 namespace {
@@ -1108,7 +1108,7 @@
 //===----------------------------------------------------------------------===//
 // FPPassManager implementation
 
-const char FPPassManager::ID = 0;
+char FPPassManager::ID = 0;
 /// Print passes managed by this manager
 void FPPassManager::dumpPassStructure(unsigned Offset) {
   llvm::cerr << std::string(Offset*2, ' ') << "FunctionPass Manager\n";
diff --git a/lib/VMCore/Verifier.cpp b/lib/VMCore/Verifier.cpp
index 4006e1f..7e92eb3 100644
--- a/lib/VMCore/Verifier.cpp
+++ b/lib/VMCore/Verifier.cpp
@@ -69,7 +69,7 @@
 
   struct VISIBILITY_HIDDEN
      Verifier : public FunctionPass, InstVisitor<Verifier> {
-    static const char ID; // Pass ID, replacement for typeid
+    static char ID; // Pass ID, replacement for typeid
     bool Broken;          // Is this module found to be broken?
     bool RealPass;        // Are we not being run by a PassManager?
     VerifierFailureAction action;
@@ -266,7 +266,7 @@
     }
   };
 
-  const char Verifier::ID = 0;
+  char Verifier::ID = 0;
   RegisterPass<Verifier> X("verify", "Module Verifier");
 } // End anonymous namespace
 
diff --git a/tools/bugpoint/ExtractFunction.cpp b/tools/bugpoint/ExtractFunction.cpp
index 6e21e89..85da929 100644
--- a/tools/bugpoint/ExtractFunction.cpp
+++ b/tools/bugpoint/ExtractFunction.cpp
@@ -306,10 +306,10 @@
   class BlockExtractorPass : public ModulePass {
     bool runOnModule(Module &M);
   public:
-    static const char ID; // Pass ID, replacement for typeid
+    static char ID; // Pass ID, replacement for typeid
     BlockExtractorPass() : ModulePass((intptr_t)&ID) {}
   };
-  const char BlockExtractorPass::ID = 0;
+  char BlockExtractorPass::ID = 0;
   RegisterPass<BlockExtractorPass>
   XX("extract-bbs", "Extract Basic Blocks From Module (for bugpoint use)");
 }
diff --git a/tools/bugpoint/TestPasses.cpp b/tools/bugpoint/TestPasses.cpp
index 3d1fc3a..6923215 100644
--- a/tools/bugpoint/TestPasses.cpp
+++ b/tools/bugpoint/TestPasses.cpp
@@ -26,7 +26,7 @@
   /// crashes on any call instructions.
   class CrashOnCalls : public BasicBlockPass {
   public:
-    static const char ID; // Pass ID, replacement for typeid
+    static char ID; // Pass ID, replacement for typeid
     CrashOnCalls() : BasicBlockPass((intptr_t)&ID) {}
   private:
     virtual void getAnalysisUsage(AnalysisUsage &AU) const {
@@ -42,7 +42,7 @@
     }
   };
 
-  const char CrashOnCalls::ID = 0;
+  char CrashOnCalls::ID = 0;
   RegisterPass<CrashOnCalls>
   X("bugpoint-crashcalls",
     "BugPoint Test Pass - Intentionally crash on CallInsts");
@@ -53,7 +53,7 @@
   /// deletes some call instructions, "misoptimizing" the program.
   class DeleteCalls : public BasicBlockPass {
   public:
-    static const char ID; // Pass ID, replacement for typeid
+    static char ID; // Pass ID, replacement for typeid
     DeleteCalls() : BasicBlockPass((intptr_t)&ID) {}
   private:
     bool runOnBasicBlock(BasicBlock &BB) {
@@ -68,7 +68,7 @@
     }
   };
  
-  const char DeleteCalls::ID = 0;
+  char DeleteCalls::ID = 0;
   RegisterPass<DeleteCalls>
   Y("bugpoint-deletecalls",
     "BugPoint Test Pass - Intentionally 'misoptimize' CallInsts");
diff --git a/tools/opt/AnalysisWrappers.cpp b/tools/opt/AnalysisWrappers.cpp
index 439c5a2..ce2c34d 100644
--- a/tools/opt/AnalysisWrappers.cpp
+++ b/tools/opt/AnalysisWrappers.cpp
@@ -30,7 +30,7 @@
   /// useful when looking for standard library functions we should constant fold
   /// or handle in alias analyses.
   struct ExternalFunctionsPassedConstants : public ModulePass {
-    static const char ID; // Pass ID, replacement for typeid
+    static char ID; // Pass ID, replacement for typeid
     ExternalFunctionsPassedConstants() : ModulePass((intptr_t)&ID) {}
     virtual bool runOnModule(Module &M) {
       for (Module::iterator I = M.begin(), E = M.end(); I != E; ++I)
@@ -63,12 +63,12 @@
     }
   };
 
-  const char ExternalFunctionsPassedConstants::ID = 0;
+  char ExternalFunctionsPassedConstants::ID = 0;
   RegisterPass<ExternalFunctionsPassedConstants>
   P1("externalfnconstants", "Print external fn callsites passed constants");
   
   struct CallGraphPrinter : public ModulePass {
-    static const char ID; // Pass ID, replacement for typeid
+    static char ID; // Pass ID, replacement for typeid
     CallGraphPrinter() : ModulePass((intptr_t)&ID) {}
 
     virtual void getAnalysisUsage(AnalysisUsage &AU) const {
@@ -82,7 +82,7 @@
     }
   };
   
-  const char CallGraphPrinter::ID = 0;
+  char CallGraphPrinter::ID = 0;
   RegisterPass<CallGraphPrinter>
     P2("callgraph", "Print a call graph");
 }
diff --git a/tools/opt/GraphPrinters.cpp b/tools/opt/GraphPrinters.cpp
index 9b41ebc..5bf9088 100644
--- a/tools/opt/GraphPrinters.cpp
+++ b/tools/opt/GraphPrinters.cpp
@@ -60,7 +60,7 @@
 
 namespace {
   struct CallGraphPrinter : public ModulePass {
-    static const char ID; // Pass ID, replacement for typeid
+    static char ID; // Pass ID, replacement for typeid
     CallGraphPrinter() : ModulePass((intptr_t)&ID) {}
 
     virtual bool runOnModule(Module &M) {
@@ -77,7 +77,7 @@
     }
   };
 
-  const char CallGraphPrinter::ID = 0;
+  char CallGraphPrinter::ID = 0;
   RegisterPass<CallGraphPrinter> P2("print-callgraph",
                                     "Print Call Graph to 'dot' file");
 }
diff --git a/tools/opt/PrintSCC.cpp b/tools/opt/PrintSCC.cpp
index bf3078f..c2e4f5b 100644
--- a/tools/opt/PrintSCC.cpp
+++ b/tools/opt/PrintSCC.cpp
@@ -35,7 +35,7 @@
 
 namespace {
   struct CFGSCC : public FunctionPass {
-    static const char ID;  // Pass identification, replacement for typeid
+    static char ID;  // Pass identification, replacement for typeid
     CFGSCC() : FunctionPass((intptr_t)&ID) {}
     bool runOnFunction(Function& func);
 
@@ -47,7 +47,7 @@
   };
 
   struct CallGraphSCC : public ModulePass {
-    static const char ID;  // Pass identification, replacement for typeid
+    static char ID;  // Pass identification, replacement for typeid
     CallGraphSCC() : ModulePass((intptr_t)&ID) {}
 
     // run - Print out SCCs in the call graph for the specified module.
@@ -62,11 +62,11 @@
     }
   };
 
-  const char CFGSCC::ID = 0;
+  char CFGSCC::ID = 0;
   RegisterPass<CFGSCC>
   Y("cfgscc", "Print SCCs of each function CFG");
 
-  const char CallGraphSCC::ID = 0;
+  char CallGraphSCC::ID = 0;
   RegisterPass<CallGraphSCC>
   Z("callscc", "Print SCCs of the Call Graph");
 }
diff --git a/tools/opt/opt.cpp b/tools/opt/opt.cpp
index 3df54f2..e29e9f6 100644
--- a/tools/opt/opt.cpp
+++ b/tools/opt/opt.cpp
@@ -98,7 +98,7 @@
 namespace {
 
 struct ModulePassPrinter : public ModulePass {
-  static const char ID;
+  static char ID;
   const PassInfo *PassToPrint;
   ModulePassPrinter(const PassInfo *PI) : ModulePass((intptr_t)&ID),
                                           PassToPrint(PI) {}
@@ -121,10 +121,10 @@
   }
 };
 
-const char ModulePassPrinter::ID = 0;
+char ModulePassPrinter::ID = 0;
 struct FunctionPassPrinter : public FunctionPass {
   const PassInfo *PassToPrint;
-  static const char ID;
+  static char ID;
   FunctionPassPrinter(const PassInfo *PI) : FunctionPass((intptr_t)&ID),
                                             PassToPrint(PI) {}
 
@@ -146,10 +146,10 @@
   }
 };
 
-const char FunctionPassPrinter::ID = 0;
+char FunctionPassPrinter::ID = 0;
 struct BasicBlockPassPrinter : public BasicBlockPass {
   const PassInfo *PassToPrint;
-  static const char ID;
+  static char ID;
   BasicBlockPassPrinter(const PassInfo *PI) 
     : BasicBlockPass((intptr_t)&ID), PassToPrint(PI) {}
 
@@ -172,7 +172,7 @@
   }
 };
 
-const char BasicBlockPassPrinter::ID = 0;
+char BasicBlockPassPrinter::ID = 0;
 inline void addPass(PassManager &PM, Pass *P) {
   // Add the pass to the pass manager...
   PM.add(P);