From 8010bf0a9269cbe8b2ce8618a7e8597ea52ae9ec Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Thu, 16 Nov 2017 17:35:50 +0000 Subject: [PATCH] Convert another use of createUniqueFile to TempFile::create. llvm-svn: 318427 --- llvm/tools/bugpoint/BugDriver.cpp | 5 +++++ llvm/tools/bugpoint/BugDriver.h | 6 ++++++ llvm/tools/bugpoint/ExtractFunction.cpp | 28 +++++++++++----------------- 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 78f3529..3c2af2d 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 af80e8b..5eaad34 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 #include @@ -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 ec97ca3..431dced 100644 --- a/llvm/tools/bugpoint/ExtractFunction.cpp +++ b/llvm/tools/bugpoint/ExtractFunction.cpp @@ -373,19 +373,17 @@ llvm::SplitFunctionsOutOfModule(Module *M, const std::vector &F, std::unique_ptr BugDriver::extractMappedBlocksFromModule(const std::vector &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::const_iterator I = BBs.begin(), E = BBs.end(); I != E; ++I) { BasicBlock *BB = *I; @@ -393,28 +391,24 @@ BugDriver::extractMappedBlocksFromModule(const std::vector &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 PI; PI.push_back("extract-blocks"); std::unique_ptr 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 cc72648..d4e353d 100644 --- a/llvm/tools/bugpoint/OptimizerDriver.cpp +++ b/llvm/tools/bugpoint/OptimizerDriver.cpp @@ -118,11 +118,6 @@ static cl::list OptArgs("opt-args", cl::Positional, cl::desc("..."), 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, -- 2.7.4