From 8502112419c43eec044c70a101c6e863fa919cfb Mon Sep 17 00:00:00 2001 From: Devang Patel Date: Tue, 22 Jul 2008 20:03:45 +0000 Subject: [PATCH] Remove temp. files in the end. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53930 91177308-0d34-0410-b5e6-96231b3b80d8 --- tools/lto-bugpoint/LTOBugPoint.cpp | 28 +++++++++++++++++++++------- tools/lto-bugpoint/LTOBugPoint.h | 3 +++ 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/tools/lto-bugpoint/LTOBugPoint.cpp b/tools/lto-bugpoint/LTOBugPoint.cpp index 9bcd7ad7967..7b01407465a 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 #include @@ -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 c63a2723b2d..7634357915d 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 #include @@ -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. -- 2.34.1