]> granicus.if.org Git - clang/commitdiff
[frontend] Make -chain-include work when used with modules.
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>
Fri, 26 Apr 2013 21:33:27 +0000 (21:33 +0000)
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>
Fri, 26 Apr 2013 21:33:27 +0000 (21:33 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180633 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Frontend/ChainedIncludesSource.h
include/clang/Frontend/CompilerInstance.h
lib/Frontend/ChainedIncludesSource.cpp
lib/Frontend/FrontendAction.cpp

index e14580ed69b79fc7466ce0bfa08ed496f48aa58e..aa30460040a5ddab028c4138281eeabacd576bda 100644 (file)
@@ -26,9 +26,9 @@ public:
 
   static ChainedIncludesSource *create(CompilerInstance &CI);
 
-private:
   ExternalSemaSource &getFinalReader() const { return *FinalReader; }
 
+private:
   std::vector<CompilerInstance *> CIs;
   OwningPtr<ExternalSemaSource> FinalReader;
 
index 0d674629fd48d9196225577043e71b814cb90c87..d73a4280187319c9576f9326ab3b3c105c4ffec4 100644 (file)
@@ -427,6 +427,7 @@ public:
   /// {
 
   ASTReader *getModuleManager() const { return ModuleManager; }
+  void setModuleManager(ASTReader *Reader) { ModuleManager = Reader; }
 
   /// }
   /// @name Code Completion
index a17def0b37b700873ca65ea0b21eb2f5bd46217a..cde84caade5db96c6a6fa3b6c3fe2b9904bf433d 100644 (file)
@@ -143,6 +143,7 @@ ChainedIncludesSource *ChainedIncludesSource::create(CompilerInstance &CI) {
         Clang->getASTConsumer().GetASTDeserializationListener()));
       if (!Reader)
         return 0;
+      Clang->setModuleManager(static_cast<ASTReader*>(Reader.get()));
       Clang->getASTContext().setExternalSource(Reader);
     }
     
index 6031ad2b361b637ab5ad142424461c7efbca9dca..ece51a35707d6db785413bd8c63b74e87c2575e8 100644 (file)
@@ -294,6 +294,8 @@ bool FrontendAction::BeginSourceFile(CompilerInstance &CI,
       source.reset(ChainedIncludesSource::create(CI));
       if (!source)
         goto failure;
+      CI.setModuleManager(static_cast<ASTReader*>(
+         &static_cast<ChainedIncludesSource*>(source.get())->getFinalReader()));
       CI.getASTContext().setExternalSource(source);
 
     } else if (!CI.getPreprocessorOpts().ImplicitPCHInclude.empty()) {