From 6c50f7113c63f80f6f1a41bd7ffe89841709e314 Mon Sep 17 00:00:00 2001 From: Don Hinton Date: Tue, 18 Sep 2018 18:39:27 +0000 Subject: [PATCH] [bugpoint] Revert r318459 Summary: Revert r318459 which introduced a TempFile scoping bug. Differential Revision: https://reviews.llvm.org/D51836 llvm-svn: 342503 --- tools/bugpoint/ExecutionDriver.cpp | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/tools/bugpoint/ExecutionDriver.cpp b/tools/bugpoint/ExecutionDriver.cpp index 773bad69fae..690a48de35a 100644 --- a/tools/bugpoint/ExecutionDriver.cpp +++ b/tools/bugpoint/ExecutionDriver.cpp @@ -299,26 +299,32 @@ Expected BugDriver::executeProgram(const Module &Program, if (!AI) AI = Interpreter; assert(AI && "Interpreter should have been created already!"); + bool CreatedBitcode = false; if (BitcodeFile.empty()) { // Emit the program to a bitcode file... - auto File = - sys::fs::TempFile::create(OutputPrefix + "-test-program-%%%%%%%.bc"); - if (!File) { - errs() << ToolName - << ": Error making unique filename: " << toString(File.takeError()) + SmallString<128> UniqueFilename; + int UniqueFD; + std::error_code EC = sys::fs::createUniqueFile( + OutputPrefix + "-test-program-%%%%%%%.bc", UniqueFD, UniqueFilename); + if (EC) { + errs() << ToolName << ": Error making unique filename: " << EC.message() << "!\n"; exit(1); } - DiscardTemp Discard{*File}; - BitcodeFile = File->TmpName; + BitcodeFile = UniqueFilename.str(); - if (writeProgramToFile(File->FD, Program)) { + if (writeProgramToFile(BitcodeFile, UniqueFD, Program)) { errs() << ToolName << ": Error emitting bitcode to file '" << BitcodeFile << "'!\n"; exit(1); } + CreatedBitcode = true; } + // Remove the temporary bitcode file when we are done. + std::string BitcodePath(BitcodeFile); + FileRemover BitcodeFileRemover(BitcodePath, CreatedBitcode && !SaveTemps); + if (OutputFile.empty()) OutputFile = OutputPrefix + "-execution-output-%%%%%%%";