Add missing createXxxPass functions
authorJeff Cohen <jeffc@jolt-lang.org>
Fri, 7 Jan 2005 06:57:28 +0000 (06:57 +0000)
committerJeff Cohen <jeffc@jolt-lang.org>
Fri, 7 Jan 2005 06:57:28 +0000 (06:57 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19319 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Transforms/Instrumentation.h
include/llvm/Transforms/LinkAllPasses.h
lib/Transforms/Instrumentation/BlockProfiling.cpp
lib/Transforms/Instrumentation/EdgeProfiling.cpp
lib/Transforms/Instrumentation/ProfilePaths/ProfilePaths.cpp
lib/Transforms/Instrumentation/TraceBasicBlocks.cpp

index 869f9d05d6cda318bd8b80b7c39463ce2df74743..f6aff42d682b5021b8c9935b0ed77a74ed0567ef 100644 (file)
@@ -28,6 +28,20 @@ FunctionPass *createCombineBranchesPass();
 // Reoptimizer support pass: emit table of global functions
 ModulePass *createEmitFunctionTablePass ();
 
+// Reoptimizer support pass: insert function profiling instrumentation
+ModulePass *createFunctionProfilerPass();
+
+// Reoptimizer support pass: insert block profiling instrumentation
+ModulePass *createBlockProfilerPass();
+
+// Reoptimizer support pass: insert edge profiling instrumentation
+ModulePass *createEdgeProfilerPass();
+
+// Reoptimizer support pass: insert basic block tracing instrumentation
+ModulePass *createTraceBasicBlockPass();
+
+// Reoptimizer support pass: insert counting of execute paths instrumentation
+FunctionPass *createProfilePathsPass();
 
 //===----------------------------------------------------------------------===//
 // Support for inserting LLVM code to print values at basic block and function
index 9d27437ea8a55559c45739f9c07ff966888d7bee..15ac307e7698c72711cbd151754e8fb00f903154 100644 (file)
@@ -40,11 +40,9 @@ namespace {
 
             std::vector<llvm::BasicBlock*> bbv;
 
-            // The commented out calls below refer to non-existent creation
-            // functions.  They will be uncommented as the functions are added.
-
             (void) llvm::createAggressiveDCEPass();
             (void) llvm::createArgumentPromotionPass();
+            (void) llvm::createBlockProfilerPass();
             (void) llvm::createBreakCriticalEdgesPass();
             (void) llvm::createCFGSimplificationPass();
             (void) llvm::createCombineBranchesPass();
@@ -56,8 +54,10 @@ namespace {
             (void) llvm::createDeadInstEliminationPass();
             (void) llvm::createDeadStoreEliminationPass();
             (void) llvm::createDeadTypeEliminationPass();
+            (void) llvm::createEdgeProfilerPass();
             (void) llvm::createEmitFunctionTablePass();
             (void) llvm::createFunctionInliningPass();
+            (void) llvm::createFunctionProfilerPass();
             (void) llvm::createFunctionResolvingPass();
             (void) llvm::createGCSEPass();
             (void) llvm::createGlobalDCEPass();
@@ -74,11 +74,13 @@ namespace {
             (void) llvm::createLoopUnrollPass();
             (void) llvm::createLoopUnswitchPass();
             (void) llvm::createLowerAllocationsPass();
+            (void) llvm::createLowerConstantExpressionsPass();
             (void) llvm::createLowerGCPass();
             (void) llvm::createLowerInvokePass();
             (void) llvm::createLowerPackedPass();
             (void) llvm::createLowerSetJmpPass();
             (void) llvm::createLowerSwitchPass();
+            (void) llvm::createProfilePathsPass();
             (void) llvm::createPromoteMemoryToRegister();
             (void) llvm::createPruneEHPass();
             (void) llvm::createRaiseAllocationsPass();
@@ -89,6 +91,7 @@ namespace {
             (void) llvm::createSingleLoopExtractorPass();
             (void) llvm::createTailCallEliminationPass();
             (void) llvm::createTailDuplicationPass();
+            (void) llvm::createTraceBasicBlockPass();
             (void) llvm::createTraceValuesPassForBasicBlocks();
             (void) llvm::createTraceValuesPassForFunction();
         }
index f22f81feeff5d32c23ed57606f65e84646ee5ae0..ef1df23e8bc04b19f7164602f577d8782765e80b 100644 (file)
@@ -23,6 +23,7 @@
 #include "llvm/DerivedTypes.h"
 #include "llvm/Module.h"
 #include "llvm/Pass.h"
+#include "llvm/Transforms/Instrumentation.h"
 #include "ProfilingUtils.h"
 #include <iostream>
 
@@ -37,6 +38,11 @@ namespace {
                                "Insert instrumentation for function profiling");
 }
 
+ModulePass *llvm::createFunctionProfilerPass()
+{
+       return new FunctionProfiler();
+}
+
 bool FunctionProfiler::runOnModule(Module &M) {
   Function *Main = M.getMainFunction();
   if (Main == 0) {
@@ -77,6 +83,8 @@ namespace {
                                "Insert instrumentation for block profiling");
 }
 
+ModulePass *llvm::createBlockProfilerPass() { return new BlockProfiler(); }
+
 bool BlockProfiler::runOnModule(Module &M) {
   Function *Main = M.getMainFunction();
   if (Main == 0) {
index 89c540c5bcd2b5f6cb500017a5aaa795939224de..c453554236e9d35f55acb0571a791fae64024f87 100644 (file)
@@ -22,6 +22,7 @@
 #include "llvm/Module.h"
 #include "llvm/Pass.h"
 #include "llvm/Transforms/Utils/BasicBlockUtils.h"
+#include "llvm/Transforms/Instrumentation.h"
 #include "ProfilingUtils.h"
 #include <iostream>
 #include <set>
@@ -36,6 +37,8 @@ namespace {
                               "Insert instrumentation for edge profiling");
 }
 
+ModulePass *llvm::createEdgeProfilerPass() { return new EdgeProfiler(); }
+
 bool EdgeProfiler::runOnModule(Module &M) {
   Function *Main = M.getMainFunction();
   if (Main == 0) {
index aa0723bd4ab022bff0b106dd2b6e07e543062604..cc14c268e0631a6befb67c0a2236efb99e6f7381 100644 (file)
@@ -31,6 +31,7 @@
 //
 //===----------------------------------------------------------------------===//
 
+#include "llvm/Transforms/Instrumentation.h"
 #include "llvm/Transforms/Utils/UnifyFunctionExitNodes.h"
 #include "llvm/Support/CFG.h"
 #include "llvm/Constants.h"
@@ -56,6 +57,8 @@ struct ProfilePaths : public FunctionPass {
 
 static RegisterOpt<ProfilePaths> X("paths", "Profile Paths");
 
+FunctionPass *createProfilePathsPass() { return new ProfilePaths(); }
+
 static Node *findBB(std::vector<Node *> &st, BasicBlock *BB){
   for(std::vector<Node *>::iterator si=st.begin(); si!=st.end(); ++si){
     if(((*si)->getElement())==BB){
index 746e82221ad157d8888a231e14d5dc7aa61f0a7d..68d50ae55967e43eb05fdab14df3fa7d3c75e561 100644 (file)
@@ -18,6 +18,7 @@
 #include "llvm/Module.h"
 #include "llvm/Pass.h"
 #include "llvm/Transforms/Utils/BasicBlockUtils.h"
+#include "llvm/Transforms/Instrumentation.h"
 #include "llvm/Instructions.h"
 #include "ProfilingUtils.h"
 #include "llvm/Support/Debug.h"
@@ -33,6 +34,11 @@ namespace {
                               "Insert instrumentation for basic block tracing");
 }
 
+ModulePass *llvm::createTraceBasicBlockPass()
+{
+       return new TraceBasicBlocks();
+}
+
 static void InsertInstrumentationCall (BasicBlock *BB,
                                        const std::string FnName,
                                        unsigned BBNumber) {