X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;ds=sidebyside;f=tools%2Fbugpoint%2FBugDriver.cpp;h=cecccbe0f0ef52268d7425aa67be4a73c92f96fc;hb=91c39aa6285247aefbf627f4210f7931076bae49;hp=677d17887f40cec78b255d35bdc892bd12e81d1d;hpb=f1f1a4f16128ffa2910f0b1d5c7052b3697f9fcd;p=oota-llvm.git diff --git a/tools/bugpoint/BugDriver.cpp b/tools/bugpoint/BugDriver.cpp index 677d17887f4..cecccbe0f0e 100644 --- a/tools/bugpoint/BugDriver.cpp +++ b/tools/bugpoint/BugDriver.cpp @@ -15,15 +15,15 @@ #include "BugDriver.h" #include "ToolRunner.h" -#include "llvm/Linker.h" -#include "llvm/Module.h" +#include "llvm/IR/Module.h" +#include "llvm/IRReader/IRReader.h" +#include "llvm/Linker/Linker.h" #include "llvm/Pass.h" -#include "llvm/Support/IRReader.h" #include "llvm/Support/CommandLine.h" #include "llvm/Support/FileUtilities.h" +#include "llvm/Support/Host.h" #include "llvm/Support/SourceMgr.h" #include "llvm/Support/raw_ostream.h" -#include "llvm/Support/Host.h" #include using namespace llvm; @@ -70,12 +70,16 @@ BugDriver::BugDriver(const char *toolname, bool find_bugs, unsigned timeout, unsigned memlimit, bool use_valgrind, LLVMContext& ctxt) : Context(ctxt), ToolName(toolname), ReferenceOutputFile(OutputFile), - Program(0), Interpreter(0), SafeInterpreter(0), gcc(0), - run_find_bugs(find_bugs), Timeout(timeout), + Program(nullptr), Interpreter(nullptr), SafeInterpreter(nullptr), + gcc(nullptr), run_find_bugs(find_bugs), Timeout(timeout), MemoryLimit(memlimit), UseValgrind(use_valgrind) {} BugDriver::~BugDriver() { delete Program; + if (Interpreter != SafeInterpreter) + delete Interpreter; + delete SafeInterpreter; + delete gcc; } @@ -87,7 +91,7 @@ Module *llvm::ParseInputFile(const std::string &Filename, SMDiagnostic Err; Module *Result = ParseIRFile(Filename, Err, Ctxt); if (!Result) - Err.Print("bugpoint", errs()); + Err.print("bugpoint", errs()); // If we don't have an override triple, use the first one to configure // bugpoint, or use the host triple if none provided. @@ -96,7 +100,7 @@ Module *llvm::ParseInputFile(const std::string &Filename, Triple TheTriple(Result->getTargetTriple()); if (TheTriple.getTriple().empty()) - TheTriple.setTriple(sys::getHostTriple()); + TheTriple.setTriple(sys::getDefaultTargetTriple()); TargetTriple.setTriple(TheTriple.getTriple()); } @@ -112,18 +116,18 @@ Module *llvm::ParseInputFile(const std::string &Filename, // parsed), and false on success. // bool BugDriver::addSources(const std::vector &Filenames) { - assert(Program == 0 && "Cannot call addSources multiple times!"); + assert(!Program && "Cannot call addSources multiple times!"); assert(!Filenames.empty() && "Must specify at least on input filename!"); // Load the first input file. Program = ParseInputFile(Filenames[0], Context); - if (Program == 0) return true; + if (!Program) return true; outs() << "Read input file : '" << Filenames[0] << "'\n"; for (unsigned i = 1, e = Filenames.size(); i != e; ++i) { - std::auto_ptr M(ParseInputFile(Filenames[i], Context)); - if (M.get() == 0) return true; + std::unique_ptr M(ParseInputFile(Filenames[i], Context)); + if (!M.get()) return true; outs() << "Linking in input file: '" << Filenames[i] << "'\n"; std::string ErrorMessage; @@ -156,7 +160,7 @@ bool BugDriver::run(std::string &ErrMsg) { // If we're not running as a child, the first thing that we must do is // determine what the problem is. Does the optimization series crash the // compiler, or does it produce illegal code? We make the top-level - // decision by trying to run all of the passes on the the input program, + // decision by trying to run all of the passes on the input program, // which should generate a bitcode file. If it does generate a bitcode // file, then we know the compiler didn't crash, so try to diagnose a // miscompilation. @@ -194,8 +198,8 @@ bool BugDriver::run(std::string &ErrMsg) { // Make sure the reference output file gets deleted on exit from this // function, if appropriate. - sys::Path ROF(ReferenceOutputFile); - FileRemover RemoverInstance(ROF.str(), CreatedOutput && !SaveTemps); + std::string ROF(ReferenceOutputFile); + FileRemover RemoverInstance(ROF, CreatedOutput && !SaveTemps); // Diff the output of the raw program against the reference output. If it // matches, then we assume there is a miscompilation bug and try to