Fix leak from r210059

Also revert r210096 which temporarily disabled the test while this was being
investigated.

llvm-svn: 210115
This commit is contained in:
Alp Toker 2014-06-03 17:23:34 +00:00
parent a17a4326d0
commit ea04672c82
4 changed files with 11 additions and 4 deletions

View File

@ -663,6 +663,8 @@ public:
std::string *ResultPathName,
std::string *TempPathName);
llvm::raw_null_ostream *createNullOutputFile();
/// }
/// @name Initialization Utility Methods
/// {

View File

@ -568,7 +568,7 @@ static raw_ostream *GetOutputStream(CompilerInstance &CI,
case Backend_EmitNothing:
return nullptr;
case Backend_EmitMCNull:
return new raw_null_ostream();
return CI.createNullOutputFile();
case Backend_EmitObj:
return CI.createDefaultOutputFile(true, InFile, "o");
}

View File

@ -478,6 +478,12 @@ CompilerInstance::createDefaultOutputFile(bool Binary,
/*UseTemporary=*/true);
}
llvm::raw_null_ostream *CompilerInstance::createNullOutputFile() {
llvm::raw_null_ostream *OS = new llvm::raw_null_ostream();
addOutputFile(OutputFile("", "", OS));
return OS;
}
llvm::raw_fd_ostream *
CompilerInstance::createOutputFile(StringRef OutputPath,
bool Binary, bool RemoveFileOnSignal,

View File

@ -1,8 +1,7 @@
// FIXME: this test produces a leak report in clang.
// REQUIRES: x86-registered-target
// RUN: %clang_cc1 %s -emit-llvm-only -triple=i386-apple-darwin -o %t
// RUN: not rm %t
// FIXME: %clang_cc1 %s -emit-codegen-only -triple=i386-apple-darwin -o %t
// FIXME: not rm %t
// RUN: %clang_cc1 %s -emit-codegen-only -triple=i386-apple-darwin -o %t
// RUN: not rm %t
// Test that output is not generated when emission is disabled.