Print the top 20 most frequently executed blocks. Fix sort predicate problem
[oota-llvm.git] / tools / bugpoint / BugDriver.h
index 2b43aae584c4beb04bd39817d56444fd17d7a9f2..acd579914d4e0da913bd1ed905fdd3e0d49aaf52 100644 (file)
@@ -1,4 +1,11 @@
 //===- 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
@@ -57,6 +64,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.
@@ -165,21 +175,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);
 };