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
This commit is contained in:
David Blaikie 2017-01-06 17:47:15 +00:00
parent 81d0829438
commit 64fb405836
1 changed files with 16 additions and 17 deletions

View File

@ -64,10 +64,10 @@ private:
class ClangModulesDeclVendorImpl : public ClangModulesDeclVendor { class ClangModulesDeclVendorImpl : public ClangModulesDeclVendor {
public: public:
ClangModulesDeclVendorImpl( ClangModulesDeclVendorImpl(
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine> diagnostics_engine, llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine> &diagnostics_engine,
std::shared_ptr<clang::CompilerInvocation> compiler_invocation, llvm::IntrusiveRefCntPtr<clang::CompilerInvocation> &compiler_invocation,
std::unique_ptr<clang::CompilerInstance> compiler_instance, std::unique_ptr<clang::CompilerInstance> &&compiler_instance,
std::unique_ptr<clang::Parser> parser); std::unique_ptr<clang::Parser> &&parser);
~ClangModulesDeclVendorImpl() override = default; ~ClangModulesDeclVendorImpl() override = default;
@ -96,7 +96,7 @@ private:
bool m_enabled = false; bool m_enabled = false;
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine> m_diagnostics_engine; llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine> m_diagnostics_engine;
std::shared_ptr<clang::CompilerInvocation> m_compiler_invocation; llvm::IntrusiveRefCntPtr<clang::CompilerInvocation> m_compiler_invocation;
std::unique_ptr<clang::CompilerInstance> m_compiler_instance; std::unique_ptr<clang::CompilerInstance> m_compiler_instance;
std::unique_ptr<clang::Parser> m_parser; std::unique_ptr<clang::Parser> m_parser;
size_t m_source_location_index = size_t m_source_location_index =
@ -157,14 +157,14 @@ ClangModulesDeclVendor::ClangModulesDeclVendor() {}
ClangModulesDeclVendor::~ClangModulesDeclVendor() {} ClangModulesDeclVendor::~ClangModulesDeclVendor() {}
ClangModulesDeclVendorImpl::ClangModulesDeclVendorImpl( ClangModulesDeclVendorImpl::ClangModulesDeclVendorImpl(
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine> diagnostics_engine, llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine> &diagnostics_engine,
std::shared_ptr<clang::CompilerInvocation> compiler_invocation, llvm::IntrusiveRefCntPtr<clang::CompilerInvocation> &compiler_invocation,
std::unique_ptr<clang::CompilerInstance> compiler_instance, std::unique_ptr<clang::CompilerInstance> &&compiler_instance,
std::unique_ptr<clang::Parser> parser) std::unique_ptr<clang::Parser> &&parser)
: m_diagnostics_engine(std::move(diagnostics_engine)), : ClangModulesDeclVendor(), m_diagnostics_engine(diagnostics_engine),
m_compiler_invocation(std::move(compiler_invocation)), m_compiler_invocation(compiler_invocation),
m_compiler_instance(std::move(compiler_instance)), m_compiler_instance(std::move(compiler_instance)),
m_parser(std::move(parser)) {} m_parser(std::move(parser)), m_imported_modules() {}
void ClangModulesDeclVendorImpl::ReportModuleExportsHelper( void ClangModulesDeclVendorImpl::ReportModuleExportsHelper(
std::set<ClangModulesDeclVendor::ModuleID> &exports, std::set<ClangModulesDeclVendor::ModuleID> &exports,
@ -621,9 +621,9 @@ ClangModulesDeclVendor::Create(Target &target) {
compiler_invocation_argument_cstrs.push_back(arg.c_str()); compiler_invocation_argument_cstrs.push_back(arg.c_str());
} }
std::shared_ptr<clang::CompilerInvocation> invocation = llvm::IntrusiveRefCntPtr<clang::CompilerInvocation> invocation(
clang::createInvocationFromCommandLine(compiler_invocation_argument_cstrs, clang::createInvocationFromCommandLine(compiler_invocation_argument_cstrs,
diagnostics_engine); diagnostics_engine));
if (!invocation) if (!invocation)
return nullptr; return nullptr;
@ -640,7 +640,7 @@ ClangModulesDeclVendor::Create(Target &target) {
new clang::CompilerInstance); new clang::CompilerInstance);
instance->setDiagnostics(diagnostics_engine.get()); instance->setDiagnostics(diagnostics_engine.get());
instance->setInvocation(invocation); instance->setInvocation(invocation.get());
std::unique_ptr<clang::FrontendAction> action(new clang::SyntaxOnlyAction); std::unique_ptr<clang::FrontendAction> action(new clang::SyntaxOnlyAction);
@ -674,7 +674,6 @@ ClangModulesDeclVendor::Create(Target &target) {
while (!parser->ParseTopLevelDecl(parsed)) while (!parser->ParseTopLevelDecl(parsed))
; ;
return new ClangModulesDeclVendorImpl(std::move(diagnostics_engine), return new ClangModulesDeclVendorImpl(diagnostics_engine, invocation,
std::move(invocation),
std::move(instance), std::move(parser)); std::move(instance), std::move(parser));
} }