summaryrefslogtreecommitdiffstats
path: root/llvm/tools
diff options
context:
space:
mode:
authorBill Wendling <isanbard@gmail.com>2012-09-06 21:07:57 +0000
committerBill Wendling <isanbard@gmail.com>2012-09-06 21:07:57 +0000
commit33fa1df67dd7c139f93ba9993f9bec424a4dbfb4 (patch)
tree04bddbe999ec8489b63c187de5ff0d53eee0b969 /llvm/tools
parent2bc9674b0a1e5c4f64835124eb77da041e0161a2 (diff)
downloadbcm5719-llvm-33fa1df67dd7c139f93ba9993f9bec424a4dbfb4.tar.gz
bcm5719-llvm-33fa1df67dd7c139f93ba9993f9bec424a4dbfb4.zip
Explicitly erase the file from disk if something bad happened. <rdar://problem/12184899>
llvm-svn: 163349
Diffstat (limited to 'llvm/tools')
-rw-r--r--llvm/tools/lto/LTOCodeGenerator.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/llvm/tools/lto/LTOCodeGenerator.cpp b/llvm/tools/lto/LTOCodeGenerator.cpp
index b80bc34a231..f8b07b2e2ab 100644
--- a/llvm/tools/lto/LTOCodeGenerator.cpp
+++ b/llvm/tools/lto/LTOCodeGenerator.cpp
@@ -163,13 +163,16 @@ bool LTOCodeGenerator::compile_to_file(const char** name, std::string& errMsg) {
// generate object file
bool genResult = false;
tool_output_file objFile(uniqueObjPath.c_str(), errMsg);
- if (!errMsg.empty())
+ if (!errMsg.empty()) {
+ uniqueObjPath.eraseFromDisk();
return true;
+ }
genResult = this->generateObjectFile(objFile.os(), errMsg);
objFile.os().close();
if (objFile.os().has_error()) {
objFile.os().clear_error();
+ uniqueObjPath.eraseFromDisk();
return true;
}
@@ -196,6 +199,7 @@ const void* LTOCodeGenerator::compile(size_t* length, std::string& errMsg) {
OwningPtr<MemoryBuffer> BuffPtr;
if (error_code ec = MemoryBuffer::getFile(name, BuffPtr, -1, false)) {
errMsg = ec.message();
+ sys::Path(_nativeObjectPath).eraseFromDisk();
return NULL;
}
_nativeObjectFile = BuffPtr.take();
OpenPOWER on IntegriCloud