summaryrefslogtreecommitdiffstats
path: root/llvm/tools/bugpoint/ExtractFunction.cpp
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2017-11-16 17:35:50 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2017-11-16 17:35:50 +0000
commit8010bf0a9269cbe8b2ce8618a7e8597ea52ae9ec (patch)
tree19042a938b821bd6a3e15df692e3c79027bfd563 /llvm/tools/bugpoint/ExtractFunction.cpp
parentc430f08c80cde6a9e1ffa164ebd68d70435ce66b (diff)
downloadbcm5719-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.cpp28
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);
OpenPOWER on IntegriCloud