[modules] Fix a rejects-valid resulting from emitting an inline function
recursively within the emission of another inline function. This ultimately led to us emitting the same inline function definition twice, which we then rejected because we believed we had a mangled name conflict. llvm-svn: 215579
This commit is contained in:
@@ -117,10 +117,14 @@ namespace {
|
||||
}
|
||||
|
||||
void EmitDeferredDecls() {
|
||||
if (DeferredInlineMethodDefinitions.empty())
|
||||
return;
|
||||
|
||||
// Emit any deferred inline method definitions. Note that more deferred
|
||||
// methods may be added during this loop, since ASTConsumer callbacks
|
||||
// can be invoked if AST inspection results in declarations being added.
|
||||
for (unsigned I = 0; I < DeferredInlineMethodDefinitions.size(); ++I)
|
||||
HandlingTopLevelDeclRAII HandlingDecl(*this);
|
||||
for (unsigned I = 0; I != DeferredInlineMethodDefinitions.size(); ++I)
|
||||
Builder->EmitTopLevelDecl(DeferredInlineMethodDefinitions[I]);
|
||||
DeferredInlineMethodDefinitions.clear();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user