diff options
Diffstat (limited to 'clang/lib/Frontend/FrontendAction.cpp')
-rw-r--r-- | clang/lib/Frontend/FrontendAction.cpp | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/clang/lib/Frontend/FrontendAction.cpp b/clang/lib/Frontend/FrontendAction.cpp index 8760f5094d4..1c9384218ad 100644 --- a/clang/lib/Frontend/FrontendAction.cpp +++ b/clang/lib/Frontend/FrontendAction.cpp @@ -321,7 +321,7 @@ bool FrontendAction::BeginSourceFile(CompilerInstance &CI, // FIXME: should not overwrite ASTMutationListener when parsing model files? if (!isModelParsingAction()) CI.getASTContext().setASTMutationListener(Consumer->GetASTMutationListener()); - + if (!CI.getPreprocessorOpts().ChainedIncludes.empty()) { // Convert headers to PCH and chain them. IntrusiveRefCntPtr<ExternalSemaSource> source, FinalReader; @@ -383,6 +383,17 @@ bool FrontendAction::BeginSourceFile(CompilerInstance &CI, "doesn't support modules"); } + // If we were asked to load any module files, do so now. Don't make any names + // from those modules visible. + for (const auto &ModuleFile : CI.getFrontendOpts().ModuleFiles) { + // FIXME: Use a better source location here. Perhaps inject something + // into the predefines buffer to represent these module files. + if (!CI.loadModuleFile(ModuleFile, + CI.getSourceManager().getLocForStartOfFile( + CI.getSourceManager().getMainFileID()))) + goto failure; + } + // If there is a layout overrides file, attach an external AST source that // provides the layouts from that file. if (!CI.getFrontendOpts().OverrideRecordLayoutsFile.empty() && |