diff options
author | Alp Toker <alp@nuanti.com> | 2014-06-03 17:23:34 +0000 |
---|---|---|
committer | Alp Toker <alp@nuanti.com> | 2014-06-03 17:23:34 +0000 |
commit | ea04672c82db08338fbe65f53afacca069dcf8b7 (patch) | |
tree | 9e69e0d6b7b2c888f58db1be9f9b36b7abb63799 | |
parent | a17a4326d01be3ab80e6e73c168a8eb70100800c (diff) | |
download | bcm5719-llvm-ea04672c82db08338fbe65f53afacca069dcf8b7.tar.gz bcm5719-llvm-ea04672c82db08338fbe65f53afacca069dcf8b7.zip |
Fix leak from r210059
Also revert r210096 which temporarily disabled the test while this was being
investigated.
llvm-svn: 210115
-rw-r--r-- | clang/include/clang/Frontend/CompilerInstance.h | 2 | ||||
-rw-r--r-- | clang/lib/CodeGen/CodeGenAction.cpp | 2 | ||||
-rw-r--r-- | clang/lib/Frontend/CompilerInstance.cpp | 6 | ||||
-rw-r--r-- | clang/test/Frontend/disable-output.c | 5 |
4 files changed, 11 insertions, 4 deletions
diff --git a/clang/include/clang/Frontend/CompilerInstance.h b/clang/include/clang/Frontend/CompilerInstance.h index 97c140ecbda..b144069b975 100644 --- a/clang/include/clang/Frontend/CompilerInstance.h +++ b/clang/include/clang/Frontend/CompilerInstance.h @@ -663,6 +663,8 @@ public: std::string *ResultPathName, std::string *TempPathName); + llvm::raw_null_ostream *createNullOutputFile(); + /// } /// @name Initialization Utility Methods /// { diff --git a/clang/lib/CodeGen/CodeGenAction.cpp b/clang/lib/CodeGen/CodeGenAction.cpp index 88f02b4e6a0..a197faece1f 100644 --- a/clang/lib/CodeGen/CodeGenAction.cpp +++ b/clang/lib/CodeGen/CodeGenAction.cpp @@ -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"); } diff --git a/clang/lib/Frontend/CompilerInstance.cpp b/clang/lib/Frontend/CompilerInstance.cpp index c65d34bd2a9..ac20d7a28e5 100644 --- a/clang/lib/Frontend/CompilerInstance.cpp +++ b/clang/lib/Frontend/CompilerInstance.cpp @@ -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, diff --git a/clang/test/Frontend/disable-output.c b/clang/test/Frontend/disable-output.c index 46dae32fc51..786ac77ef18 100644 --- a/clang/test/Frontend/disable-output.c +++ b/clang/test/Frontend/disable-output.c @@ -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. |