From 794fd75c67a2cdc128d67342c6d88a504d186896 Mon Sep 17 00:00:00 2001 From: Devang Patel Date: Tue, 1 May 2007 21:15:47 +0000 Subject: Do not use typeinfo to identify pass in pass manager. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36632 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Transforms/Instrumentation/BlockProfiling.cpp | 7 +++++++ lib/Transforms/Instrumentation/EdgeProfiling.cpp | 4 ++++ lib/Transforms/Instrumentation/RSProfiling.cpp | 7 +++++++ lib/Transforms/Instrumentation/RSProfiling.h | 1 + 4 files changed, 19 insertions(+) (limited to 'lib/Transforms/Instrumentation') diff --git a/lib/Transforms/Instrumentation/BlockProfiling.cpp b/lib/Transforms/Instrumentation/BlockProfiling.cpp index fb7268e57b..a44899e1b9 100644 --- a/lib/Transforms/Instrumentation/BlockProfiling.cpp +++ b/lib/Transforms/Instrumentation/BlockProfiling.cpp @@ -32,9 +32,13 @@ using namespace llvm; namespace { class VISIBILITY_HIDDEN FunctionProfiler : public RSProfilers_std { + public: + static const int ID; bool runOnModule(Module &M); }; + const int FunctionProfiler::ID = 0; + RegisterPass X("insert-function-profiling", "Insert instrumentation for function profiling"); RegisterAnalysisGroup XG(X); @@ -79,8 +83,11 @@ bool FunctionProfiler::runOnModule(Module &M) { namespace { class BlockProfiler : public RSProfilers_std { bool runOnModule(Module &M); + public: + static const int ID; }; + const int BlockProfiler::ID = 0; RegisterPass Y("insert-block-profiling", "Insert instrumentation for block profiling"); RegisterAnalysisGroup YG(Y); diff --git a/lib/Transforms/Instrumentation/EdgeProfiling.cpp b/lib/Transforms/Instrumentation/EdgeProfiling.cpp index e45d2bfd15..ff7d4270ba 100644 --- a/lib/Transforms/Instrumentation/EdgeProfiling.cpp +++ b/lib/Transforms/Instrumentation/EdgeProfiling.cpp @@ -32,8 +32,12 @@ using namespace llvm; namespace { class VISIBILITY_HIDDEN EdgeProfiler : public ModulePass { bool runOnModule(Module &M); + public: + static const int ID; // Pass identifcation, replacement for typeid + EdgeProfiler() : ModulePass((intptr_t)&ID) {} }; + const int EdgeProfiler::ID = 0; RegisterPass X("insert-edge-profiling", "Insert instrumentation for edge profiling"); } diff --git a/lib/Transforms/Instrumentation/RSProfiling.cpp b/lib/Transforms/Instrumentation/RSProfiling.cpp index f97b2bcd3e..ad9a841cb0 100644 --- a/lib/Transforms/Instrumentation/RSProfiling.cpp +++ b/lib/Transforms/Instrumentation/RSProfiling.cpp @@ -69,6 +69,7 @@ namespace { /// measuring framework overhead class VISIBILITY_HIDDEN NullProfilerRS : public RSProfilers { public: + static const int ID; // Pass identifcation, replacement for typeid bool isProfiling(Value* v) { return false; } @@ -80,7 +81,9 @@ namespace { } }; + const int RSProfilers::ID = 0; static RegisterAnalysisGroup A("Profiling passes"); + const int NullProfilerRS::ID = 0; static RegisterPass NP("insert-null-profiling-rs", "Measure profiling framework overhead"); static RegisterAnalysisGroup NPT(NP); @@ -138,6 +141,9 @@ namespace { /// ProfilerRS - Insert the random sampling framework struct VISIBILITY_HIDDEN ProfilerRS : public FunctionPass { + static const int ID; // Pass identifcation, replacement for typeid + ProfilerRS() : FunctionPass((intptr_t)&ID) {} + std::map TransCache; std::set ChoicePoints; Chooser* c; @@ -154,6 +160,7 @@ namespace { virtual void getAnalysisUsage(AnalysisUsage &AU) const; }; + const int ProfilerRS::ID = 0; RegisterPass X("insert-rs-profiling-framework", "Insert random sampling instrumentation framework"); } diff --git a/lib/Transforms/Instrumentation/RSProfiling.h b/lib/Transforms/Instrumentation/RSProfiling.h index 747773a87c..3f7d92f17a 100644 --- a/lib/Transforms/Instrumentation/RSProfiling.h +++ b/lib/Transforms/Instrumentation/RSProfiling.h @@ -17,6 +17,7 @@ namespace llvm { /// 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 int ID; std::set profcode; // Lookup up values in profcode virtual bool isProfiling(Value* v); -- cgit v1.2.3