diff options
Diffstat (limited to 'lib/Transforms/Instrumentation')
-rw-r--r-- | lib/Transforms/Instrumentation/BlockProfiling.cpp | 7 | ||||
-rw-r--r-- | lib/Transforms/Instrumentation/EdgeProfiling.cpp | 4 | ||||
-rw-r--r-- | lib/Transforms/Instrumentation/RSProfiling.cpp | 7 | ||||
-rw-r--r-- | lib/Transforms/Instrumentation/RSProfiling.h | 1 |
4 files changed, 19 insertions, 0 deletions
diff --git a/lib/Transforms/Instrumentation/BlockProfiling.cpp b/lib/Transforms/Instrumentation/BlockProfiling.cpp index fb7268e..a44899e 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<FunctionProfiler> X("insert-function-profiling", "Insert instrumentation for function profiling"); RegisterAnalysisGroup<RSProfilers> 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<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 e45d2bf..ff7d427 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<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 f97b2bc..ad9a841 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<RSProfilers> A("Profiling passes"); + const int NullProfilerRS::ID = 0; static RegisterPass<NullProfilerRS> NP("insert-null-profiling-rs", "Measure profiling framework overhead"); static RegisterAnalysisGroup<RSProfilers, true> 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<Value*, Value*> TransCache; std::set<BasicBlock*> ChoicePoints; Chooser* c; @@ -154,6 +160,7 @@ namespace { virtual void getAnalysisUsage(AnalysisUsage &AU) const; }; + const int ProfilerRS::ID = 0; RegisterPass<ProfilerRS> 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 747773a..3f7d92f 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<Value*> profcode; // Lookup up values in profcode virtual bool isProfiling(Value* v); |