forked from OSchip/llvm-project
When we are deserializing the lexical decls of a DeclContext from PCH, notify the PCHReader to hold off passing Decls
to the consumer until the DeclContext is fully prepared. Before, due to recursive loading, we could be in a situation where we would try to deserialize the decls of a DeclContext which was already doing that, and bad things would happen. In the specific case I encountered, the lexical decls would form a cycle and we would enter infinite loop territory. llvm-svn: 109857
This commit is contained in:
parent
b24355af87
commit
98d045eb68
|
@ -606,6 +606,9 @@ DeclContext::LoadLexicalDeclsFromExternalStorage() const {
|
|||
ExternalASTSource *Source = getParentASTContext().getExternalSource();
|
||||
assert(hasExternalLexicalStorage() && Source && "No external storage?");
|
||||
|
||||
// Notify that we have a DeclContext that is initializing.
|
||||
ExternalASTSource::Deserializing ADeclContext(Source);
|
||||
|
||||
llvm::SmallVector<Decl*, 64> Decls;
|
||||
if (Source->FindExternalLexicalDecls(this, Decls))
|
||||
return;
|
||||
|
|
Loading…
Reference in New Issue