diff options
author | Chris Lattner <sabre@nondot.org> | 2007-02-20 05:31:49 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2007-02-20 05:31:49 +0000 |
commit | bb9a0411007d9bb7a60313fe427e2ef1fc98c22a (patch) | |
tree | fa72de36eb85ac72fffe99050f8b314c00d8f202 /lib/Transforms/Instrumentation/TraceBasicBlocks.cpp | |
parent | 0963ad5271c1c9c96defe51a5420115e38967f38 (diff) |
remove reoptimizer-specific passes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34439 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms/Instrumentation/TraceBasicBlocks.cpp')
-rw-r--r-- | lib/Transforms/Instrumentation/TraceBasicBlocks.cpp | 80 |
1 files changed, 0 insertions, 80 deletions
diff --git a/lib/Transforms/Instrumentation/TraceBasicBlocks.cpp b/lib/Transforms/Instrumentation/TraceBasicBlocks.cpp deleted file mode 100644 index a6c20711a6..0000000000 --- a/lib/Transforms/Instrumentation/TraceBasicBlocks.cpp +++ /dev/null @@ -1,80 +0,0 @@ -//===- TraceBasicBlocks.cpp - Insert basic-block trace instrumentation ----===// -// -// The LLVM Compiler Infrastructure -// -// This file was developed by the LLVM research group and is distributed under -// the University of Illinois Open Source License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// -// -// This pass instruments the specified program with calls into a runtime -// library that cause it to output a trace of basic blocks as a side effect -// of normal execution. -// -//===----------------------------------------------------------------------===// - -#include "ProfilingUtils.h" -#include "llvm/Constants.h" -#include "llvm/DerivedTypes.h" -#include "llvm/Module.h" -#include "llvm/Pass.h" -#include "llvm/Transforms/Utils/BasicBlockUtils.h" -#include "llvm/Transforms/Instrumentation.h" -#include "llvm/Instructions.h" -#include "llvm/Support/Compiler.h" -#include "llvm/Support/Debug.h" -#include <set> -using namespace llvm; - -namespace { - class VISIBILITY_HIDDEN TraceBasicBlocks : public ModulePass { - bool runOnModule(Module &M); - }; - - RegisterPass<TraceBasicBlocks> X("trace-basic-blocks", - "Insert instrumentation for basic block tracing"); -} - -ModulePass *llvm::createTraceBasicBlockPass() -{ - return new TraceBasicBlocks(); -} - -static void InsertInstrumentationCall (BasicBlock *BB, - const std::string FnName, - unsigned BBNumber) { - DOUT << "InsertInstrumentationCall (\"" << BB->getName () - << "\", \"" << FnName << "\", " << BBNumber << ")\n"; - Module &M = *BB->getParent ()->getParent (); - Constant *InstrFn = M.getOrInsertFunction (FnName, Type::VoidTy, - Type::Int32Ty, (Type *)0); - - // Insert the call after any alloca or PHI instructions. - BasicBlock::iterator InsertPos = BB->begin(); - while (isa<AllocaInst>(InsertPos) || isa<PHINode>(InsertPos)) - ++InsertPos; - - new CallInst(InstrFn, ConstantInt::get (Type::Int32Ty, BBNumber), - "", InsertPos); -} - -bool TraceBasicBlocks::runOnModule(Module &M) { - Function *Main = M.getFunction("main"); - if (Main == 0) { - cerr << "WARNING: cannot insert basic-block trace instrumentation" - << " into a module with no main function!\n"; - return false; // No main, no instrumentation! - } - - unsigned BBNumber = 0; - for (Module::iterator F = M.begin(), E = M.end(); F != E; ++F) - for (Function::iterator BB = F->begin(), E = F->end(); BB != E; ++BB) { - InsertInstrumentationCall (BB, "llvm_trace_basic_block", BBNumber); - ++BBNumber; - } - - // Add the initialization call to main. - InsertProfilingInitCall(Main, "llvm_start_basic_block_tracing"); - return true; -} - |