From 3488208b8e3380ba18451824731eb6356e6ae20c Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Thu, 9 Nov 2006 05:57:53 +0000 Subject: [PATCH] add a new bugpoint mode -llc-safe. This uses LLC for both halves of a miscompilation. This is useful for working around GCC+CBE bugs or for handling programs that CBE doesn't support (e.g. inline asm) when searching for optimizer bugs. llvm-svn: 31588 --- tools/bugpoint/ExecutionDriver.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/tools/bugpoint/ExecutionDriver.cpp b/tools/bugpoint/ExecutionDriver.cpp index dedf91eb035..93135efb815 100644 --- a/tools/bugpoint/ExecutionDriver.cpp +++ b/tools/bugpoint/ExecutionDriver.cpp @@ -28,7 +28,7 @@ namespace { // for miscompilation. // enum OutputType { - AutoPick, RunLLI, RunJIT, RunLLC, RunCBE, CBE_bug + AutoPick, RunLLI, RunJIT, RunLLC, RunCBE, CBE_bug, LLC_Safe }; cl::opt @@ -47,6 +47,7 @@ namespace { clEnumValN(RunLLC, "run-llc", "Compile with LLC"), clEnumValN(RunCBE, "run-cbe", "Compile with CBE"), clEnumValN(CBE_bug,"cbe-bug", "Find CBE bugs"), + clEnumValN(LLC_Safe, "llc-safe", "Use LLC for all"), clEnumValEnd), cl::init(AutoPick)); @@ -133,6 +134,10 @@ bool BugDriver::initializeExecutionEnvironment() { Interpreter = AbstractInterpreter::createJIT(getToolName(), Message, &ToolArgv); break; + case LLC_Safe: + Interpreter = AbstractInterpreter::createLLC(getToolName(), Message, + &ToolArgv); + break; case RunCBE: case CBE_bug: Interpreter = AbstractInterpreter::createCBE(getToolName(), Message, @@ -148,8 +153,9 @@ bool BugDriver::initializeExecutionEnvironment() { if (InterpreterSel == RunCBE) { // We already created a CBE, reuse it. cbe = Interpreter; - } else if (InterpreterSel == CBE_bug) { - // We want to debug the CBE itself. Use LLC as the 'known-good' compiler. + } else if (InterpreterSel == CBE_bug || InterpreterSel == LLC_Safe) { + // We want to debug the CBE itself or LLC is known-good. Use LLC as the + // 'known-good' compiler. std::vector ToolArgs; ToolArgs.push_back("--relocation-model=pic"); cbe = AbstractInterpreter::createLLC(getToolName(), Message, &ToolArgs);