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/ExtractFunction.cpp | |
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/ExtractFunction.cpp')
-rw-r--r-- | llvm/tools/bugpoint/ExtractFunction.cpp | 28 |
1 files changed, 11 insertions, 17 deletions
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); |