The following build error is occurring.<br><br>Lauro<br><br>make[2]: Entering directory `/armel-chroot/home/laurov/test/build/llvm/lib/Analysis'<br>llvm[2]: Compiling AliasAnalysis.cpp for Release build <br>AliasAnalysis.cpp
:37: error: definition of 'llvm::AliasAnalysis::ID' is not in namespace enclosing 'llvm::AliasAnalysis'<br>make[2]: *** [/armel-chroot/home/laurov/test/build/llvm/lib/Analysis/Release/AliasAnalysis.o] Error 1<br>make[2]: Leaving directory `/armel-chroot/home/laurov/test/build/llvm/lib/Analysis'
<br>make[1]: *** [Analysis/.makeall] Error 2<br><br><div><span class="gmail_quote">2007/5/1, Devang Patel <<a href="mailto:dpatel@apple.com">dpatel@apple.com</a>>:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br><br>Changes in directory llvm/lib/Analysis:<br><br>AliasAnalysis.cpp updated: 1.30 -> 1.31<br>AliasAnalysisCounter.cpp updated: 1.20 -> 1.21<br>AliasAnalysisEvaluator.cpp updated: 1.33 -> 1.34<br>AliasDebugger.cpp
 updated: 1.3 -> 1.4<br>AliasSetTracker.cpp updated: 1.46 -> 1.47<br>BasicAliasAnalysis.cpp updated: 1.108 -> 1.109<br>CFGPrinter.cpp updated: 1.22 -> 1.23<br>InstCount.cpp updated: 1.20 -> 1.21<br>IntervalPartition.cpp
 updated: 1.32 -> 1.33<br>LoadValueNumbering.cpp updated: 1.39 -> 1.40<br>LoopInfo.cpp updated: 1.83 -> 1.84<br>LoopPass.cpp updated: 1.18 -> 1.19<br>PostDominators.cpp updated: 1.67 -> 1.68<br>ProfileInfo.cpp
 updated: 1.11 -> 1.12<br>ProfileInfoLoaderPass.cpp updated: 1.18 -> 1.19<br>ScalarEvolution.cpp updated: 1.112 -> 1.113<br>ValueNumbering.cpp updated: 1.25 -> 1.26<br>---<br>Log message:<br><br>Do not use typeinfo to identify pass in pass manager.
<br><br><br>---<br>Diffs of the changes:  (+61 -5)<br><br> AliasAnalysis.cpp          |    1 +<br> AliasAnalysisCounter.cpp   |    4 +++-<br> AliasAnalysisEvaluator.cpp |    4 ++++<br> AliasDebugger.cpp          |    4 ++++
<br> AliasSetTracker.cpp        |    4 ++++<br> BasicAliasAnalysis.cpp     |    6 ++++++<br> CFGPrinter.cpp             |    6 ++++++<br> InstCount.cpp              |    4 ++++<br> IntervalPartition.cpp      |    4 +++-<br>
 LoadValueNumbering.cpp     |    3 +++<br> LoopInfo.cpp               |    1 +<br> LoopPass.cpp               |    5 ++++-<br> PostDominators.cpp         |    3 +++<br> ProfileInfo.cpp            |    7 ++++++-<br> ProfileInfoLoaderPass.cpp
  |    4 +++-<br> ScalarEvolution.cpp        |    1 +<br> ValueNumbering.cpp         |    5 +++++<br> 17 files changed, 61 insertions(+), 5 deletions(-)<br><br><br>Index: llvm/lib/Analysis/AliasAnalysis.cpp<br>diff -u llvm/lib/Analysis/AliasAnalysis.cpp:
1.30 llvm/lib/Analysis/AliasAnalysis.cpp:1.31<br>--- llvm/lib/Analysis/AliasAnalysis.cpp:1.30    Fri Nov 17 01:10:51 2006<br>+++ llvm/lib/Analysis/AliasAnalysis.cpp Tue May  1 16:15:46 2007<br>@@ -34,6 +34,7 @@<br><br> // Register the AliasAnalysis interface, providing a nice name to refer to.
<br> namespace {<br>+  const int AliasAnalysis::ID = 0;<br>   RegisterAnalysisGroup<AliasAnalysis> Z("Alias Analysis");<br> }<br><br><br><br>Index: llvm/lib/Analysis/AliasAnalysisCounter.cpp<br>diff -u llvm/lib/Analysis/AliasAnalysisCounter.cpp:
1.20 llvm/lib/Analysis/AliasAnalysisCounter.cpp:1.21<br>--- llvm/lib/Analysis/AliasAnalysisCounter.cpp:1.20     Mon Feb  5 17:42:17 2007<br>+++ llvm/lib/Analysis/AliasAnalysisCounter.cpp  Tue May  1 16:15:46 2007<br>@@ -34,7 +34,8 @@
<br>     const char *Name;<br>     Module *M;<br>   public:<br>-    AliasAnalysisCounter() {<br>+    static const int ID; // Class identification, replacement for typeinfo<br>+    AliasAnalysisCounter() : ModulePass((intptr_t) &ID) {
<br>       No = May = Must = 0;<br>       NoMR = JustRef = JustMod = MR = 0;<br>     }<br>@@ -107,6 +108,7 @@<br>     }<br>   };<br><br>+  const int AliasAnalysisCounter::ID = 0;<br>   RegisterPass<AliasAnalysisCounter>
<br>   X("count-aa", "Count Alias Analysis Query Responses");<br>   RegisterAnalysisGroup<AliasAnalysis> Y(X);<br><br><br>Index: llvm/lib/Analysis/AliasAnalysisEvaluator.cpp<br>diff -u llvm/lib/Analysis/AliasAnalysisEvaluator.cpp:
1.33 llvm/lib/Analysis/AliasAnalysisEvaluator.cpp:1.34<br>--- llvm/lib/Analysis/AliasAnalysisEvaluator.cpp:1.33   Mon Feb  5 17:42:17 2007<br>+++ llvm/lib/Analysis/AliasAnalysisEvaluator.cpp        Tue May  1 16:15:46 2007
<br>@@ -50,6 +50,9 @@<br>     unsigned NoModRef, Mod, Ref, ModRef;<br><br>   public:<br>+    static const int ID; // Pass identifcation, replacement for typeid<br>+    AAEval() : FunctionPass((intptr_t)&ID) {}<br>+<br>
     virtual void getAnalysisUsage(AnalysisUsage &AU) const {<br>       AU.addRequired<AliasAnalysis>();<br>       AU.setPreservesAll();<br>@@ -70,6 +73,7 @@<br>     bool doFinalization(Module &M);<br>   };<br>
<br>+  const int AAEval::ID = 0;<br>   RegisterPass<AAEval><br>   X("aa-eval", "Exhaustive Alias Analysis Precision Evaluator");<br> }<br><br><br>Index: llvm/lib/Analysis/AliasDebugger.cpp<br>diff -u llvm/lib/Analysis/AliasDebugger.cpp:
1.3 llvm/lib/Analysis/AliasDebugger.cpp:1.4<br>--- llvm/lib/Analysis/AliasDebugger.cpp:1.3     Mon Feb  5 17:42:17 2007<br>+++ llvm/lib/Analysis/AliasDebugger.cpp Tue May  1 16:15:46 2007<br>@@ -40,6 +40,9 @@<br>     std::set<const Value*> Vals;
<br><br>   public:<br>+    static const int ID; // Class identification, replacement for typeinfo<br>+    AliasDebugger() : ModulePass((intptr_t)&ID) {}<br>+<br>     bool runOnModule(Module &M) {<br>       InitializeAliasAnalysis(this);                 // set up super class
<br><br>@@ -119,6 +122,7 @@<br><br>   };<br><br>+  const int AliasDebugger::ID = 0;<br>   RegisterPass<AliasDebugger> X("debug-aa", "AA use debugger");<br>   RegisterAnalysisGroup<AliasAnalysis> Y(X);
<br> }<br><br><br>Index: llvm/lib/Analysis/AliasSetTracker.cpp<br>diff -u llvm/lib/Analysis/AliasSetTracker.cpp:1.46 llvm/lib/Analysis/AliasSetTracker.cpp:1.47<br>--- llvm/lib/Analysis/AliasSetTracker.cpp:1.46  Mon Feb  5 17:42:17 2007
<br>+++ llvm/lib/Analysis/AliasSetTracker.cpp       Tue May  1 16:15:46 2007<br>@@ -555,6 +555,9 @@<br>   class VISIBILITY_HIDDEN AliasSetPrinter : public FunctionPass {<br>     AliasSetTracker *Tracker;<br>   public:<br>
+    static const int ID; // Pass identifcation, replacement for typeid<br>+    AliasSetPrinter() : FunctionPass((intptr_t)&ID) {}<br>+<br>     virtual void getAnalysisUsage(AnalysisUsage &AU) const {<br>       AU.setPreservesAll
();<br>       AU.addRequired<AliasAnalysis>();<br>@@ -570,5 +573,6 @@<br>       return false;<br>     }<br>   };<br>+  const int AliasSetPrinter::ID = 0;<br>   RegisterPass<AliasSetPrinter> X("print-alias-sets", "Alias Set Printer");
<br> }<br><br><br>Index: llvm/lib/Analysis/BasicAliasAnalysis.cpp<br>diff -u llvm/lib/Analysis/BasicAliasAnalysis.cpp:1.108 llvm/lib/Analysis/BasicAliasAnalysis.cpp:1.109<br>--- llvm/lib/Analysis/BasicAliasAnalysis.cpp:1.108
      Thu Apr 19 00:39:12 2007<br>+++ llvm/lib/Analysis/BasicAliasAnalysis.cpp    Tue May  1 16:15:46 2007<br>@@ -36,6 +36,9 @@<br>   /// such it doesn't follow many of the rules that other alias analyses must.<br>   ///
<br>   struct VISIBILITY_HIDDEN NoAA : public ImmutablePass, public AliasAnalysis {<br>+    static const int ID; // Class identification, replacement for typeinfo<br>+    NoAA() : ImmutablePass((intptr_t)&ID) {}<br>+<br>
     virtual void getAnalysisUsage(AnalysisUsage &AU) const {<br>       AU.addRequired<TargetData>();<br>     }<br>@@ -74,6 +77,7 @@<br>   };<br><br>   // Register this pass...<br>+  const int NoAA::ID = 0;<br>   RegisterPass<NoAA>
<br>   U("no-aa", "No Alias Analysis (always returns 'may' alias)");<br><br>@@ -88,6 +92,7 @@<br>   /// Because it doesn't chain to a previous alias analysis (like -no-aa), it<br>   /// derives from the NoAA class.
<br>   struct VISIBILITY_HIDDEN BasicAliasAnalysis : public NoAA {<br>+    static const int ID; // Class identification, replacement for typeinfo<br>     AliasResult alias(const Value *V1, unsigned V1Size,<br>                       const Value *V2, unsigned V2Size);
<br><br>@@ -119,6 +124,7 @@<br>   };<br><br>   // Register this pass...<br>+  const int BasicAliasAnalysis::ID = 0;<br>   RegisterPass<BasicAliasAnalysis><br>   X("basicaa", "Basic Alias Analysis (default AA impl)");
<br><br><br><br>Index: llvm/lib/Analysis/CFGPrinter.cpp<br>diff -u llvm/lib/Analysis/CFGPrinter.cpp:1.22 llvm/lib/Analysis/CFGPrinter.cpp:1.23<br>--- llvm/lib/Analysis/CFGPrinter.cpp:1.22       Mon Feb  5 17:42:17 2007<br>
+++ llvm/lib/Analysis/CFGPrinter.cpp    Tue May  1 16:15:46 2007<br>@@ -91,6 +91,9 @@<br><br> namespace {<br>   struct VISIBILITY_HIDDEN CFGPrinter : public FunctionPass {<br>+    static const int ID; // Pass identifcation, replacement for typeid
<br>+    CFGPrinter() : FunctionPass((intptr_t)&ID) {}<br>+<br>     virtual bool runOnFunction(Function &F) {<br>       std::string Filename = "cfg." + F.getName() + ".dot";<br>       cerr << "Writing '" << Filename << "'...";
<br>@@ -111,10 +114,12 @@<br>     }<br>   };<br><br>+  const int CFGPrinter::ID = 0;<br>   RegisterPass<CFGPrinter> P1("print-cfg",<br>                               "Print CFG of function to 'dot' file");
<br><br>   struct VISIBILITY_HIDDEN CFGOnlyPrinter : public CFGPrinter {<br>+    static const int ID; // Pass identifcation, replacement for typeid<br>     virtual bool runOnFunction(Function &F) {<br>       bool OldCFGOnly = CFGOnly;
<br>       CFGOnly = true;<br>@@ -129,6 +134,7 @@<br>     }<br>   };<br><br>+  const int CFGOnlyPrinter::ID = 0;<br>   RegisterPass<CFGOnlyPrinter><br>   P2("print-cfg-only",<br>      "Print CFG of function to 'dot' file (with no function bodies)");
<br><br><br>Index: llvm/lib/Analysis/InstCount.cpp<br>diff -u llvm/lib/Analysis/InstCount.cpp:1.20 llvm/lib/Analysis/InstCount.cpp:1.21<br>--- llvm/lib/Analysis/InstCount.cpp:1.20        Mon Feb  5 17:42:17 2007<br>+++ llvm/lib/Analysis/InstCount.cpp     Tue May  1 16:15:46 2007
<br>@@ -51,6 +51,9 @@<br>       abort();<br>     }<br>   public:<br>+    static const int ID; // Pass identifcation, replacement for typeid<br>+    InstCount() : FunctionPass((intptr_t)&ID) {}<br>+<br>     virtual bool runOnFunction(Function &F);
<br><br>     virtual void getAnalysisUsage(AnalysisUsage &AU) const {<br>@@ -60,6 +63,7 @@<br><br>   };<br><br>+  const int InstCount::ID = 0;<br>   RegisterPass<InstCount> X("instcount",<br>                             "Counts the various types of Instructions");
<br> }<br><br><br>Index: llvm/lib/Analysis/IntervalPartition.cpp<br>diff -u llvm/lib/Analysis/IntervalPartition.cpp:1.32 llvm/lib/Analysis/IntervalPartition.cpp:1.33<br>--- llvm/lib/Analysis/IntervalPartition.cpp:1.32        Sun Aug 27 17:30:17 2006
<br>+++ llvm/lib/Analysis/IntervalPartition.cpp     Tue May  1 16:15:46 2007<br>@@ -15,6 +15,7 @@<br> #include "llvm/Analysis/IntervalIterator.h"<br> using namespace llvm;<br><br>+const int IntervalPartition::ID = 0;
<br> static RegisterPass<IntervalPartition><br> X("intervals", "Interval Partition Construction", true);<br><br>@@ -88,7 +89,8 @@<br> // existing interval graph.  This takes an additional boolean parameter to
<br> // distinguish it from a copy constructor.  Always pass in false for now.<br> //<br>-IntervalPartition::IntervalPartition(IntervalPartition &IP, bool) {<br>+IntervalPartition::IntervalPartition(IntervalPartition &IP, bool)
<br>+  : FunctionPass((intptr_t) &ID) {<br>   Interval *FunctionStart = IP.getRootInterval();<br>   assert(FunctionStart && "Cannot operate on empty IntervalPartitions!");<br><br><br><br>Index: llvm/lib/Analysis/LoadValueNumbering.cpp
<br>diff -u llvm/lib/Analysis/LoadValueNumbering.cpp:1.39 llvm/lib/Analysis/LoadValueNumbering.cpp:1.40<br>--- llvm/lib/Analysis/LoadValueNumbering.cpp:1.39       Tue Apr 17 12:52:45 2007<br>+++ llvm/lib/Analysis/LoadValueNumbering.cpp    Tue May  1 16:15:46 2007
<br>@@ -40,6 +40,8 @@<br> namespace {<br>   // FIXME: This should not be a FunctionPass.<br>   struct VISIBILITY_HIDDEN LoadVN : public FunctionPass, public ValueNumbering {<br>+    static const int ID; // Class identification, replacement for typeinfo
<br>+    LoadVN() : FunctionPass((intptr_t)&ID) {}<br><br>     /// Pass Implementation stuff.  This doesn't do any analysis.<br>     ///<br>@@ -81,6 +83,7 @@<br>                                  std::vector<Value*> &RetVals) const;
<br>   };<br><br>+  const int LoadVN::ID = 0;<br>   // Register this pass...<br>   RegisterPass<LoadVN> X("load-vn", "Load Value Numbering");<br><br><br><br>Index: llvm/lib/Analysis/LoopInfo.cpp<br>
diff -u llvm/lib/Analysis/LoopInfo.cpp:1.83 llvm/lib/Analysis/LoopInfo.cpp:1.84<br>--- llvm/lib/Analysis/LoopInfo.cpp:1.83 Sat Mar  3 22:06:39 2007<br>+++ llvm/lib/Analysis/LoopInfo.cpp      Tue May  1 16:15:46 2007<br>@@ -27,6 +27,7 @@
<br> #include <ostream><br> using namespace llvm;<br><br>+const int LoopInfo::ID = 0;<br> static RegisterPass<LoopInfo><br> X("loops", "Natural Loop Construction", true);<br><br><br><br>Index: llvm/lib/Analysis/LoopPass.cpp
<br>diff -u llvm/lib/Analysis/LoopPass.cpp:1.18 llvm/lib/Analysis/LoopPass.cpp:1.19<br>--- llvm/lib/Analysis/LoopPass.cpp:1.18 Wed Mar  7 00:39:01 2007<br>+++ llvm/lib/Analysis/LoopPass.cpp      Tue May  1 16:15:46 2007<br>
@@ -20,9 +20,12 @@<br> //===----------------------------------------------------------------------===//<br> // LPPassManager<br> //<br>+<br>+const int LPPassManager::ID = 0;<br> /// LPPassManager manages FPPassManagers and CalLGraphSCCPasses.
<br><br>-LPPassManager::LPPassManager(int Depth) : PMDataManager(Depth) {<br>+LPPassManager::LPPassManager(int Depth)<br>+  : FunctionPass((intptr_t)&ID), PMDataManager(Depth) {<br>   skipThisLoop = false;<br>   redoThisLoop = false;
<br>   LI = NULL;<br><br><br>Index: llvm/lib/Analysis/PostDominators.cpp<br>diff -u llvm/lib/Analysis/PostDominators.cpp:1.67 llvm/lib/Analysis/PostDominators.cpp:1.68<br>--- llvm/lib/Analysis/PostDominators.cpp:1.67   Tue Apr 17 20:19:55 2007
<br>+++ llvm/lib/Analysis/PostDominators.cpp        Tue May  1 16:15:46 2007<br>@@ -22,6 +22,9 @@<br> //  PostDominatorTree Implementation<br> //===----------------------------------------------------------------------===//
<br><br>+const int PostDominatorTree::ID = 0;<br>+const int PostDominanceFrontier::ID = 0;<br>+const int PostETForest::ID = 0;<br> static RegisterPass<PostDominatorTree><br> F("postdomtree", "Post-Dominator Tree Construction", true);
<br><br><br><br>Index: llvm/lib/Analysis/ProfileInfo.cpp<br>diff -u llvm/lib/Analysis/ProfileInfo.cpp:1.11 llvm/lib/Analysis/ProfileInfo.cpp:1.12<br>--- llvm/lib/Analysis/ProfileInfo.cpp:1.11      Thu Mar 22 11:38:57 2007
<br>+++ llvm/lib/Analysis/ProfileInfo.cpp   Tue May  1 16:15:46 2007<br>@@ -22,6 +22,7 @@<br><br> // Register the ProfileInfo interface, providing a nice name to refer to.<br> namespace {<br>+  const int ProfileInfo::ID = 0;
<br>   RegisterAnalysisGroup<ProfileInfo> Z("Profile Information");<br> }<br><br>@@ -84,8 +85,12 @@<br><br> namespace {<br>   struct VISIBILITY_HIDDEN NoProfileInfo<br>-    : public ImmutablePass, public ProfileInfo {};
<br>+    : public ImmutablePass, public ProfileInfo {<br>+    static const int ID; // Class identification, replacement for typeinfo<br>+    NoProfileInfo() : ImmutablePass((intptr_t)&ID) {}<br>+  };<br><br>+  const int NoProfileInfo::ID = 0;
<br>   // Register this pass...<br>   RegisterPass<NoProfileInfo><br>   X("no-profile", "No Profile Information");<br><br><br>Index: llvm/lib/Analysis/ProfileInfoLoaderPass.cpp<br>diff -u llvm/lib/Analysis/ProfileInfoLoaderPass.cpp:
1.18 llvm/lib/Analysis/ProfileInfoLoaderPass.cpp:1.19<br>--- llvm/lib/Analysis/ProfileInfoLoaderPass.cpp:1.18    Mon Feb  5 17:42:17 2007<br>+++ llvm/lib/Analysis/ProfileInfoLoaderPass.cpp Tue May  1 16:15:46 2007<br>@@ -32,8 +32,9 @@
<br>   class VISIBILITY_HIDDEN LoaderPass : public ModulePass, public ProfileInfo {<br>     std::string Filename;<br>   public:<br>+    static const int ID; // Class identification, replacement for typeinfo<br>     LoaderPass(const std::string &filename = "")
<br>-      : Filename(filename) {<br>+      : ModulePass((intptr_t)&ID), Filename(filename) {<br>       if (filename.empty()) Filename = ProfileInfoFilename;<br>     }<br><br>@@ -49,6 +50,7 @@<br>     virtual bool runOnModule(Module &M);
<br>   };<br><br>+  const int LoaderPass::ID = 0;<br>   RegisterPass<LoaderPass><br>   X("profile-loader", "Load profile information from llvmprof.out");<br><br><br><br>Index: llvm/lib/Analysis/ScalarEvolution.cpp
<br>diff -u llvm/lib/Analysis/ScalarEvolution.cpp:1.112 llvm/lib/Analysis/ScalarEvolution.cpp:1.113<br>--- llvm/lib/Analysis/ScalarEvolution.cpp:1.112 Sun Apr 15 21:24:41 2007<br>+++ llvm/lib/Analysis/ScalarEvolution.cpp       Tue May  1 16:15:46 2007
<br>@@ -102,6 +102,7 @@<br>                         cl::init(100));<br><br> namespace {<br>+  const int ScalarEvolution::ID = 0;<br>   RegisterPass<ScalarEvolution><br>   R("scalar-evolution", "Scalar Evolution Analysis");
<br> }<br><br><br>Index: llvm/lib/Analysis/ValueNumbering.cpp<br>diff -u llvm/lib/Analysis/ValueNumbering.cpp:1.25 llvm/lib/Analysis/ValueNumbering.cpp:1.26<br>--- llvm/lib/Analysis/ValueNumbering.cpp:1.25   Mon Feb  5 17:42:17 2007
<br>+++ llvm/lib/Analysis/ValueNumbering.cpp        Tue May  1 16:15:46 2007<br>@@ -22,6 +22,7 @@<br> #include "llvm/Support/Compiler.h"<br> using namespace llvm;<br><br>+const int ValueNumbering::ID = 0;<br> // Register the ValueNumbering interface, providing a nice name to refer to.
<br> static RegisterAnalysisGroup<ValueNumbering> X("Value Numbering");<br><br>@@ -51,6 +52,9 @@<br>   ///<br>   struct VISIBILITY_HIDDEN BasicVN<br>       : public ImmutablePass, public ValueNumbering {<br>
+    static const int ID; // Class identification, replacement for typeinfo<br>+    BasicVN() : ImmutablePass((intptr_t)&ID) {}<br>+<br>     /// getEqualNumberNodes - Return nodes with the same value number as the<br>
     /// specified Value.  This fills in the argument vector with any equal<br>     /// values.<br>@@ -61,6 +65,7 @@<br>                                      std::vector<Value*> &RetVals) const;<br>   };<br><br>
+  const int BasicVN::ID = 0;<br>   // Register this pass...<br>   RegisterPass<BasicVN><br>   X("basicvn", "Basic Value Numbering (default GVN impl)");<br><br><br><br>_______________________________________________
<br>llvm-commits mailing list<br><a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br><a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
</a><br></blockquote></div><br>