From e3b557809604d036af6e00c60f012c2025b59a5e Mon Sep 17 00:00:00 2001 From: Dimitry Andric Date: Sat, 11 Feb 2023 13:38:04 +0100 Subject: Vendor import of llvm-project main llvmorg-16-init-18548-gb0daacf58f41, the last commit before the upstream release/17.x branch was created. --- clang/lib/Frontend/ChainedIncludesSource.cpp | 39 +++++++--------------------- 1 file changed, 9 insertions(+), 30 deletions(-) (limited to 'clang/lib/Frontend/ChainedIncludesSource.cpp') diff --git a/clang/lib/Frontend/ChainedIncludesSource.cpp b/clang/lib/Frontend/ChainedIncludesSource.cpp index 380eba4562b4..c1a9f25a8798 100644 --- a/clang/lib/Frontend/ChainedIncludesSource.cpp +++ b/clang/lib/Frontend/ChainedIncludesSource.cpp @@ -27,15 +27,15 @@ using namespace clang; namespace { -class ChainedIncludesSourceImpl : public ExternalSemaSource { +class ChainedIncludesSource : public ExternalSemaSource { public: - ChainedIncludesSourceImpl(std::vector> CIs) + ChainedIncludesSource(std::vector> CIs) : CIs(std::move(CIs)) {} protected: - //===----------------------------------------------------------------------===// + //===--------------------------------------------------------------------===// // ExternalASTSource interface. - //===----------------------------------------------------------------------===// + //===--------------------------------------------------------------------===// /// Return the amount of memory used by memory buffers, breaking down /// by heap-backed versus mmap'ed memory. @@ -51,30 +51,7 @@ protected: private: std::vector> CIs; }; - -/// Members of ChainedIncludesSource, factored out so we can initialize -/// them before we initialize the ExternalSemaSource base class. -struct ChainedIncludesSourceMembers { - ChainedIncludesSourceMembers( - std::vector> CIs, - IntrusiveRefCntPtr FinalReader) - : Impl(std::move(CIs)), FinalReader(std::move(FinalReader)) {} - ChainedIncludesSourceImpl Impl; - IntrusiveRefCntPtr FinalReader; -}; - -/// Use MultiplexExternalSemaSource to dispatch all ExternalSemaSource -/// calls to the final reader. -class ChainedIncludesSource - : private ChainedIncludesSourceMembers, - public MultiplexExternalSemaSource { -public: - ChainedIncludesSource(std::vector> CIs, - IntrusiveRefCntPtr FinalReader) - : ChainedIncludesSourceMembers(std::move(CIs), std::move(FinalReader)), - MultiplexExternalSemaSource(Impl, *this->FinalReader) {} -}; -} +} // end anonymous namespace static ASTReader * createASTReader(CompilerInstance &CI, StringRef pchFile, @@ -214,6 +191,8 @@ IntrusiveRefCntPtr clang::createChainedIncludesSource( if (!Reader) return nullptr; - return IntrusiveRefCntPtr( - new ChainedIncludesSource(std::move(CIs), Reader)); + auto ChainedSrc = + llvm::makeIntrusiveRefCnt(std::move(CIs)); + return llvm::makeIntrusiveRefCnt( + ChainedSrc.get(), Reader.get()); } -- cgit v1.2.3