diff options
| author | Rafael Espindola <rafael.espindola@gmail.com> | 2017-11-16 17:35:50 +0000 |
|---|---|---|
| committer | Rafael Espindola <rafael.espindola@gmail.com> | 2017-11-16 17:35:50 +0000 |
| commit | 8010bf0a9269cbe8b2ce8618a7e8597ea52ae9ec (patch) | |
| tree | 19042a938b821bd6a3e15df692e3c79027bfd563 /llvm/tools/bugpoint | |
| parent | c430f08c80cde6a9e1ffa164ebd68d70435ce66b (diff) | |
| download | bcm5719-llvm-8010bf0a9269cbe8b2ce8618a7e8597ea52ae9ec.tar.gz bcm5719-llvm-8010bf0a9269cbe8b2ce8618a7e8597ea52ae9ec.zip | |
Convert another use of createUniqueFile to TempFile::create.
llvm-svn: 318427
Diffstat (limited to 'llvm/tools/bugpoint')
| -rw-r--r-- | llvm/tools/bugpoint/BugDriver.cpp | 5 | ||||
| -rw-r--r-- | llvm/tools/bugpoint/BugDriver.h | 6 | ||||
| -rw-r--r-- | llvm/tools/bugpoint/ExtractFunction.cpp | 28 | ||||
| -rw-r--r-- | llvm/tools/bugpoint/OptimizerDriver.cpp | 5 |
4 files changed, 22 insertions, 22 deletions
diff --git a/llvm/tools/bugpoint/BugDriver.cpp b/llvm/tools/bugpoint/BugDriver.cpp index 78f35293d2a..3c2af2d17ee 100644 --- a/llvm/tools/bugpoint/BugDriver.cpp +++ b/llvm/tools/bugpoint/BugDriver.cpp @@ -32,6 +32,11 @@ namespace llvm { Triple TargetTriple; } +DiscardTemp::~DiscardTemp() { + if (Error E = File.discard()) + errs() << "Failed to delete temp file " << toString(std::move(E)) << '\n'; +} + // Anonymous namespace to define command line options for debugging. // namespace { diff --git a/llvm/tools/bugpoint/BugDriver.h b/llvm/tools/bugpoint/BugDriver.h index af80e8b2b77..5eaad34927e 100644 --- a/llvm/tools/bugpoint/BugDriver.h +++ b/llvm/tools/bugpoint/BugDriver.h @@ -18,6 +18,7 @@ #include "llvm/IR/ValueMap.h" #include "llvm/Support/Error.h" +#include "llvm/Support/FileSystem.h" #include "llvm/Transforms/Utils/ValueMapper.h" #include <memory> #include <string> @@ -278,6 +279,11 @@ private: Error initializeExecutionEnvironment(); }; +struct DiscardTemp { + sys::fs::TempFile &File; + ~DiscardTemp(); +}; + /// Given a bitcode or assembly input filename, parse and return it, or return /// null if not possible. /// diff --git a/llvm/tools/bugpoint/ExtractFunction.cpp b/llvm/tools/bugpoint/ExtractFunction.cpp index ec97ca30e7c..431dcedfe20 100644 --- a/llvm/tools/bugpoint/ExtractFunction.cpp +++ b/llvm/tools/bugpoint/ExtractFunction.cpp @@ -373,19 +373,17 @@ llvm::SplitFunctionsOutOfModule(Module *M, const std::vector<Function *> &F, std::unique_ptr<Module> BugDriver::extractMappedBlocksFromModule(const std::vector<BasicBlock *> &BBs, Module *M) { - SmallString<128> Filename; - int FD; - std::error_code EC = sys::fs::createUniqueFile( - OutputPrefix + "-extractblocks%%%%%%%", FD, Filename); - if (EC) { + auto Temp = sys::fs::TempFile::create(OutputPrefix + "-extractblocks%%%%%%%"); + if (!Temp) { outs() << "*** Basic Block extraction failed!\n"; - errs() << "Error creating temporary file: " << EC.message() << "\n"; + errs() << "Error creating temporary file: " << toString(Temp.takeError()) + << "\n"; EmitProgressBitcode(M, "basicblockextractfail", true); return nullptr; } - sys::RemoveFileOnSignal(Filename); + DiscardTemp Discard{*Temp}; - ToolOutputFile BlocksToNotExtractFile(Filename.c_str(), FD); + raw_fd_ostream OS(Temp->FD, /*shouldClose*/ false); for (std::vector<BasicBlock *>::const_iterator I = BBs.begin(), E = BBs.end(); I != E; ++I) { BasicBlock *BB = *I; @@ -393,28 +391,24 @@ BugDriver::extractMappedBlocksFromModule(const std::vector<BasicBlock *> &BBs, // off of. if (!BB->hasName()) BB->setName("tmpbb"); - BlocksToNotExtractFile.os() << BB->getParent()->getName() << " " - << BB->getName() << "\n"; + OS << BB->getParent()->getName() << " " << BB->getName() << "\n"; } - BlocksToNotExtractFile.os().close(); - if (BlocksToNotExtractFile.os().has_error()) { + OS.flush(); + if (OS.has_error()) { errs() << "Error writing list of blocks to not extract\n"; EmitProgressBitcode(M, "basicblockextractfail", true); - BlocksToNotExtractFile.os().clear_error(); + OS.clear_error(); return nullptr; } - BlocksToNotExtractFile.keep(); std::string uniqueFN = "--extract-blocks-file="; - uniqueFN += Filename.str(); + uniqueFN += Temp->TmpName; const char *ExtraArg = uniqueFN.c_str(); std::vector<std::string> PI; PI.push_back("extract-blocks"); std::unique_ptr<Module> Ret = runPassesOn(M, PI, 1, &ExtraArg); - sys::fs::remove(Filename.c_str()); - if (!Ret) { outs() << "*** Basic Block extraction failed, please report a bug!\n"; EmitProgressBitcode(M, "basicblockextractfail", true); diff --git a/llvm/tools/bugpoint/OptimizerDriver.cpp b/llvm/tools/bugpoint/OptimizerDriver.cpp index cc726486dfe..d4e353dd994 100644 --- a/llvm/tools/bugpoint/OptimizerDriver.cpp +++ b/llvm/tools/bugpoint/OptimizerDriver.cpp @@ -118,11 +118,6 @@ static cl::list<std::string> OptArgs("opt-args", cl::Positional, cl::desc("<opt arguments>..."), cl::ZeroOrMore, cl::PositionalEatsArgs); -struct DiscardTemp { - sys::fs::TempFile &File; - ~DiscardTemp() { consumeError(File.discard()); } -}; - /// runPasses - Run the specified passes on Program, outputting a bitcode file /// and writing the filename into OutputFile if successful. If the /// optimizations fail for some reason (optimizer crashes), return true, |

