summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlp Toker <alp@nuanti.com>2014-06-03 17:23:34 +0000
committerAlp Toker <alp@nuanti.com>2014-06-03 17:23:34 +0000
commitea04672c82db08338fbe65f53afacca069dcf8b7 (patch)
tree9e69e0d6b7b2c888f58db1be9f9b36b7abb63799
parenta17a4326d01be3ab80e6e73c168a8eb70100800c (diff)
downloadbcm5719-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.h2
-rw-r--r--clang/lib/CodeGen/CodeGenAction.cpp2
-rw-r--r--clang/lib/Frontend/CompilerInstance.cpp6
-rw-r--r--clang/test/Frontend/disable-output.c5
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.
OpenPOWER on IntegriCloud