From b830eaf3e0eb5fb7a548dc78fff33b2e3659704a Mon Sep 17 00:00:00 2001 From: Alp Toker <alp@nuanti.com> Date: Tue, 3 Jun 2014 17:23:34 +0000 Subject: [PATCH] Fix leak from r210059 Also revert r210096 which temporarily disabled the test while this was being investigated. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@210115 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/clang/Frontend/CompilerInstance.h | 2 ++ lib/CodeGen/CodeGenAction.cpp | 2 +- lib/Frontend/CompilerInstance.cpp | 6 ++++++ test/Frontend/disable-output.c | 5 ++--- 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/include/clang/Frontend/CompilerInstance.h b/include/clang/Frontend/CompilerInstance.h index 97c140ecbda..b144069b975 100644 --- a/include/clang/Frontend/CompilerInstance.h +++ b/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/lib/CodeGen/CodeGenAction.cpp b/lib/CodeGen/CodeGenAction.cpp index 88f02b4e6a0..a197faece1f 100644 --- a/lib/CodeGen/CodeGenAction.cpp +++ b/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/lib/Frontend/CompilerInstance.cpp b/lib/Frontend/CompilerInstance.cpp index c65d34bd2a9..ac20d7a28e5 100644 --- a/lib/Frontend/CompilerInstance.cpp +++ b/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/test/Frontend/disable-output.c b/test/Frontend/disable-output.c index 46dae32fc51..786ac77ef18 100644 --- a/test/Frontend/disable-output.c +++ b/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. -- GitLab