[llvm-commits] [llvm] r94160 - in /llvm/trunk: include/llvm/Analysis/LoopPass.h include/llvm/CallGraphSCCPass.h include/llvm/Pass.h lib/VMCore/PassManager.cpp tools/opt/opt.cpp
Chris Lattner
sabre at nondot.org
Thu Jan 21 22:03:06 PST 2010
Author: lattner
Date: Fri Jan 22 00:03:06 2010
New Revision: 94160
URL: http://llvm.org/viewvc/llvm-project?rev=94160&view=rev
Log:
elimiante the dynamic_cast's from opt.
Modified:
llvm/trunk/include/llvm/Analysis/LoopPass.h
llvm/trunk/include/llvm/CallGraphSCCPass.h
llvm/trunk/include/llvm/Pass.h
llvm/trunk/lib/VMCore/PassManager.cpp
llvm/trunk/tools/opt/opt.cpp
Modified: llvm/trunk/include/llvm/Analysis/LoopPass.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/LoopPass.h?rev=94160&r1=94159&r2=94160&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Analysis/LoopPass.h (original)
+++ llvm/trunk/include/llvm/Analysis/LoopPass.h Fri Jan 22 00:03:06 2010
@@ -28,8 +28,8 @@
class LoopPass : public Pass {
public:
- explicit LoopPass(intptr_t pid) : Pass(pid) {}
- explicit LoopPass(void *pid) : Pass(pid) {}
+ explicit LoopPass(intptr_t pid) : Pass(PT_Loop, pid) {}
+ explicit LoopPass(void *pid) : Pass(PT_Loop, pid) {}
// runOnLoop - This method should be implemented by the subclass to perform
// whatever action is necessary for the specified Loop.
Modified: llvm/trunk/include/llvm/CallGraphSCCPass.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CallGraphSCCPass.h?rev=94160&r1=94159&r2=94160&view=diff
==============================================================================
--- llvm/trunk/include/llvm/CallGraphSCCPass.h (original)
+++ llvm/trunk/include/llvm/CallGraphSCCPass.h Fri Jan 22 00:03:06 2010
@@ -32,8 +32,8 @@
struct CallGraphSCCPass : public Pass {
- explicit CallGraphSCCPass(intptr_t pid) : Pass(pid) {}
- explicit CallGraphSCCPass(void *pid) : Pass(pid) {}
+ explicit CallGraphSCCPass(intptr_t pid) : Pass(PT_CallGraphSCC, pid) {}
+ explicit CallGraphSCCPass(void *pid) : Pass(PT_CallGraphSCC, pid) {}
/// doInitialization - This method is called before the SCC's of the program
/// has been processed, allowing the pass to do initialization as necessary.
Modified: llvm/trunk/include/llvm/Pass.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Pass.h?rev=94160&r1=94159&r2=94160&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Pass.h (original)
+++ llvm/trunk/include/llvm/Pass.h Fri Jan 22 00:03:06 2010
@@ -64,6 +64,16 @@
PMT_Last
};
+// Different types of passes.
+enum PassKind {
+ PT_BasicBlock,
+ PT_Loop,
+ PT_Function,
+ PT_CallGraphSCC,
+ PT_Module,
+ PT_PassManager
+};
+
//===----------------------------------------------------------------------===//
/// Pass interface - Implemented by all 'passes'. Subclass this if you are an
/// interprocedural optimization or you do not fit into any of the more
@@ -72,19 +82,23 @@
class Pass {
AnalysisResolver *Resolver; // Used to resolve analysis
intptr_t PassID;
-
+ PassKind Kind;
void operator=(const Pass&); // DO NOT IMPLEMENT
Pass(const Pass &); // DO NOT IMPLEMENT
public:
- explicit Pass(intptr_t pid) : Resolver(0), PassID(pid) {
+ explicit Pass(PassKind K, intptr_t pid) : Resolver(0), PassID(pid), Kind(K) {
assert(pid && "pid cannot be 0");
}
- explicit Pass(const void *pid) : Resolver(0), PassID((intptr_t)pid) {
+ explicit Pass(PassKind K, const void *pid)
+ : Resolver(0), PassID((intptr_t)pid), Kind(K) {
assert(pid && "pid cannot be 0");
}
virtual ~Pass();
+
+ PassKind getPassKind() const { return Kind; }
+
/// getPassName - Return a nice clean name for a pass. This usually
/// implemented in terms of the name that is registered by one of the
/// Registration templates, but can be overloaded directly.
@@ -118,7 +132,7 @@
// Access AnalysisResolver
inline void setResolver(AnalysisResolver *AR) {
- assert (!Resolver && "Resolver is already set");
+ assert(!Resolver && "Resolver is already set");
Resolver = AR;
}
inline AnalysisResolver *getResolver() {
@@ -229,8 +243,8 @@
/// Return what kind of Pass Manager can manage this pass.
virtual PassManagerType getPotentialPassManagerType() const;
- explicit ModulePass(intptr_t pid) : Pass(pid) {}
- explicit ModulePass(const void *pid) : Pass(pid) {}
+ explicit ModulePass(intptr_t pid) : Pass(PT_Module, pid) {}
+ explicit ModulePass(const void *pid) : Pass(PT_Module, pid) {}
// Force out-of-line virtual method.
virtual ~ModulePass();
};
@@ -276,8 +290,8 @@
///
class FunctionPass : public Pass {
public:
- explicit FunctionPass(intptr_t pid) : Pass(pid) {}
- explicit FunctionPass(const void *pid) : Pass(pid) {}
+ explicit FunctionPass(intptr_t pid) : Pass(PT_Function, pid) {}
+ explicit FunctionPass(const void *pid) : Pass(PT_Function, pid) {}
/// doInitialization - Virtual method overridden by subclasses to do
/// any necessary per-module initialization.
@@ -326,8 +340,8 @@
///
class BasicBlockPass : public Pass {
public:
- explicit BasicBlockPass(intptr_t pid) : Pass(pid) {}
- explicit BasicBlockPass(const void *pid) : Pass(pid) {}
+ explicit BasicBlockPass(intptr_t pid) : Pass(PT_BasicBlock, pid) {}
+ explicit BasicBlockPass(const void *pid) : Pass(PT_BasicBlock, pid) {}
/// doInitialization - Virtual method overridden by subclasses to do
/// any necessary per-module initialization.
Modified: llvm/trunk/lib/VMCore/PassManager.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/VMCore/PassManager.cpp?rev=94160&r1=94159&r2=94160&view=diff
==============================================================================
--- llvm/trunk/lib/VMCore/PassManager.cpp (original)
+++ llvm/trunk/lib/VMCore/PassManager.cpp Fri Jan 22 00:03:06 2010
@@ -172,7 +172,7 @@
public:
static char ID;
explicit FunctionPassManagerImpl(int Depth) :
- Pass(&ID), PMDataManager(Depth),
+ Pass(PT_PassManager, &ID), PMDataManager(Depth),
PMTopLevelManager(TLM_Function), wasRun(false) { }
/// add - Add a pass to the queue of passes to run. This passes ownership of
@@ -241,7 +241,7 @@
public:
static char ID;
explicit MPPassManager(int Depth) :
- Pass(&ID), PMDataManager(Depth) { }
+ Pass(PT_PassManager, &ID), PMDataManager(Depth) { }
// Delete on the fly managers.
virtual ~MPPassManager() {
@@ -321,7 +321,8 @@
public:
static char ID;
explicit PassManagerImpl(int Depth) :
- Pass(&ID), PMDataManager(Depth), PMTopLevelManager(TLM_Pass) { }
+ Pass(PT_PassManager, &ID), PMDataManager(Depth),
+ PMTopLevelManager(TLM_Pass) { }
/// add - Add a pass to the queue of passes to run. This passes ownership of
/// the Pass to the PassManager. When the PassManager is destroyed, the pass
Modified: llvm/trunk/tools/opt/opt.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/opt/opt.cpp?rev=94160&r1=94159&r2=94160&view=diff
==============================================================================
--- llvm/trunk/tools/opt/opt.cpp (original)
+++ llvm/trunk/tools/opt/opt.cpp Fri Jan 22 00:03:06 2010
@@ -479,16 +479,23 @@
addPass(Passes, P);
if (AnalyzeOnly) {
- if (dynamic_cast<BasicBlockPass*>(P))
+ switch (P->getPassKind()) {
+ case PT_BasicBlock:
Passes.add(new BasicBlockPassPrinter(PassInf));
- else if (dynamic_cast<LoopPass*>(P))
+ break;
+ case PT_Loop:
Passes.add(new LoopPassPrinter(PassInf));
- else if (dynamic_cast<FunctionPass*>(P))
+ break;
+ case PT_Function:
Passes.add(new FunctionPassPrinter(PassInf));
- else if (dynamic_cast<CallGraphSCCPass*>(P))
+ break;
+ case PT_CallGraphSCC:
Passes.add(new CallGraphSCCPassPrinter(PassInf));
- else
+ break;
+ default:
Passes.add(new ModulePassPrinter(PassInf));
+ break;
+ }
}
}
More information about the llvm-commits
mailing list