aboutsummaryrefslogtreecommitdiff
path: root/tools/bugpoint/ExecutionDriver.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/bugpoint/ExecutionDriver.cpp')
-rw-r--r--tools/bugpoint/ExecutionDriver.cpp12
1 files changed, 7 insertions, 5 deletions
diff --git a/tools/bugpoint/ExecutionDriver.cpp b/tools/bugpoint/ExecutionDriver.cpp
index f941713b3a..17e2ce2378 100644
--- a/tools/bugpoint/ExecutionDriver.cpp
+++ b/tools/bugpoint/ExecutionDriver.cpp
@@ -135,16 +135,16 @@ std::string BugDriver::executeProgramWithCBE(std::string OutputFile,
return executeProgram(OutputFile, BytecodeFile, SharedObject, cbe);
}
-int BugDriver::compileSharedObject(const std::string &BytecodeFile,
- std::string &SharedObject) {
+std::string BugDriver::compileSharedObject(const std::string &BytecodeFile) {
assert(Interpreter && "Interpreter should have been created already!");
- std::string Message, OutputCFile;
+ std::string OutputCFile;
// Using CBE
cbe->OutputC(BytecodeFile, OutputCFile);
#if 0 /* This is an alternative, as yet unimplemented */
// Using LLC
+ std::string Message;
LLC *llc = createLLCtool(Message);
if (llc->OutputAsm(BytecodeFile, OutputFile)) {
std::cerr << "Could not generate asm code with `llc', exiting.\n";
@@ -152,12 +152,14 @@ int BugDriver::compileSharedObject(const std::string &BytecodeFile,
}
#endif
- gcc->MakeSharedObject(OutputCFile, CFile, SharedObject);
+ std::string SharedObjectFile;
+ if (gcc->MakeSharedObject(OutputCFile, CFile, SharedObject))
+ exit(1);
// Remove the intermediate C file
removeFile(OutputCFile);
- return 0;
+ return SharedObjectFile;
}