diff options
author | Chris Lattner <sabre@nondot.org> | 2006-11-09 05:57:53 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2006-11-09 05:57:53 +0000 |
commit | f1a1a7ae6f2f338a06d217c4ec19360180d8ff0a (patch) | |
tree | 24df1e8cb8bfb4d60d350a96f115f28390c6f02c /llvm/tools | |
parent | 1b9633d7f00c6af08284a6e8072418718d6d65a6 (diff) | |
download | bcm5719-llvm-f1a1a7ae6f2f338a06d217c4ec19360180d8ff0a.tar.gz bcm5719-llvm-f1a1a7ae6f2f338a06d217c4ec19360180d8ff0a.zip |
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
Diffstat (limited to 'llvm/tools')
-rw-r--r-- | llvm/tools/bugpoint/ExecutionDriver.cpp | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/llvm/tools/bugpoint/ExecutionDriver.cpp b/llvm/tools/bugpoint/ExecutionDriver.cpp index dedf91eb035..93135efb815 100644 --- a/llvm/tools/bugpoint/ExecutionDriver.cpp +++ b/llvm/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<double> @@ -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<std::string> ToolArgs; ToolArgs.push_back("--relocation-model=pic"); cbe = AbstractInterpreter::createLLC(getToolName(), Message, &ToolArgs); |