summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorDevang Patel <dpatel@apple.com>2008-07-22 20:03:45 +0000
committerDevang Patel <dpatel@apple.com>2008-07-22 20:03:45 +0000
commit8502112419c43eec044c70a101c6e863fa919cfb (patch)
tree4bcf96b3e286b1269edf08257812289cc9e1b4c8 /tools
parentce8fdf105c313aa35b93e5a77ae5461e27ddebb0 (diff)
downloadllvm-8502112419c43eec044c70a101c6e863fa919cfb.tar.gz
llvm-8502112419c43eec044c70a101c6e863fa919cfb.tar.bz2
llvm-8502112419c43eec044c70a101c6e863fa919cfb.tar.xz
Remove temp. files in the end.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53930 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools')
-rw-r--r--tools/lto-bugpoint/LTOBugPoint.cpp28
-rw-r--r--tools/lto-bugpoint/LTOBugPoint.h3
2 files changed, 24 insertions, 7 deletions
diff --git a/tools/lto-bugpoint/LTOBugPoint.cpp b/tools/lto-bugpoint/LTOBugPoint.cpp
index 9bcd7ad796..7b01407465 100644
--- a/tools/lto-bugpoint/LTOBugPoint.cpp
+++ b/tools/lto-bugpoint/LTOBugPoint.cpp
@@ -14,7 +14,6 @@
#include "LTOBugPoint.h"
#include "llvm/PassManager.h"
-#include "llvm/Module.h"
#include "llvm/ModuleProvider.h"
#include "llvm/CodeGen/FileWriters.h"
#include "llvm/Target/SubtargetFeature.h"
@@ -26,7 +25,6 @@
#include "llvm/Support/SystemUtils.h"
#include "llvm/Support/MemoryBuffer.h"
#include "llvm/Bitcode/ReaderWriter.h"
-#include "llvm/System/Path.h"
#include "llvm/Config/config.h"
#include <fstream>
#include <iostream>
@@ -46,6 +44,12 @@ LTOBugPoint::LTOBugPoint(std::istream &args, std::istream &ins) {
std::string inFile;
while(getline(ins, inFile))
LinkerInputFiles.push_back(inFile);
+
+ TempDir = sys::Path::GetTemporaryDirectory();
+}
+
+LTOBugPoint::~LTOBugPoint() {
+ TempDir.eraseFromDisk(true);
}
/// findTroubleMakers - Find minimum set of input files that causes error
@@ -178,21 +182,27 @@ bool LTOBugPoint::getNativeObjectFile(std::string &FileName) {
M.reset(ParseBitcodeFile(Buffer, &ErrMsg));
std::string TargetTriple = M->getTargetTriple();
- sys::Path AsmFile(sys::Path::GetTemporaryDirectory());
+ sys::Path AsmFile(TempDir);
if(AsmFile.createTemporaryFileOnDisk(false, &ErrMsg))
return false;
- if (assembleBitcode(M.get(), AsmFile.c_str()) == false)
+ if (assembleBitcode(M.get(), AsmFile.c_str()) == false) {
+ AsmFile.eraseFromDisk();
return false;
+ }
- sys::Path NativeFile(sys::Path::GetTemporaryDirectory());
- if(NativeFile.createTemporaryFileOnDisk(false, &ErrMsg))
+ sys::Path NativeFile(TempDir);
+ if(NativeFile.createTemporaryFileOnDisk(false, &ErrMsg)) {
+ AsmFile.eraseFromDisk();
return false;
+ }
// find compiler driver
const sys::Path gcc = sys::Program::FindProgramByName("gcc");
if ( gcc.isEmpty() ) {
ErrMsg = "can't locate gcc";
+ AsmFile.eraseFromDisk();
+ NativeFile.eraseFromDisk();
return false;
}
@@ -227,8 +237,12 @@ bool LTOBugPoint::getNativeObjectFile(std::string &FileName) {
// invoke assembler
if (sys::Program::ExecuteAndWait(gcc, &args[0], 0, 0, 0, 0, &ErrMsg)) {
- ErrMsg = "error in assembly";
+ ErrMsg = "error in assembly";
+ AsmFile.eraseFromDisk();
+ NativeFile.eraseFromDisk();
return false;
}
+
+ AsmFile.eraseFromDisk();
return true;
}
diff --git a/tools/lto-bugpoint/LTOBugPoint.h b/tools/lto-bugpoint/LTOBugPoint.h
index c63a2723b2..7634357915 100644
--- a/tools/lto-bugpoint/LTOBugPoint.h
+++ b/tools/lto-bugpoint/LTOBugPoint.h
@@ -14,6 +14,7 @@
#include "llvm/ADT/SmallVector.h"
#include "llvm/Module.h"
+#include "llvm/System/Path.h"
#include <string>
#include <fstream>
@@ -21,6 +22,7 @@ class LTOBugPoint {
public:
LTOBugPoint(std::istream &args, std::istream &ins);
+ ~LTOBugPoint();
/// findTroubleMakers - Find minimum set of input files that causes error
/// identified by the script.
@@ -50,6 +52,7 @@ class LTOBugPoint {
std::string getFeatureString(const char *TargetTriple);
std::string ErrMsg;
+ llvm::sys::Path TempDir;
private:
/// assembleBitcode - Generate assembly code from the module. Return false
/// in case of an error.