diff options
author | Ben Langmuir <blangmuir@apple.com> | 2016-02-11 17:04:42 +0000 |
---|---|---|
committer | Ben Langmuir <blangmuir@apple.com> | 2016-02-11 17:04:42 +0000 |
commit | 6d25fdc41b7444e15395f5e8f9961825f1d0a163 (patch) | |
tree | 6d668aafd4320ea590d8c594e8a7e7294a29c7a8 /clang/lib/Serialization/ASTReader.cpp | |
parent | c97efa46f3b3ecfff03cbde04db9703a2886d7e9 (diff) | |
download | bcm5719-llvm-6d25fdc41b7444e15395f5e8f9961825f1d0a163.tar.gz bcm5719-llvm-6d25fdc41b7444e15395f5e8f9961825f1d0a163.zip |
[Modules] Don't infinite recurse on implicit import of circular modules in preamble
Update the Preprocessor's VisibleModuleSet when typo-correction creates
an implicit module import so that we won't accidentally write an invalid
SourceLocation into the preamble AST. This would later lead to infinite
recursion when loading the preamble AST because we use the value in
ImportLocs to prevent visiting a module twice.
rdar://problem/24440990
llvm-svn: 260543
Diffstat (limited to 'clang/lib/Serialization/ASTReader.cpp')
-rw-r--r-- | clang/lib/Serialization/ASTReader.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/clang/lib/Serialization/ASTReader.cpp b/clang/lib/Serialization/ASTReader.cpp index 1c62b4e57b0..b2f59d1fa6c 100644 --- a/clang/lib/Serialization/ASTReader.cpp +++ b/clang/lib/Serialization/ASTReader.cpp @@ -4062,7 +4062,9 @@ void ASTReader::InitializeContext() { if (Module *Imported = getSubmodule(Import.ID)) { makeModuleVisible(Imported, Module::AllVisible, /*ImportLoc=*/Import.ImportLoc); - PP.makeModuleVisible(Imported, Import.ImportLoc); + if (Import.ImportLoc.isValid()) + PP.makeModuleVisible(Imported, Import.ImportLoc); + // FIXME: should we tell Sema to make the module visible too? } } ImportedModules.clear(); |