X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=tools%2Fbugpoint%2FBugDriver.h;h=491bee9b8fcef404404bf3f9edbe0b86167997ac;hb=7c0e022c5c4be4b11e199a53f73bbdd84e34aa80;hp=cf2ae58fcdd5ad1e9c856b55f018051cbca4f881;hpb=91eabc13d3a456cc4b387d3d7fdb041d976732c7;p=oota-llvm.git diff --git a/tools/bugpoint/BugDriver.h b/tools/bugpoint/BugDriver.h index cf2ae58fcdd..491bee9b8fc 100644 --- a/tools/bugpoint/BugDriver.h +++ b/tools/bugpoint/BugDriver.h @@ -1,4 +1,12 @@ //===- BugDriver.h - Top-Level BugPoint class -------------------*- C++ -*-===// +// +// 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 class contains all of the shared state and information that is used by // the BugPoint tool to track down errors in optimizations. This class is the @@ -27,6 +35,8 @@ class ReduceCrashingBlocks; class CBE; class GCC; +extern bool DisableSimplifyCFG; + class BugDriver { const std::string ToolName; // Name of bugpoint std::string ReferenceOutputFile; // Name of `good' output file @@ -55,6 +65,9 @@ public: bool addSources(const std::vector &FileNames); template void addPasses(It I, It E) { PassesToRun.insert(PassesToRun.end(), I, E); } + void setPassesToRun(const std::vector &PTR) { + PassesToRun = PTR; + } /// run - The top level method that is invoked after all of the instance /// variables are set up from command line arguments. @@ -83,14 +96,16 @@ public: /// compileSharedObject - This method creates a SharedObject from a given /// BytecodeFile for debugging a code generator. - int compileSharedObject(const std::string &BytecodeFile, - std::string &SharedObject); + /// + std::string compileSharedObject(const std::string &BytecodeFile); /// debugCodeGenerator - This method narrows down a module to a function or /// set of functions, using the CBE as a ``safe'' code generator for other /// functions that are not under consideration. bool debugCodeGenerator(); + /// isExecutingJIT - Returns true if bugpoint is currently testing the JIT + /// bool isExecutingJIT(); private: @@ -145,9 +160,10 @@ private: /// performFinalCleanups - This method clones the current Program and performs /// a series of cleanups intended to get rid of extra cruft on the module - /// before handing it to the user... + /// before handing it to the user... if the module parameter is specified, it + /// operates directly on the specified Module, modifying it in place. /// - Module *performFinalCleanups() const; + Module *performFinalCleanups(Module *M = 0) const; /// initializeExecutionEnvironment - This method is used to set up the /// environment for executing LLVM programs. @@ -160,21 +176,25 @@ private: /// std::string executeProgram(std::string RequestedOutputFilename = "", std::string Bytecode = "", - std::string SharedObject = "", + const std::string &SharedObjects = "", AbstractInterpreter *AI = 0); /// executeProgramWithCBE - Used to create reference output with the C /// backend, if reference output is not provided. - std::string executeProgramWithCBE(std::string RequestedOutputFilename = "", - std::string Bytecode = "", - std::string SharedObject = ""); + /// + std::string executeProgramWithCBE(std::string OutputFile = "", + std::string BytecodeFile = "", + const std::string &SharedObj = "") { + return executeProgram(OutputFile, BytecodeFile, SharedObj, + (AbstractInterpreter*)cbe); + } /// diffProgram - This method executes the specified module and diffs the /// output against the file specified by ReferenceOutputFile. If the output /// is different, true is returned. /// bool diffProgram(const std::string &BytecodeFile = "", - const std::string &SharedObject = "", + const std::string &SharedObj = "", bool RemoveBytecode = false); };