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>