diff options
author | Raphael Isemann <teemperor@gmail.com> | 2019-09-30 08:52:16 +0000 |
---|---|---|
committer | Raphael Isemann <teemperor@gmail.com> | 2019-09-30 08:52:16 +0000 |
commit | e7714fe7bff811785eeac2b7627ca4293565aa65 (patch) | |
tree | 336243a341600eebbaf887f6084afbbd16764163 /clang/lib/AST/ExternalASTMerger.cpp | |
parent | e3b4f0ec2566133df9fcb952c441cc43ceb5864d (diff) | |
download | bcm5719-llvm-e7714fe7bff811785eeac2b7627ca4293565aa65.tar.gz bcm5719-llvm-e7714fe7bff811785eeac2b7627ca4293565aa65.zip |
[lldb][clang][modern-type-lookup] Use ASTImporterSharedState in ExternalASTMerger
Summary:
The ExternalASTMerger should use the ASTImporterSharedState. This allows it to
handle std::pair in LLDB (but the rest of libc++ is still work in progress).
Reviewers: martong, shafik, a.sidorin
Subscribers: rnkovacs, christof, JDevlieghere, lldb-commits
Tags: #lldb
Differential Revision: https://reviews.llvm.org/D68140
llvm-svn: 373193
Diffstat (limited to 'clang/lib/AST/ExternalASTMerger.cpp')
-rw-r--r-- | clang/lib/AST/ExternalASTMerger.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/clang/lib/AST/ExternalASTMerger.cpp b/clang/lib/AST/ExternalASTMerger.cpp index 4dc89f0f31a..ea99e9bb934 100644 --- a/clang/lib/AST/ExternalASTMerger.cpp +++ b/clang/lib/AST/ExternalASTMerger.cpp @@ -107,11 +107,13 @@ public: LazyASTImporter(ExternalASTMerger &_Parent, ASTContext &ToContext, FileManager &ToFileManager, ASTContext &FromContext, FileManager &FromFileManager, - const ExternalASTMerger::OriginMap &_FromOrigins) + const ExternalASTMerger::OriginMap &_FromOrigins, + std::shared_ptr<ASTImporterSharedState> SharedState) : ASTImporter(ToContext, ToFileManager, FromContext, FromFileManager, - /*MinimalImport=*/true), + /*MinimalImport=*/true, SharedState), Parent(_Parent), Reverse(FromContext, FromFileManager, ToContext, - ToFileManager, /*MinimalImport=*/true), FromOrigins(_FromOrigins) {} + ToFileManager, /*MinimalImport=*/true), + FromOrigins(_FromOrigins) {} /// Whenever a DeclContext is imported, ensure that ExternalASTSource's origin /// map is kept up to date. Also set the appropriate flags. @@ -314,6 +316,8 @@ void ExternalASTMerger::RecordOriginImpl(const DeclContext *ToDC, DCOrigin Origi ExternalASTMerger::ExternalASTMerger(const ImporterTarget &Target, llvm::ArrayRef<ImporterSource> Sources) : LogStream(&llvm::nulls()), Target(Target) { + SharedState = std::make_shared<ASTImporterSharedState>( + *Target.AST.getTranslationUnitDecl()); AddSources(Sources); } @@ -321,7 +325,7 @@ void ExternalASTMerger::AddSources(llvm::ArrayRef<ImporterSource> Sources) { for (const ImporterSource &S : Sources) { assert(&S.AST != &Target.AST); Importers.push_back(std::make_unique<LazyASTImporter>( - *this, Target.AST, Target.FM, S.AST, S.FM, S.OM)); + *this, Target.AST, Target.FM, S.AST, S.FM, S.OM, SharedState)); } } |