From 64fb40583610e67b93c7ba4dabfc831111cb1d12 Mon Sep 17 00:00:00 2001 From: David Blaikie Date: Fri, 6 Jan 2017 17:47:15 +0000 Subject: [PATCH] Revert "Fixes for Clang API changes to use std::shared_ptr" The original Clang change caused a memory leak detected by asan. Reverting while I investigate. This reverts commit r291200. llvm-svn: 291250 --- .../Clang/ClangModulesDeclVendor.cpp | 33 +++++++++---------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/lldb/source/Plugins/ExpressionParser/Clang/ClangModulesDeclVendor.cpp b/lldb/source/Plugins/ExpressionParser/Clang/ClangModulesDeclVendor.cpp index 64b303c4f735..4ddf6974c728 100644 --- a/lldb/source/Plugins/ExpressionParser/Clang/ClangModulesDeclVendor.cpp +++ b/lldb/source/Plugins/ExpressionParser/Clang/ClangModulesDeclVendor.cpp @@ -64,10 +64,10 @@ private: class ClangModulesDeclVendorImpl : public ClangModulesDeclVendor { public: ClangModulesDeclVendorImpl( - llvm::IntrusiveRefCntPtr diagnostics_engine, - std::shared_ptr compiler_invocation, - std::unique_ptr compiler_instance, - std::unique_ptr parser); + llvm::IntrusiveRefCntPtr &diagnostics_engine, + llvm::IntrusiveRefCntPtr &compiler_invocation, + std::unique_ptr &&compiler_instance, + std::unique_ptr &&parser); ~ClangModulesDeclVendorImpl() override = default; @@ -96,7 +96,7 @@ private: bool m_enabled = false; llvm::IntrusiveRefCntPtr m_diagnostics_engine; - std::shared_ptr m_compiler_invocation; + llvm::IntrusiveRefCntPtr m_compiler_invocation; std::unique_ptr m_compiler_instance; std::unique_ptr m_parser; size_t m_source_location_index = @@ -157,14 +157,14 @@ ClangModulesDeclVendor::ClangModulesDeclVendor() {} ClangModulesDeclVendor::~ClangModulesDeclVendor() {} ClangModulesDeclVendorImpl::ClangModulesDeclVendorImpl( - llvm::IntrusiveRefCntPtr diagnostics_engine, - std::shared_ptr compiler_invocation, - std::unique_ptr compiler_instance, - std::unique_ptr parser) - : m_diagnostics_engine(std::move(diagnostics_engine)), - m_compiler_invocation(std::move(compiler_invocation)), + llvm::IntrusiveRefCntPtr &diagnostics_engine, + llvm::IntrusiveRefCntPtr &compiler_invocation, + std::unique_ptr &&compiler_instance, + std::unique_ptr &&parser) + : ClangModulesDeclVendor(), m_diagnostics_engine(diagnostics_engine), + m_compiler_invocation(compiler_invocation), m_compiler_instance(std::move(compiler_instance)), - m_parser(std::move(parser)) {} + m_parser(std::move(parser)), m_imported_modules() {} void ClangModulesDeclVendorImpl::ReportModuleExportsHelper( std::set &exports, @@ -621,9 +621,9 @@ ClangModulesDeclVendor::Create(Target &target) { compiler_invocation_argument_cstrs.push_back(arg.c_str()); } - std::shared_ptr invocation = + llvm::IntrusiveRefCntPtr invocation( clang::createInvocationFromCommandLine(compiler_invocation_argument_cstrs, - diagnostics_engine); + diagnostics_engine)); if (!invocation) return nullptr; @@ -640,7 +640,7 @@ ClangModulesDeclVendor::Create(Target &target) { new clang::CompilerInstance); instance->setDiagnostics(diagnostics_engine.get()); - instance->setInvocation(invocation); + instance->setInvocation(invocation.get()); std::unique_ptr action(new clang::SyntaxOnlyAction); @@ -674,7 +674,6 @@ ClangModulesDeclVendor::Create(Target &target) { while (!parser->ParseTopLevelDecl(parsed)) ; - return new ClangModulesDeclVendorImpl(std::move(diagnostics_engine), - std::move(invocation), + return new ClangModulesDeclVendorImpl(diagnostics_engine, invocation, std::move(instance), std::move(parser)); }