From: Chris Lattner Date: Tue, 20 Feb 2007 05:31:49 +0000 (+0000) Subject: remove reoptimizer-specific passes X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=bb9a0411007d9bb7a60313fe427e2ef1fc98c22a;p=oota-llvm.git remove reoptimizer-specific passes git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34439 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Transforms/Instrumentation/EmitFunctions.cpp b/lib/Transforms/Instrumentation/EmitFunctions.cpp deleted file mode 100644 index 6fe10d07d6b..00000000000 --- a/lib/Transforms/Instrumentation/EmitFunctions.cpp +++ /dev/null @@ -1,126 +0,0 @@ -//===-- EmitFunctions.cpp - interface to insert 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 inserts into the input module three new global constants containing -// mapping information pertinent to the Reoptimizer's runtime library: -// 1) a structure containing a pointer to each function; -// 2) an array containing a boolean which is true iff the corresponding -// function in 1) contains a back-edge branch suitable for the Reoptimizer's -// first-level instrumentation; -// 3) an integer containing the number of entries in 1) and 2). -// -// NOTE: This pass is used by the reoptimizer only. -// -//===----------------------------------------------------------------------===// - -#include "llvm/Constants.h" -#include "llvm/DerivedTypes.h" -#include "llvm/Module.h" -#include "llvm/Pass.h" -#include "llvm/Support/CFG.h" -#include "llvm/Support/Compiler.h" -#include "llvm/Transforms/Instrumentation.h" -using namespace llvm; - -namespace llvm { - -namespace { - enum Color{ - WHITE, - GREY, - BLACK - }; - - struct VISIBILITY_HIDDEN EmitFunctionTable : public ModulePass { - bool runOnModule(Module &M); - }; - - RegisterPass - X("emitfuncs", "Emit a function table for the reoptimizer"); -} - -static char doDFS(BasicBlock * node,std::map &color){ - color[node] = GREY; - - for(succ_iterator vl = succ_begin(node), ve = succ_end(node); vl != ve; ++vl){ - - BasicBlock *BB = *vl; - - if(color[BB]!=GREY && color[BB]!=BLACK){ - if(!doDFS(BB, color)){ - return 0; - } - } - - //if has backedge - else if(color[BB]==GREY) - return 0; - - } - - color[node] = BLACK; - return 1; -} - -static char hasBackEdge(Function *F){ - std::map color; - return doDFS(F->begin(), color); -} - -// Per Module pass for inserting function table -bool EmitFunctionTable::runOnModule(Module &M){ - std::vector vType; - - std::vector vConsts; - std::vector sBCons; - - unsigned int counter = 0; - for(Module::iterator MI = M.begin(), ME = M.end(); MI != ME; ++MI) - if (!MI->isDeclaration()) { - vType.push_back(MI->getType()); - - //std::cerr<getType(), true, - GlobalValue::ExternalLinkage, - cstruct, "llvmFunctionTable"); - M.getGlobalList().push_back(gb); - - Constant *constArray = ConstantArray::get(ArrayType::get(Type::Int8Ty, - sBCons.size()), - sBCons); - - GlobalVariable *funcArray = new GlobalVariable(constArray->getType(), true, - GlobalValue::ExternalLinkage, - constArray, "llvmSimpleFunction"); - - M.getGlobalList().push_back(funcArray); - - ConstantInt *cnst = ConstantInt::get(Type::Int32Ty, counter); - GlobalVariable *fnCount = new GlobalVariable(Type::Int32Ty, true, - GlobalValue::ExternalLinkage, - cnst, "llvmFunctionCount"); - M.getGlobalList().push_back(fnCount); - return true; // Always modifies program -} - -ModulePass *createEmitFunctionTablePass () { - return new EmitFunctionTable(); -} - -} // end namespace llvm diff --git a/lib/Transforms/Instrumentation/TraceBasicBlocks.cpp b/lib/Transforms/Instrumentation/TraceBasicBlocks.cpp deleted file mode 100644 index a6c20711a6d..00000000000 --- 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 -using namespace llvm; - -namespace { - class VISIBILITY_HIDDEN TraceBasicBlocks : public ModulePass { - bool runOnModule(Module &M); - }; - - RegisterPass 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(InsertPos) || isa(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; -} -