Make ToolExecutionError inherit std::exception and implement its

interface: getMessage() is gone, use what() instead.

llvm-svn: 11621
This commit is contained in:
Alkis Evlogimenos 2004-02-19 07:39:26 +00:00
parent c94edd6cde
commit 3562c2dd9f
4 changed files with 10 additions and 6 deletions

View File

@ -18,6 +18,7 @@
#define TOOLRUNNER_H
#include "Support/SystemUtils.h"
#include <exception>
#include <vector>
namespace llvm {
@ -30,11 +31,12 @@ class LLC;
/// AbstractInterpreter instances if there is an error running a tool (e.g., LLC
/// crashes) which prevents execution of the program.
///
class ToolExecutionError {
class ToolExecutionError : std::exception {
std::string Message;
public:
ToolExecutionError(const std::string &M) : Message(M) {}
const std::string getMessage() const { return Message; }
explicit ToolExecutionError(const std::string &M) : Message(M) {}
virtual ~ToolExecutionError() throw();
virtual const char* what() const throw() { return Message.c_str(); }
};

View File

@ -21,6 +21,8 @@
#include <sstream>
using namespace llvm;
ToolExecutionError::~ToolExecutionError() throw() { }
static void ProcessFailure(std::string ProgPath, const char** Args) {
std::ostringstream OS;
OS << "\nError running tool:\n ";

View File

@ -159,7 +159,7 @@ bool BugDriver::run() {
CreatedOutput = true;
std::cout << "Reference output is: " << ReferenceOutputFile << "\n";
} catch (ToolExecutionError &TEE) {
std::cerr << TEE.getMessage();
std::cerr << TEE.what();
if (Interpreter != cbe) {
std::cerr << "*** There is a bug running the C backend. Either debug"
<< " it (use the -run-cbe bugpoint option), or fix the error"
@ -183,7 +183,7 @@ bool BugDriver::run() {
return debugMiscompilation();
}
} catch (ToolExecutionError &TEE) {
std::cerr << TEE.getMessage();
std::cerr << TEE.what();
return debugCodeGeneratorCrash();
}

View File

@ -54,7 +54,7 @@ int main(int argc, char **argv) {
try {
return D.run();
} catch (ToolExecutionError &TEE) {
std::cerr << "Tool execution error: " << TEE.getMessage() << "\n";
std::cerr << "Tool execution error: " << TEE.what() << "\n";
return 1;
} catch (...) {
std::cerr << "Whoops, an exception leaked out of bugpoint. "