Added copyright header to all C++ source files.
[oota-llvm.git] / tools / bugpoint / BugDriver.h
index cf2ae58fcdd5ad1e9c856b55f018051cbca4f881..491bee9b8fcef404404bf3f9edbe0b86167997ac 100644 (file)
@@ -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<std::string> &FileNames);
   template<class It>
   void addPasses(It I, It E) { PassesToRun.insert(PassesToRun.end(), I, E); }
+  void setPassesToRun(const std::vector<const PassInfo*> &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);
 };