From a5a96a9ed9d90014769ffc86ca48c486cf753ad5 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Tue, 14 Oct 2003 20:52:55 +0000 Subject: [PATCH] Eliminate the bugpoint -mode option, by making bugpoint automatically infer the root of all of your problems git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9115 91177308-0d34-0410-b5e6-96231b3b80d8 --- tools/bugpoint/BugDriver.cpp | 51 +++++++++++++------------------ tools/bugpoint/Miscompilation.cpp | 7 ----- 2 files changed, 22 insertions(+), 36 deletions(-) diff --git a/tools/bugpoint/BugDriver.cpp b/tools/bugpoint/BugDriver.cpp index 08011085577..f03a197310c 100644 --- a/tools/bugpoint/BugDriver.cpp +++ b/tools/bugpoint/BugDriver.cpp @@ -27,14 +27,6 @@ namespace { cl::opt OutputFile("output", cl::desc("Specify a reference program output " "(for miscompilation detection)")); - - enum DebugType { DebugCompile, DebugCodegen }; - cl::opt - DebugMode("mode", cl::desc("Debug mode for bugpoint:"), cl::Prefix, - cl::values(clEnumValN(DebugCompile, "compile", " Compilation"), - clEnumValN(DebugCodegen, "codegen", " Code generation"), - 0), - cl::init(DebugCompile)); } /// getPassesString - Turn a list of passes into a string which indicates the @@ -134,8 +126,6 @@ bool BugDriver::run() { return debugCrash(); } - std::cout << "Checking for a miscompilation...\n"; - // Set up the execution environment, selecting a method to run LLVM bytecode. if (initializeExecutionEnvironment()) return true; @@ -146,33 +136,36 @@ bool BugDriver::run() { bool CreatedOutput = false; if (ReferenceOutputFile.empty()) { std::cout << "Generating reference output from raw program..."; - if (DebugCodegen) { - ReferenceOutputFile = executeProgramWithCBE("bugpoint.reference.out"); - } else { - ReferenceOutputFile = executeProgram("bugpoint.reference.out"); - } + ReferenceOutputFile = executeProgramWithCBE("bugpoint.reference.out"); CreatedOutput = true; std::cout << "Reference output is: " << ReferenceOutputFile << "\n"; - } + } - bool Result; - switch (DebugMode) { - default: assert(0 && "Bad value for DebugMode!"); - case DebugCompile: + // Make sure the reference output file gets deleted on exit from this + // function, if appropriate. + struct Remover { + bool DeleteIt; const std::string &Filename; + Remover(bool deleteIt, const std::string &filename) + : DeleteIt(deleteIt), Filename(filename) {} + ~Remover() { + if (DeleteIt) removeFile(Filename); + } + } RemoverInstance(CreatedOutput, ReferenceOutputFile); + + // Diff the output of the raw program against the reference output. If it + // matches, then we have a miscompilation bug. + std::cout << "*** Checking the code generator...\n"; + if (!diffProgram()) { std::cout << "\n*** Debugging miscompilation!\n"; - Result = debugMiscompilation(); - break; - case DebugCodegen: - std::cout << "Debugging code generator problem!\n"; - Result = debugCodeGenerator(); + return debugMiscompilation(); } - if (CreatedOutput) removeFile(ReferenceOutputFile); - return Result; + std::cout << "\n*** Input program does not match reference diff!\n"; + std::cout << "Debugging code generator problem!\n"; + return debugCodeGenerator(); } -void BugDriver::PrintFunctionList(const std::vector &Funcs) -{ +void BugDriver::PrintFunctionList(const std::vector &Funcs) { for (unsigned i = 0, e = Funcs.size(); i != e; ++i) { if (i) std::cout << ", "; std::cout << Funcs[i]->getName(); diff --git a/tools/bugpoint/Miscompilation.cpp b/tools/bugpoint/Miscompilation.cpp index b88f87c9b1e..2ede067b1e0 100644 --- a/tools/bugpoint/Miscompilation.cpp +++ b/tools/bugpoint/Miscompilation.cpp @@ -261,13 +261,6 @@ bool ReduceMiscompilingFunctions::TestFuncs(const std::vector &Funcs, /// input. /// bool BugDriver::debugMiscompilation() { - - if (diffProgram()) { - std::cout << "\n*** Input program does not match reference diff!\n" - << " Must be problem with input source!\n"; - return false; // Problem found - } - // Make sure something was miscompiled... if (!ReduceMiscompilingPasses(*this).reduceList(PassesToRun)) { std::cerr << "*** Optimized program matches reference output! No problem " -- 2.34.1