From 898de4a158ac190f5545110a00aa3db3183e59d3 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Wed, 18 Feb 2004 20:52:02 +0000 Subject: [PATCH] Update comments, if we are running with the CBE, make sure the Interpreter variable and the CBE variable are pointer equal. llvm-svn: 11599 --- llvm/tools/bugpoint/BugDriver.h | 9 ++++++--- llvm/tools/bugpoint/ExecutionDriver.cpp | 11 +++++++---- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/llvm/tools/bugpoint/BugDriver.h b/llvm/tools/bugpoint/BugDriver.h index 354fae54c64f..2dd4f3712774 100644 --- a/llvm/tools/bugpoint/BugDriver.h +++ b/llvm/tools/bugpoint/BugDriver.h @@ -173,7 +173,8 @@ private: /// executeProgram - This method runs "Program", capturing the output of the /// program to a file, returning the filename of the file. A recommended - /// filename may be optionally specified. + /// filename may be optionally specified. If there is a problem with the code + /// generator (e.g., llc crashes), this will throw an exception. /// std::string executeProgram(std::string RequestedOutputFilename = "", std::string Bytecode = "", @@ -182,13 +183,15 @@ private: bool *ProgramExitedNonzero = 0); /// executeProgramWithCBE - Used to create reference output with the C - /// backend, if reference output is not provided. + /// backend, if reference output is not provided. If there is a problem with + /// the code generator (e.g., llc crashes), this will throw an exception. /// std::string executeProgramWithCBE(std::string OutputFile = ""); /// 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. + /// is different, true is returned. If there is a problem with the code + /// generator (e.g., llc crashes), this will throw an exception. /// bool diffProgram(const std::string &BytecodeFile = "", const std::string &SharedObj = "", diff --git a/llvm/tools/bugpoint/ExecutionDriver.cpp b/llvm/tools/bugpoint/ExecutionDriver.cpp index 9dc9adf804e6..ecf9dc8a582b 100644 --- a/llvm/tools/bugpoint/ExecutionDriver.cpp +++ b/llvm/tools/bugpoint/ExecutionDriver.cpp @@ -84,11 +84,12 @@ bool BugDriver::initializeExecutionEnvironment() { // Create an instance of the AbstractInterpreter interface as specified on // the command line + cbe = 0; std::string Message; switch (InterpreterSel) { case AutoPick: InterpreterSel = RunCBE; - Interpreter = AbstractInterpreter::createCBE(getToolName(), Message); + Interpreter = cbe = AbstractInterpreter::createCBE(getToolName(), Message); if (!Interpreter) { InterpreterSel = RunJIT; Interpreter = AbstractInterpreter::createJIT(getToolName(), Message); @@ -116,7 +117,7 @@ bool BugDriver::initializeExecutionEnvironment() { Interpreter = AbstractInterpreter::createJIT(getToolName(), Message); break; case RunCBE: - Interpreter = AbstractInterpreter::createCBE(getToolName(), Message); + Interpreter = cbe = AbstractInterpreter::createCBE(getToolName(), Message); break; default: Message = "Sorry, this back-end is not supported by bugpoint right now!\n"; @@ -125,8 +126,10 @@ bool BugDriver::initializeExecutionEnvironment() { std::cerr << Message; // Initialize auxiliary tools for debugging - cbe = AbstractInterpreter::createCBE(getToolName(), Message); - if (!cbe) { std::cout << Message << "\nExiting.\n"; exit(1); } + if (!cbe) { + cbe = AbstractInterpreter::createCBE(getToolName(), Message); + if (!cbe) { std::cout << Message << "\nExiting.\n"; exit(1); } + } gcc = GCC::create(getToolName(), Message); if (!gcc) { std::cout << Message << "\nExiting.\n"; exit(1); }