diff options
author | Vikram S. Adve <vadve@cs.uiuc.edu> | 2004-06-24 20:16:22 +0000 |
---|---|---|
committer | Vikram S. Adve <vadve@cs.uiuc.edu> | 2004-06-24 20:16:22 +0000 |
commit | e0e12ac377baa3f7ffbe3f4990a12df3bd17b94e (patch) | |
tree | 234e76e2cec5bcd334d90ff00347cb09d77a9e89 /lib/Transforms/Instrumentation/TraceBasicBlocks.cpp | |
parent | 129f6cfae7fd825fde58f487e5b535b7a539d8c8 (diff) |
This file is unused, and duplicates functionality in TraceValues.cpp.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14369 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms/Instrumentation/TraceBasicBlocks.cpp')
-rw-r--r-- | lib/Transforms/Instrumentation/TraceBasicBlocks.cpp | 76 |
1 files changed, 0 insertions, 76 deletions
diff --git a/lib/Transforms/Instrumentation/TraceBasicBlocks.cpp b/lib/Transforms/Instrumentation/TraceBasicBlocks.cpp deleted file mode 100644 index 9403aa26f7..0000000000 --- a/lib/Transforms/Instrumentation/TraceBasicBlocks.cpp +++ /dev/null @@ -1,76 +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 "llvm/Constants.h" -#include "llvm/DerivedTypes.h" -#include "llvm/Module.h" -#include "llvm/Pass.h" -#include "llvm/Transforms/Utils/BasicBlockUtils.h" -#include "llvm/iOther.h" -#include "llvm/iMemory.h" -#include "llvm/iPHINode.h" -#include "ProfilingUtils.h" -#include "Support/Debug.h" -#include <set> -using namespace llvm; - -namespace { - class TraceBasicBlocks : public Pass { - bool run(Module &M); - }; - - RegisterOpt<TraceBasicBlocks> X("trace-basic-blocks", - "Insert instrumentation for basic block tracing"); -} - -static void InsertInstrumentationCall (BasicBlock *BB, - const std::string FnName, - unsigned BBNumber) { - DEBUG (std::cerr << "InsertInstrumentationCall (\"" << BB->getName () - << "\", \"" << FnName << "\", " << BBNumber << ")\n"); - Module &M = *BB->getParent ()->getParent (); - Function *InstrFn = M.getOrInsertFunction (FnName, Type::VoidTy, - Type::UIntTy, 0); - std::vector<Value*> Args (1); - Args[0] = ConstantUInt::get (Type::UIntTy, BBNumber); - - // Insert the call after any alloca or PHI instructions... - BasicBlock::iterator InsertPos = BB->begin(); - while (isa<AllocaInst>(InsertPos) || isa<PHINode>(InsertPos)) - ++InsertPos; - - Instruction *InstrCall = new CallInst (InstrFn, Args, "", InsertPos); -} - -bool TraceBasicBlocks::run(Module &M) { - Function *Main = M.getMainFunction(); - if (Main == 0) { - std::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; -} - |