Index: include/clang/Sema/MultiplexExternalSemaSource.h =================================================================== --- include/clang/Sema/MultiplexExternalSemaSource.h +++ include/clang/Sema/MultiplexExternalSemaSource.h @@ -148,8 +148,10 @@ /// \brief Print any statistics that have been gathered regarding /// the external AST source. void PrintStats() override; - - + + /// \brief Retrieve the module that corresponds to the given module ID. + virtual Module *getModule(unsigned ID) override; + /// \brief Perform layout on the given record. /// /// This routine allows the external AST source to provide an specific Index: lib/Sema/MultiplexExternalSemaSource.cpp =================================================================== --- lib/Sema/MultiplexExternalSemaSource.cpp +++ lib/Sema/MultiplexExternalSemaSource.cpp @@ -164,6 +164,13 @@ Sources[i]->PrintStats(); } +Module *MultiplexExternalSemaSource::getModule(unsigned ID) { + for (size_t i = 0; i < Sources.size(); ++i) + if (auto M = Sources[i]->getModule(ID)) + return M; + return nullptr; +} + bool MultiplexExternalSemaSource::layoutRecordType(const RecordDecl *Record, uint64_t &Size, uint64_t &Alignment,